18+ only. Games that claim to be provably fair are still gambling with real money. Play safely

BASICS

Server seed, client seed and nonce, explained with real hashes

The three inputs behind every provably fair result: what each one does, who controls it, when it's revealed, and how changing one changes the outcome — with computed examples.

Every provably fair result is computed from three inputs: a server seed the site picks and keeps secret, a client seed you can set, and a nonce that counts your bets. The server seed is locked in with a published hash before you play, the client seed makes sure the site can't tailor that secret to you, and the nonce makes each bet in a session different. Change any one of them and the result changes completely.

Below, each input gets its own section, then a table shows them working together with real HMAC-SHA256 output. All seeds are examples made up for this guide; every hash was computed in Python and can be reproduced on our verifier.

The server seed: the site's secret

The server seed is a random string generated by the site. While it's active, you never see it. You see only its SHA-256 hash, called the commitment (sometimes "hashed server seed").

text
server seed (secret while active):  9f2c4e1a7b3d8e6f0a5c2b9d4e7f1a3c
commitment shown to you:            a5e39de9361cb47dd6ccdf84bb0cbeff1e402575f217b91bb2e560cfe1ac582d

Why hide it? Because anyone holding the server seed, client seed and nonce can compute the result. If you saw the server seed in advance, you'd know every upcoming roll.

Why publish the hash? Because it pins the seed down. After you rotate seeds, the site reveals the old server seed; you hash it and compare. A match means it's the same seed that was active during your bets. This is the commitment step explained in what provably fair means.

The client seed: your contribution

The client seed is a string on your side. Sites usually generate one for you, but a well-built system lets you replace it with anything you like before you play.

It exists for one reason: without it, the site could choose a server seed after testing which ones produce outcomes it likes. Because your client seed goes into the formula and the server seed was committed before you set yours, the site can't pre-select a seed against inputs it didn't know.

Setting it yourself is the strongest version of this protection. A client seed the site picked and you never changed still works mechanically, but you're relying on the site not having planned around it.

The nonce: the bet counter

The nonce is a number that starts at 0 (some systems start at 1) and goes up by one with every bet made on the same seed pair. Without it, every bet with the same two seeds would produce the identical result.

Your bet history should show nonces in order with no gaps or repeats. A gap means a result you weren't shown; a repeat means a result was reused.

Who controls what, and when you see it

InputSet byVisible during playRevealedPurpose
Server seedSiteNo — only its hashAfter you rotate seedsUnpredictable randomness
Server seed hashSite (derived)Yes, before your first betAlready publicLocks the server seed in
Client seedYou (or default)YesAlready publicStops tailored server seeds
NonceCounterYes, per betAlready publicMakes each bet unique

All three together: a computed table

Using the common method described in verify a roll step by step: message = client_seed:nonce, HMAC-SHA256 keyed with the server seed, first 8 hex characters turned into a number and scaled to 0.00–99.99.

Server seed for all rows: 9f2c4e1a7b3d8e6f0a5c2b9d4e7f1a3c.

Client seedNonceHMAC-SHA256 (first 16 hex)First 8 hex → integerRoll
lab-reader-010c6b1e6abfb75912f3,333,547,69177.61
lab-reader-0112efadd180c35153b788,192,53618.35
lab-reader-012e0508dbe0442736f3,763,375,55087.62
lab-reader-01394bc42e1b5718fb32,495,365,85758.09
lab-reader-0143cbe05a04a5e73b21,019,086,24023.72
lab-reader-020768a39e2ee834ea71,988,770,27446.30
lab-reader-021b2129c378447f5862,987,564,08769.55
lab-reader-02287716e397868a7612,272,357,94552.90

Three things to notice:

  • Each nonce gives an unrelated result. 77.61, then 18.35, then 87.62. There's no trend to read into.
  • Changing one character of the client seed reshuffles everything. lab-reader-01 and lab-reader-02 produce completely different sequences from the same server seed.
  • The results are fully determined. Anyone with these three inputs gets exactly these numbers. That determinism is what makes checking possible.

Changing the server seed has the same effect. With a different example seed, 4b8e0d2f6a1c9e3b7d5f0a2c8e4b6d1f, client seed lab-reader-01 and nonce 0 give 5a2c10c6…, which scales to 35.22.

Seed rotation: how the reveal works

Most systems keep a seed pair active across many bets. When you choose to rotate (often a "change seed" button):

  1. The current server seed is revealed so you can verify past bets.
  2. A new server seed is generated and its hash is shown.
  3. You can set a new client seed.
  4. The nonce resets to its starting value.

You can only verify bets made with a server seed that has been revealed. If a site never lets you rotate, or rotates without ever revealing old seeds, you can't check anything.

A practical checklist

  • Before playing, copy the server seed hash somewhere outside the site.
  • Set your own client seed. Any string you choose works; it doesn't need to be secret.
  • Keep a note of which nonces you want to check.
  • After the session, rotate, then hash the revealed seed and compare it with your saved copy.
  • Recompute a few results with the site's documented formula or our verifier.
  • If the hash doesn't match, nonces are missing, or the formula isn't documented, stop and treat it as a red flag.

Common misunderstandings

"A lucky client seed improves my odds." It can't. Every client seed produces a different but equally random sequence. You can't know in advance which seed leads to what without the server seed.

"I can predict the next roll from past ones." No. Without the active server seed, upcoming HMAC outputs are unpredictable, and past results tell you nothing about the next nonce.

"The hash proves the seed was random." It proves the seed was fixed. How it was generated is outside what the commitment can show.

Knowing these three inputs gives you everything you need to check a result. It doesn't change the odds of any game, and checking a result is not a reason to keep playing.

FAQ

Why can't I see the server seed before I play?

If you could, you could compute every upcoming result in advance. You see its SHA-256 hash instead, which locks the seed in without revealing it. The seed is shown after you rotate to a new one.

Does changing my client seed improve my chances?

No. It changes which results you get, not the odds of any outcome. Its purpose is to make sure the site couldn't have chosen a server seed with your inputs in mind.

What happens if the nonce skips or repeats?

Repeating a nonce with the same seeds would repeat a result exactly, and skipping one hides a result. Either is worth querying with the site; your bet history should show consecutive nonces.

When should I rotate my seeds?

Whenever you want to verify past bets, because rotating is what reveals the old server seed. Many people rotate after a session and check a sample.

18+. Games that use provably fair systems are still gambling. Seeds and examples on this page are made up for explanation; a valid proof is not a promise of any result. Set a limit before you play. Responsible gambling