On this page (7 sections)
Provably fair is a verification method built on a commit-reveal scheme: an operator commits to a random server seed by publishing its cryptographic hash before you bet, then reveals the seed afterward so you can hash it yourself and confirm nothing changed.
What 'provably fair' actually means
The mechanism has three moving parts. A server seed, generated by the operator and kept secret during play. A client seed, which you control and can usually rotate. And a nonce, a counter that increases with each bet so the same two seeds never produce the same result twice in a row.
Before you place a bet, the operator shows you the server seed's hash — not the seed itself, since revealing it early would let you predict results. That published hash is the commitment. When you rotate to a new server seed, or close the session, the old server seed is revealed in full. At that point, and only at that point, you can check it.
Why this actually works as evidence
SHA-256 is a one-way function: it is computationally infeasible to find a different seed that produces the same hash. If the revealed seed hashes to the commitment you were shown before betting, the operator could not have swapped the seed after seeing your bet — the commitment would no longer match.
SHA-256 seed verifier
Paste a server seed the operator has revealed to you, and the commitment hash you were shown before the round. This tool hashes the seed locally in your browser and tells you whether it matches.
Nothing you paste here leaves your browser.
HMAC-SHA256 outcome generator
Enter a server seed, a client seed and a nonce, and this tool computes the HMAC-SHA256 digest that a typical provably fair game uses to generate a result — then converts it into a 0–1 float and a 0.00–99.99 dice-style roll, using the standard method explained below.
Message format used: client seed + ":" + nonce, HMAC-signed with the server seed as key.
How a hex digest becomes a game result
The HMAC-SHA256 digest is 64 hex characters — 256 bits of effectively random-looking output. Turning that into a usable game result is a documented, widely used method, not a secret formula:
- Take the first 13 hex characters of the digest (52 bits).
- Convert that hex chunk to an integer.
- Divide by 2⁵² (the largest value 52 bits can represent) to get a float between 0 and 1, using the full precision a JavaScript number can hold exactly.
- For a 0.00–99.99 dice-style roll: multiply the float by 10,000, round down, then divide by 100.
This tool implements exactly that sequence, so you can independently confirm any game that documents the same method. Some operators use additional bytes from the same digest to generate several results from one hash, or chain digests together for high-outcome-count games like card shuffles — the core hashing and commitment principle is identical either way.
What provably fair does NOT prove
Read this section before you trust a green checkmark
- It does not prove the house edge or payout table is fair — only that the outcome was not altered after your bet. A verified 8% house edge is still an 8% house edge.
- It does not prove the operator is licensed, solvent, or will pay out — verification and business trustworthiness are unrelated.
- It does not prove the operator's game client actually uses the seeds it claims to, unless the algorithm is independently documented or open-sourced and you can compare it directly.
- It does not protect you if you never rotate your client seed away from a default value — verification is only as good as your own participation in generating the seed.
- It does not prove fairness for game types where the mapping from random numbers to visual results (card order, reel stops) has not been published alongside the seeds.
How to verify a round on your own account
Six steps, roughly two minutes once you know where the fairness panel lives
- Before you play, note the server seed commitment hash shown in your account's provably fair or fairness panel.
Where people trip up: This is usually under account settings, not on the game screen itself — look for a 'fairness' or 'provably fair' menu item.
- Set your own client seed rather than leaving the default in place.
Where people trip up: A default client seed you never chose is one less thing you have independently verified about the round.
- Play as normal. The nonce increases automatically with each bet.
Where people trip up: You do not need to track the nonce yourself for basic verification — the account panel records it.
- Rotate to a new server seed when you are done, which reveals the old one in full.
Where people trip up: Some accounts reveal automatically after a fixed number of bets; others require a manual rotation — check your account's fairness panel for which applies.
- Paste the revealed seed and the commitment hash into the SHA-256 tool above.
Where people trip up: A match confirms the seed was fixed before your bets. A mismatch means stop and contact support before trusting further results from that account.
- Optionally, recompute a specific bet's result with the HMAC tool using the revealed server seed, your client seed, and that bet's nonce.
Where people trip up: This step confirms not just that the seed was honest, but that a specific result followed from it using the documented method.
Licence, geo-restrictions and playing safely
Licensing. Verifying fairness is a technical check, not a reason to increase stakes. A confirmed match changes nothing about your bankroll limits.
Your side of it. Crypto casinos settle fast, which is exactly what makes them easy to overplay. Before your first deposit at these operators, set a deposit cap and a session timer in the account settings — not in your head.
- Deposit limits and self-exclusion tools live in account settings, not support chat
- A losing session is not a signal to raise the stake — it is a signal to stop
- Bonus turnover targets are not a reason to keep playing past your limit
- Free, confidential help: BeGambleAware and Gambling Therapy
Frequently asked questions
What does 'provably fair' actually prove?
That a specific round's outcome was generated before you placed your bet and was not altered afterward. It does this by having the operator commit to a server seed (as a hash) before play, then reveal the seed later so you can hash it yourself and check the two match.
Does provably fair prove the game has a fair house edge?
No. It proves the outcome was not changed after the fact. It says nothing about whether the payout table or house edge itself is reasonable — that is a separate question, covered in our house edge guide.
Does provably fair prove the operator is licensed or trustworthy with withdrawals?
No. Verification and licensing are unrelated. A game can be perfectly verifiable and the operator can still have unrelated problems with payout speed, KYC or terms. Check our brand reviews for that separately from this tool.
What is a client seed, and why does rotating it matter?
The client seed is a value you control, combined with the server seed to produce each result. If you never change it from a default, you are trusting the operator's default input more than you need to. Rotating it yourself removes that trust requirement.
Why does this tool ask me to paste a revealed server seed?
Because verification only works after reveal. Before a round, or before a seed is retired, you only have its commitment hash — you cannot verify anything until the operator publishes the actual seed, typically when you rotate to a new one.
Is the hex-to-float conversion this tool uses specific to one casino?
No. It is a standard method used widely across the industry for turning a cryptographic digest into a usable game result: take a slice of the hex output, convert it to an integer, and divide by the maximum value that slice could represent.
Does this tool send my seeds anywhere?
No. Every calculation runs locally in your browser using the Web Crypto API. Nothing you paste into either tool is transmitted, stored or logged.
What should I do if a hash does not match?
Treat the round as unverified and stop trusting that seed. Screenshot the mismatch, contact the operator's support, and do not assume a mismatch is a formatting error without checking for whitespace or case differences first.