Provably fair guide
Server seed vs client seed: how provably fair seeds work
A server seed is a secret random value the site picks and commits to by publishing its hash. A client seed is a value the player supplies, often from a client seed generator, that is mixed into the result so the site cannot fully control it. A nonce counts bets. In shared PvP games, one server seed committed before players join does the same job.
9 min readBy the PVPspinArena team · Updated
Part of our Provably fair series. New to the topic? Start with Provably fair casino guide: how to check every result.
The three ingredients: server seed, client seed, nonce
Most provably fair systems are built from the same three ingredients. Understanding each one makes any site's fairness page much easier to read.
Server seed
The server seed is a long random value generated by the site. It stays secret until the game or seed period is over. Before any bet, the site publishes the SHA-256 hash of the server seed. That hash is a commitment: it proves the seed exists and will not change, without revealing what it is. Our HMAC-SHA256 guide explains why hashing works for this.
Client seed
The client seed is a value the player controls. Many sites generate one automatically in your browser and let you replace it with any text you like. It is mixed into the calculation for every result, so even if the site knew its own seed in advance, it could not know the final outcome without also knowing yours.
Nonce
The nonce is a simple counter: 0 for your first bet with a seed pair, 1 for the second, and so on. Without it, the same server seed and client seed would give the same result every time. With it, every bet produces a fresh, independent outcome.
Together, the recipe usually looks like this: result = HMAC-SHA256(server seed, client seed + ":" + nonce), then mapped to a game outcome.
What is a client seed generator?
A client seed generator is simply a tool that creates a random string for you to use as your client seed. Most provably fair sites include one on their fairness or settings page, and there are standalone versions online.
How they work
A good generator uses your browser's cryptographic random number generator, the same one used for security keys, to produce a string such as a 32-character hex value. Some let you choose the length or format.
Do you need a special generator?
No. The client seed does not need to be secret or even very random. Its job is to be something the site could not have predicted when it committed to its server seed. You could type your own words, a date or a random string from any tool. What matters is that you set it, or change it, after you have seen the server seed hash.
When to change your client seed
- When you first start playing, replace the default with your own value.
- After you rotate to a new server seed, set a new client seed as well.
- Any time you want extra assurance that the site's defaults are not being used.
A warning
Be wary of tools, bots or "predictor" services that ask for your seeds or claim to generate a "winning" client seed. No client seed can make you more likely to win. Anything claiming otherwise is a scam.
Why the server seed is hashed first
The whole system depends on the order in which things happen.
- Commit. The site generates the server seed and shows you only its hash.
- Contribute. You set your client seed.
- Play. Each bet uses both seeds and the nonce.
- Reveal. When you rotate seeds, or when the game ends, the site reveals the server seed.
- Verify. You hash the revealed seed and check it matches the commitment, then recompute your results.
What each step prevents
- Because the hash comes before your client seed, the site cannot pick a server seed that works badly with your client seed.
- Because your client seed is not known when the site commits, the site cannot precompute your outcomes.
- Because the server seed is secret until the reveal, you cannot predict results either.
- Because the hash is binding, the site cannot swap the seed later without being caught.
If any step happens out of order, for example if a site reveals its seed hash only after you bet, the guarantee disappears. That is one of the first things to check in any provably fair casino.
How seeds work in PvP games
The server seed plus client seed model was designed for single-player games such as dice, where each player bets alone against the house. Shared player-versus-player games work a little differently.
The problem with client seeds in shared rounds
In a jackpot with twenty players, or a roulette round where everyone watches the same spin, there can only be one result. If every player supplied a client seed, the site would have to combine them. But the last player to join could then see everyone else's seeds and choose their own to steer the result. Solving that requires extra rounds of commitments that slow games down and add new failure points.
The PvP approach
Shared games usually commit to a single server seed for each round before any player joins or bets. The result is then computed from that seed and public round details, such as the round number. Because nobody, including the site, can change the seed after the commitment, and because the seed was fixed before anyone's stake was known, the site cannot choose a seed that favours a particular player.
On PVPspinArena
Every Jackpot, Coinflip and Roulette round has its own 32-byte server seed. Its SHA-256 hash is shown before the round accepts entries. The result is HMAC-SHA256 of the seed with a message containing the game name, round number, draw version and, for Jackpot and Roulette, a counter. There is no client seed or per-player nonce, because every player shares the same result.
Trade-offs of each model
Neither model is simply better. Each fits a different kind of game.
Server seed plus client seed
- Strength: the player directly contributes randomness, so even the site's choice of server seed cannot decide the result alone.
- Strength: one seed pair can cover thousands of bets, verified all at once when rotated.
- Weakness: only works cleanly when each result belongs to one player.
- Weakness: many players never change the default client seed, which weakens the benefit.
Per-round committed server seed
- Strength: works for any number of players sharing one result.
- Strength: each round is verified independently, right after it ends.
- Weakness: relies on the commitment being published before entries, which you should check.
- Weakness: the player does not add their own randomness, so the site's seed generation must be sound.
What to check on any site
- Is the hash shown before bets or entries?
- Can you see the exact message format and mapping?
- Can you verify results in your browser or with independent tools?
- Is every past result available for checking?
The provably fair calculator guide shows how to run those checks yourself.
Worked example with a client seed
Here is how a typical single-player dice site might use seeds. This is a general example, not PVPspinArena's method.
- The site shows the hash of its server seed: `a3f1…`.
- You set your client seed to `blue-lantern-42`.
- Your first bet uses nonce 0. The site computes HMAC-SHA256 with the server seed as the key and `blue-lantern-42:0` as the message.
- It turns the first bytes of the output into a number between 0 and 99.99.
- Your second bet uses nonce 1, and so on.
- When you rotate, the site reveals the server seed. You hash it to confirm it matches `a3f1…`, then recompute every bet with nonces 0, 1, 2 and onward.
Common mistakes when checking
- Using the next server seed hash instead of the revealed one.
- Starting the nonce at 1 when the site starts at 0.
- Adding or missing a separator, such as the colon.
- Treating a hex seed as plain text.
PVPspinArena equivalent
For a Coinflip, the message is `PVPCasino:coinflip:v1:{game}:{draw_version}` and there is no client seed. The Fairness page shows the exact message for each finished game.
Seed rotation and reveal timing
On client seed sites, the server seed is usually reused for many bets and revealed only when you rotate. On per-round sites, a new seed is used every round and revealed straight after.
Why sites rotate
Revealing a server seed means every past result with it can be checked, but it also means it can no longer be used. So single-player sites let you keep a seed pair active for as long as you like, then rotate to reveal it and start fresh.
Per-round reveal
In shared PvP games, each round's seed is revealed when the round settles. You can verify a Jackpot, Coinflip or Roulette result on PVPspinArena as soon as the round ends. Completed Jackpot rounds also have public audit pages.
Draw versions
If a draw ever needs to be repeated for a technical reason, PVPspinArena increases the draw version in the message rather than changing the seed. That keeps the original commitment valid and makes any redraw visible when you verify.
What to watch for
A site that never lets you see revealed seeds, or reveals them only on request, is not really provably fair. Seeds should be available for every settled result.
Myths about seeds
A few myths come up often.
- "A lucky client seed wins more." No. Every client seed produces results with the same odds. HMAC-SHA256 output cannot be steered by choosing words.
- "Rotating seeds after a loss resets bad luck." No. Each result is independent, whichever seeds are used.
- "If I know the hash, I can work out the seed." No. SHA-256 is one-way; there is no practical way to reverse it.
- "Seed predictors exist." No working predictor exists for a properly implemented system. Tools sold as predictors are scams, often designed to steal accounts or wallets.
- "No client seed means not provably fair." Not necessarily. Shared PvP rounds commit a seed before entries, which also prevents the site from choosing a result.
For how to protect yourself from scams more broadly, see the crypto wallet guide.
Try it yourself
The best way to understand seeds is to check a real result. Open the Fairness page, choose Coinflip and enter a finished game number. You will see the committed hash, the revealed seed, the exact message and the HMAC output, all computed in your browser. Then try a Roulette round to see how a counter is used when a draw has to be repeated for fairness. For an overview of how rounds, balances and payouts fit together, read how it works.
Summary
A server seed is the site's secret random input, committed with a SHA-256 hash before play and revealed afterwards. A client seed is your own input, often created with a client seed generator, and a nonce counts your bets so each one is unique. Together they stop both the site and the player from controlling the result in single-player games.
Shared PvP games use one server seed per round, committed before anyone joins, because many players share one outcome. PVPspinArena does this for Jackpot, Coinflip and Roulette and lets you verify every settled round. No seed is luckier than another, and no predictor can beat a sound system.
More provably fair reading lives in our Provably fair guides.
FAQ
Frequently asked questions
Sources
Related guides
Provably fair
Provably fair casino guide: how to check every result
What makes a casino provably fair, how seeds, hashes and HMAC prove a result, how to check one yourself and which red flags to watch out for.
Provably fair
HMAC-SHA256 explained: how it powers provably fair games
What HMAC-SHA256 is, how it differs from a plain SHA-256 hash, and how provably fair games use it with a committed server seed to make results checkable.
Provably fair
Provably fair games: how each type is verified
Provably fair games explained: how coinflip, jackpot, roulette, dice, crash and cases are verified, what to check on each, and a worked PVPspinArena example.
Provably fair
Commit reveal scheme: the idea behind provably fair
What a commit reveal scheme is, why hiding and binding matter, how hash commitments work, and how games, auctions and blockchains use them to prove fairness.
