What Provably Fair Actually Means
Here's the problem provably fair solves: in normal online gambling, you have no way to know if the site rigged the result after you bet. You just have to trust them. That's fine for licensed casinos with audits and legal accountability — but most CS2 gambling sites aren't in that tier.
Provably fair fixes this with cryptography. The site generates the game outcome before you bet, locks it using a SHA-256 hash (a mathematical fingerprint), and publishes that fingerprint. After the round, they reveal the actual value. You can verify the fingerprint matches — which proves they didn't swap the result after seeing your bet.
Think of it like this: the site writes the result on a piece of paper, seals it in an envelope, and hands you the envelope before you play. After the round they open the envelope. You can see the result was written before you played. That's provably fair — but with math instead of envelopes.
The hash published in Step 2 locks the site in — they cannot change the server seed after seeing your bet
The Three Parts: Server Seed, Client Seed, Nonce
Every provably fair system uses the same three ingredients. Here's what each one actually does:
Server Seed
A long random string generated by the gambling site. Example:
The site keeps this secret during your session. Before you play, they publish a SHA-256 hash of it — a fingerprint that proves the seed exists without revealing it. When your session ends, they show you the actual seed. You can then hash it yourself and check it matches what they published before.
Client Seed
A string you control. Your browser generates one automatically, but you can — and should — change it yourself in the site's fairness settings. Why does this matter? Because the site doesn't know your client seed when they generate their server seed. Neither side can fully predict or control the combined result. Example:
💡 Change your client seed before you play. The default browser-generated seed is fine mathematically, but setting your own adds a layer of personal control. Any site worth using lets you change it in Settings → Fairness. If you can't find that option, that's a red flag.
Nonce
Just a counter. Starts at 1, increases by 1 with every bet. Without a nonce, every bet with the same server and client seed would give the same result — which would be useless. The nonce ensures every round is unique even when seeds don't change.
How It Works — Step by Step
When you place a bet, the site combines all three values using HMAC-SHA256 or HMAC-SHA512 (depending on the site) to produce a hash, then converts part of that hash into a number that determines the game outcome.
All three values are combined — neither the site nor the player controls the result alone
How to Verify a Result Yourself — No Coding Required
Here's the exact process on most CS2 gambling sites. I'll use Duelbits as the example but the steps are almost identical on CSGOEmpire, CSGORoll, and CSGO500.
Before you play — note the hashed server seed
In the game window, click the shield icon or "Fairness" button. You'll see a long string labelled "Hashed Server Seed" — this is the SHA-256 fingerprint of the site's locked-in seed. Copy it and save it somewhere. This is your proof that the result was set before you bet.
Optionally — change your client seed
In the same Fairness panel, you'll see your Client Seed. The site assigned you one automatically. You can type anything in here — "mybinrollseed", your name, whatever. Hit save. This regenerates the seed pair and proves you had input into the result.
Play your rounds — note the nonce
Each bet increments the nonce by 1. You can see the current nonce in the Fairness panel. If you want to verify a specific round, note which nonce number it was. Most sites show nonce numbers in your bet history.
Rotate your seeds to reveal the server seed
When you're ready to verify, go to Settings → Rotate Seeds (or "Change Seed Pair" depending on the site). This ends your current session and reveals the actual server seed that was hidden. Copy this revealed server seed.
Provably fair verification panel — server seed, public seed and nonce are all visible. This is what legitimate sites show you.
Verify — two options
Option A (easiest): Paste the revealed server seed into the site's own verification tool (usually in the Fairness section). It recalculates the results for you.
Option B (independent): Go to an independent SHA-256 calculator online. Hash the revealed server seed. Compare the output to the hashed server seed you saved in Step 1. If they match — the site did not tamper with the seed.
Independent SHA-256 calculator — paste the revealed server seed here and compare the output to the hash published before your session
CSGORoll's provably fair page — every game has its own verification system. This is the standard all legitimate CS2 gambling sites follow.
✅ The most important check: Does the SHA-256 hash of the revealed server seed match the hash that was published before you played? If yes — you have mathematical proof the result wasn't changed. That's it. No more complex than copy-paste and compare.
What the verification code looks like (for the curious)
If you want to verify independently without any tools, here's the basic calculation most sites use:
combined = serverSeed + "-" + clientSeed + "-" + nonce
// Generate hash
hash = HMAC_SHA256(key: serverSeed, data: clientSeed + "-" + nonce)
// Take first 8 characters of hash, convert to number
result_num = hexToDecimal(hash.substring(0, 8)) % maxValue
// Map to game outcome (e.g. roulette: 0-6 = red, 7-13 = black, 14 = green)
outcome = mapToGame(result_num)
You don't need to run this yourself — every legitimate site has a built-in tool that does this for you. But seeing the code makes it clear: the result is math, not magic.
Red Flags — When Provably Fair Is Fake
Not every site that claims "provably fair" actually is. Here's what we check:
❌ Fake or broken provably fair
- No way to change your client seed
- Hash not shown before the round starts
- Verification tool only on their own site — no way to check independently
- Results don't match when you verify with an external tool
- Server seed "unavailable" after the round
- Nonce doesn't increment correctly
✅ Legitimate provably fair
- Hashed server seed visible before every round
- Client seed changeable at any time
- Nonce clearly shown and incrementing
- Server seed revealed when you rotate seeds
- Independent verification possible (SHA-256 tool)
- Full bet history with seeds and nonces accessible
⚠️ We tested this on all recommended sites. Duelbits, CSGOEmpire, CSGO500, CSGORoll, and Clash.gg all passed — hash was visible before rounds, seeds were revealed correctly, and results matched when we verified with an external SHA-256 tool. Any site that fails these checks gets removed from our recommended list.
Provably Fair vs Licensed — Not the Same Thing
This is the most common misconception in CS2 gambling. Players assume that because a site is "provably fair" it's somehow safe or regulated. It's not.
Provably fair = the game result wasn't rigged. That's all it proves.
It does not mean:
- The site holds a gambling licence
- Your funds are protected if the site goes under
- You have any legal recourse if they refuse a withdrawal
- The site won't disappear tomorrow with your balance
You need both. Check provably fair (game fairness) AND a Curaçao or MGA gambling licence (legal accountability). Every site on our roulette sites list has both. Read more about legal status and licences in our CS2 gambling legal guide.
🎁 Play on verified provably fair sites
Every site we recommend has been verified — provably fair system tested, licence confirmed, withdrawals tested personally. Use code BINROLL for exclusive bonuses.
FAQ
⚠️ Gamble Responsibly
Provably fair does not change the house edge — the site still has a mathematical advantage on every bet. Only gamble what you can afford to lose. Visit BeGambleAware for free support. 18+ only.