Provably-fair verifier: recompute any result yourself
"Provably fair" means you don't have to trust the casino — you can re-derive every result from the seeds. Paste a revealed server seed, your client seed and the nonce, and this tool recomputes the exact HMAC-SHA256 and the resulting roll, right in your browser. It's how you check a Stake-style game wasn't rigged. Free, no signup.
Computed result (HMAC-SHA256, Stake-style)
Message hashed
HMAC-SHA256
First 4 bytes → float [0,1)
Dice roll (0.00–100.00)
Limbo/Crash multiplier (1% edge)
Embed this verifier
Free to use with a link back to EV Lab. Paste this where you want it:
Provably fair proves it's honest — not that it's winnable. See the 1% edge work live, for free, on every bet.
Before betting, the casino shows you the hash of its secret server seed — a commitment it can't change later.
You play with a client seed (often editable) and a nonce that increments each bet.
Each result is HMAC-SHA256(server seed, "clientSeed:nonce"), then the hex is turned into a number.
After you rotate seeds, the casino reveals the server seed. Hash it yourself to confirm it matches the commitment, then paste everything above to recompute each roll.
If your numbers match theirs, the results were fixed in advance and not manipulated mid-game.
Provably fair ≠ no house edge
This is the part operators are happy for you to miss. Provable fairness guarantees the process wasn't rigged — it says nothing about the payouts. A Stake-style original still pays out at ~99% of fair (a 1% house edge), so the game is simultaneously verifiably honest and mathematically a loss over time. "Provably fair" is a trust feature, not a winning strategy. That's the whole reason EV Lab is free and shows the edge live: honesty and a house edge are not opposites.
Worked example — verify it yourself
Take a revealed server seed ev-lab-demo-seed, a client seed player-7, and nonce 3. The result is HMAC-SHA256 of the message "player-7:3" keyed with the server seed:
The first four bytes — 26 1f c3 73 — fold into a uniform float: 0x26/256 + 0x1f/256² + 0xc3/256³ + 0x73/256⁴ = 0.14892217. That maps to a dice roll of 14.89 and a Limbo/Crash multiplier of 1.16× (after the built-in 1% edge). Paste those three inputs into the verifier above and you get the exact same hash and roll — no trust required. Nudge the nonce by one and the outcome changes completely, which is precisely why an operator can’t pick results after committing to its seed.
FAQ
How does provably fair work?
The casino commits to a hashed server seed before play, computes each result as HMAC-SHA256(server seed, client seed:nonce), then reveals the seed afterward so you can recompute and confirm nothing changed.
Does provably fair mean it's not rigged?
It proves results weren't altered after the fact, assuming you also verify the revealed seed matches the earlier hash. It does not remove the built-in house edge.
Why doesn't my number match the casino's?
Usually a different message format (some use nonce:clientSeed or add a round index), a hashed vs unhashed server seed, or a different float-to-result conversion. This tool uses the common Stake-style HMAC + 4-byte float method.
Is Stake provably fair?
Stake-style originals use this exact HMAC-SHA256 commit-and-reveal scheme, so each result is independently verifiable with the tool above. Verifiable does not mean beatable — the ~1% house edge is still baked into the payouts.
What are the server seed, client seed and nonce?
The server seed is the casino’s secret (shown first only as a hash); the client seed is your input, often editable; the nonce is a counter that increments each bet so every round hashes to a different result.
Can a provably-fair casino still cheat you?
Not on an individual result you actually verify. The real risks are elsewhere: the house edge in the payouts, never revealing the server seed, or swapping the seed without telling you. Always confirm the revealed server seed hashes back to the commitment you saw before betting.