HOW TO VERIFY PROVABLY FAIR DICE
Verify Your Last Dice Roll Right Now
Grab your server seed, client seed, and nonce from your casino's fairness page and paste them into our verifier. It reproduces the exact roll calculation in your browser — completely free, no sign-up required.
Open Provably Fair VerifierThe Three Seeds and What Dice Verification Proves
Every provably fair Dice bet is built from three inputs. The server seed is a random string the casino generates and keeps secret during play — but it commits to it in advance by publishing its SHA-256 hash, like a sealed envelope. The client seed is yours; you can set it to any value, which guarantees the casino could not have pre-selected a roll. The nonce is a counter that increases by one with every bet on that seed pair.
For Dice specifically, verification proves one thing precisely: the roll was fixed before you placed your bet, and was not nudged across your win/loss threshold afterwards. Because the server seed hash was published before the round and you chose the client seed, neither side can change the number once the bet is locked. After you rotate (retire) the seed pair, the casino reveals the unhashed server seed and you can recompute every roll. For the general mechanics across all games, see our complete guide to verifying provably fair results.
How the Hash Becomes a Roll: The Real Formula
Dice on Stake — the operator that popularised this method and publishes the algorithm openly — converts an HMAC-SHA256 hash into a roll with a short, exact chain. The same logic is implemented in the widely used open-source reference verifier lucasholder/fair, which is explicitly built to match Stake's output. Here are the steps:
- 1Build the HMAC. The server seed is the HMAC key; the message is the string
clientSeed:nonce:cursor. ComputingHMAC_SHA256(serverSeed, "clientSeed:nonce:cursor")produces a 32-byte hash (64 hex characters). For a single dice roll the cursor is 0. - 2Take 4 bytes, make a float. The first 4 bytes are turned into a decimal between 0 and 1 with the formula
byte₀/256¹ + byte₁/256² + byte₂/256³ + byte₃/256⁴. This spreads the value evenly across the interval [0, 1). - 3Scale to the roll range. Multiply the float by 10001 and round down, then divide by 100:
roll = floor(float × 10001) / 100. Stake's dice covers the inclusive range 0.00–100.00, which is exactly 10,001 distinct two-decimal outcomes — that is why the multiplier is 10001, not 10000.
That is the whole conversion. Crucially, the house edge is not in this number at all — the roll is a pure, uniform value. The edge is applied separately, through the payout multiplier the casino offers for your chosen win chance. So a perfectly fair roll and a long-run house advantage coexist, which is exactly what verification should confirm.
Skip the Maths — Let the Tool Do It
You do not have to compute HMACs by hand. Paste your seeds and nonce into our verifier and it reproduces the roll formula above instantly, in your browser, with nothing sent to a server.
Launch the Verifier ToolWorked Example You Can Reproduce
Let us derive a real roll from real inputs. These are genuine values computed with HMAC-SHA256 — paste them into any HMAC tool (or our verifier) and you will get the identical hash.
| Input | Value |
|---|---|
| Server seed | serverSeed123 |
| Client seed | clientSeed456 |
| Nonce | 1 |
| Cursor | 0 |
- 1Compute the HMAC.
HMAC_SHA256("serverSeed123", "clientSeed456:1:0")=09a4e5c0d95150fed64b44b5029cec252ffeabc4de60292df9e70f437a1de445 - 2Read the first 4 bytes. The leading hex pairs are
09 a4 e5 c0, i.e. the decimal bytes 9, 164, 229, 192. - 2Convert to a float. 9÷256 + 164÷256² + 229÷256³ + 192÷256⁴ = 0.03767239.
- 3Scale to a roll. 0.03767239 × 10001 = 376.76, floor = 376, ÷ 100 = 3.76.
Result: these seeds at nonce 1 roll 3.76 — every single time, on any machine. If you had bet "roll over 50" you would lose; if you had bet "roll under 50" you would win — and the casino could not have changed which side of the line this number fell on. That reproducibility is the entire point.
Where to Find Your Dice Seeds
Before you can verify, you need the unhashed server seed, which the casino only reveals once you rotate (retire) the seed pair. Here is where to look on the main provably fair platforms:
| Casino | How to Find Your Seeds |
|---|---|
| Stake | Profile icon → Settings → Fairness. Note your active client seed and the next server seed hash, then click Rotate / New Seed to reveal the previous unhashed server seed. The Dice bet detail shows the nonce. |
| Roobet | Open your Game History, click the Dice bet, then Fairness / Reveal Seeds. The server seed is shown after the pair is rotated, alongside the client seed and nonce. |
| BC.Game | Avatar → Profile → Fairness. View the current seed pair, then rotate to unhash the old server seed. Open Game History for the per-bet nonce. |
What This Proves — and What It Does Not
Provably fair verification is powerful, but it is precise about what it guarantees. Be clear on both sides:
- ✓It proves the roll was not altered after your bet. The number was committed by the server seed hash before you bet over or under, so the casino could not move it across your threshold.
- ✓It proves the casino used the seeds it claimed. A matching roll confirms the published server seed really does hash to the committed value and produces the number you saw.
- ✗It does NOT remove the house edge. The edge lives in the payout multiplier, not the roll. A fair, uniform number and a long-term mathematical edge for the casino coexist — verification confirms fairness, not profitability.
- ✗It does NOT guarantee you get paid. Provably fair maths says nothing about whether a casino will process your withdrawal or treat you fairly elsewhere. For that, choose a licensed, reputable operator — see our best provably fair casinos.
Key Takeaways
Provably fair Dice derives the roll from HMAC-SHA256(serverSeed, clientSeed:nonce:cursor): the first 4 bytes become a float, then roll = floor(float × 10001) / 100 gives a uniform 0.00–100.00 result. The house edge sits in the payout, not the number. Our worked example (serverSeed123 / clientSeed456 / nonce 1) rolls 3.76, reproducibly. Check your own rolls with our Provably Fair Verifier in seconds.
Frequently Asked Questions
floor(float × 10001) divided by 100. This produces an evenly distributed result from 0.00 to 100.00 across the 10,001 possible outcomes, and the same seeds always reproduce the same roll. You can confirm this with our verifier tool.