What does provably fair mean?
Provably fair is a way for a site to prove it did not change a result after you placed your bet. The site picks a secret server seed before you play and shows you its hash. You add your own client seed. Each bet also has a counter called a nonce.
After the seed is revealed, you can run the same math yourself and get the same roll. If the math matches, the site could not have picked the result after seeing your bet. This idea is called a commitment scheme: you commit to a value while keeping it hidden, and reveal it later. Source
For the full story, read how provably fair works.
How does this verifier work?
You paste four things: the revealed server seed, the hash you were shown before you played, your client seed and the nonce. Then you pick a method. The tool does the math in your browser and shows two results.
The first is the hash check. It runs SHA-256 on the server seed and compares it with the hash you pasted. A green "Hash matches" means the seed is the one the site committed to. A red "Hash does not match" means something is different.
The second is the roll. It uses the method you picked to turn the seeds and nonce into a number. You can show it from 0 to 1, from 0 to 100 or from 0 to 10,000.
Nothing is sent to our server. The hashes run with the Web Crypto API built into your browser. Source
What methods does the verifier support?
It supports three common patterns. They are generic methods, not the formula of any named site.
| Method | What it hashes | How the roll is made |
|---|---|---|
| HMAC-SHA256 | Key: server seed. Message: clientSeed:nonce | First 8 hex characters, divided by 4,294,967,296 |
| SHA-256 of joined seeds | serverSeed-clientSeed-nonce | First 8 hex characters, divided by 4,294,967,296 |
| Server seed hash check | The server seed alone | No roll, only the comparison |
HMAC is a standard way to mix a secret key into a hash. It is defined in RFC 2104. Source SHA-256 is defined in the Secure Hash Standard, FIPS 180-4. Source
Why do sites use different formulas?
Every site writes its own code. One might join the seeds with a colon, another with a dash. One might read 8 hex characters, another 13. One might turn the number into a roll from 0 to 100, and another into a card, a crash point or a slot on a wheel.
So if your roll does not match what the site showed, it does not always mean cheating. First check the site's own fairness page for its exact steps. The hash check is the one part that is nearly universal: if the revealed seed does not hash to what you were shown, that is a real red flag.
We do not list the formula of specific sites here. We would only add one after opening that site's own fairness page and citing it.
How is the roll calculated?
For the HMAC-SHA256 method, the steps are:
- Compute
HMAC_SHA256(key = serverSeed, message = clientSeed + ":" + nonce). The result is 64 hex characters. - Take the first 8 hex characters. Read them as a number from 0 to 4,294,967,295.
- Divide by 4,294,967,296 (that is
0x100000000, or 2 to the power of 32). The result is a roll from 0 up to, but not including, 1.
The 0 to 100 scale is floor(roll × 10,000) / 100, which gives 0.00 to 99.99. The 0 to 10,000 scale is floor(roll × 10,000), which gives 0 to 9,999.
All seeds are read as plain text, exactly as you type them. A seed that looks like hex is not turned into bytes first.
Worked example: HMAC-SHA256
These are the demo seeds behind the Try an example button. We made them up to show the steps, and they belong to no site. The tool itself starts empty, ready for your own seeds.
| Input | Value |
|---|---|
| Server seed | demo-server-seed-7f3a91 |
| Client seed | demo-client-seed |
| Nonce | 1 |
The HMAC-SHA256 result starts with d3b75b93. As a number, that is 3,552,009,107. Divided by 4,294,967,296, the roll is about 0.82701657.
On the 0 to 100 scale that is 82.70. On the 0 to 10,000 scale it is 8,270. These are the numbers the tool shows after you press Try an example.
Worked example: the hash check
The SHA-256 hash of demo-server-seed-7f3a91 is:
471d256e10359e79805305031556499334fb1acd044b4aebffa2061e7fad0773
The example button puts it in the hash field for you, and the tool shows "Hash matches." Now change one letter of the server seed. The hash changes completely and the tool shows "Hash does not match." That is what makes the check useful: a site cannot find a second seed with the same hash.
If you switch the method to "SHA-256 of joined seeds," the same inputs give a hash that starts with a73efc56. The roll is about 0.65330484, or 65.33 on the 0 to 100 scale.
What should you check first?
Start with the hash. Copy the server seed hash before you play, and keep it. After the site reveals the seed (often when you change seeds), paste both here. If the hash matches, the seed was locked in before your bets.
Then check a roll or two with the site's own formula. If the site uses one of the methods above, you can do that here. If not, the hash check still tells you the most important part.
Never paste a server seed that is still active. It is only safe to share once the site has revealed it and moved you to a new one.
What provably fair does not tell you
Provably fair proves a roll was not changed. It does not tell you the odds were good. A game can be perfectly provable and still keep a large share of every bet. To see what a house edge costs you, use the house edge calculator, or read house edge explained.
It also does not apply to opening real cases in CS2. Those use the odds on our CS2 drop rates page.
When should you use this tool?
Use it after a big win or a loss that felt wrong, to confirm the result came from the seeds. Use it once on any new site, to see if its fairness system really works the way it says.
This tool only checks math. It does not link to or recommend any gambling site.