How Provably Fair Works: A Complete Guide for Stake Players
Published 2026-04-22 · Tags: guides, verifier, fundamentals
The cryptographic commit-reveal system that makes online casino cheating impossible — explained in plain English.
Every time you place a bet on a Stake Original, the outcome is decided by numbers the casino cannot manipulate after you've clicked — not because you trust them, but because the math itself proves it. That's what "provably fair" means. Strongest guarantee any online casino offers. Standard on Stake since day one.
This guide walks through exactly how the system works, why it's trustworthy, and how to verify any result yourself in 60 seconds using our free Stake Verifier.
Before we start: I've personally audited thousands of Dice, Limbo, and Mines outcomes for friends who were convinced they'd been cheated. Every single computed outcome matched what Stake paid. Zero mismatches, ever. The verifier is free, takes 60 seconds, and is the fastest way to move past "was I rigged?" after a bad session. The code exists to be used, not admired.
The core idea in one sentence
Stake commits to the random numbers before you bet, and reveals them after, the math is built so they can't change their answer once they've committed.
That's it. The rest is implementation detail. But the implementation detail is where the proof lives, so let's go there.
The three ingredients
Every provably fair bet on Stake is built from three values:
- Server seed — a secret random string Stake generates for you. They commit to it by showing you the SHA-256 hash of it before you bet. The hash looks like this:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855... - Client seed, a random string your browser generates. You can change it at any time.
- Nonce, a simple counter that increments by 1 with every bet (0, 1, 2, 3,...).
When you place a bet, Stake takes these three values and feeds them through HMAC-SHA256, a deterministic hashing function. The output is a 256-bit number, which gets sliced up and mapped to your result — a dice roll, a crash multiplier, a mine pattern, whatever the game needs.
Here's the critical property: HMAC-SHA256 is one-way. Given the hash, you cannot reverse-engineer the inputs. Given the inputs, the output is 100% deterministic, same inputs always produce the same output.
Why the casino can't cheat
This is the elegant part.
- They can't change the server seed after you bet. They already committed to it (gave you the hash). If they changed it, the final hash wouldn't match the one they showed you originally.
- They can't rig your client seed. You generated it in your browser.
- They can't skip nonces. They go 0, 1, 2, 3, anyone checking can count.
- They can't change the math. HMAC-SHA256 is public. Every programmer in the world uses it.
The only thing Stake controls is the server seed before it's committed. Once they've shown you the hash, they're locked in. If the final outcome doesn't match what HMAC-SHA256 spits out for that specific server seed + your client seed + nonce, it's caught immediately.
The full life cycle of a bet
- You open a game. Stake generates a fresh server seed, hashes it, and shows you the hash (sometimes called the "hashed server seed" or "server seed hash").
- Your browser picks a client seed. You can see it and change it freely.
- You bet. Your nonce goes from 0 to 1. Stake computes
HMAC-SHA256(server_seed, client_seed:nonce)and uses the result to decide your outcome. - You bet again. Nonce goes to 2. Same process.
- At any point you can rotate the server seed, which forces Stake to reveal the old one, generate a fresh one, and show you a new hash.
- Once revealed, you can hash the old server seed yourself and confirm it matches the hash they originally showed you. If it does → they didn't swap it mid-session. If it doesn't → you've caught a cheat.
- Now that you have the revealed server seed, you can replay every bet from that session: feed the seed + your client seed + nonce into HMAC-SHA256, apply the game's math, and compare to what Stake paid out.
What can go wrong
Two things, realistically:
- The server seed they reveal doesn't match the hash. This would prove Stake swapped the seed mid-session. In 10+ years of provably fair operation across all major crypto casinos, this has never been caught. It would be a career-ending scandal for the operator.
- The outcome they paid you doesn't match what HMAC-SHA256 says. This can happen to buggy casino implementations, but not to Stake — it would mean the math was wrong, not rigged. Still provable.
What it DOESN'T protect against
Important caveat: provably fair doesn't prevent the house edge. The math is honest, but the math is tuned so the house wins ~1–4% of wagered amount long-term. This is baked into the payout structure, not the random numbers.
Provably fair is about "did the random number generator cheat?", not "is this game profitable for me?". For the latter, you need statistics over your entire bet history, which is what our P&L Calculator is for.
Verify it yourself in 60 seconds
- On Stake, rotate your server seed, this reveals the old one.
- Copy the revealed server seed, your client seed, and any nonce you want to check.
- Paste them into our Stake Verifier — we do the HMAC-SHA256 math locally in your browser (nothing sent to our server) and show what the outcome should have been for that bet.
- Compare to what Stake actually paid. They should match perfectly.
We support all the major Stake games: dice, limbo, crash, mines, plinko, keno, wheel, and more. The verifier runs the exact same algorithm Stake publishes, so if there's ever a mismatch, it's on them.
The bottom line
Provably fair isn't magic and it isn't "trust us", it's math that makes the casino commit to their answers before you play, then proves it after. On Stake, this has been running cleanly for years. Any time you feel like checking, it's a 60-second job.
Want to actually try it? Open the Stake Verifier →