Skip to content

Provably Fair Verifier for CS2 Sites

Short answer

A provably fair roll is made from a server seed, your client seed and a nonce. Paste all three and the verifier recomputes the roll with HMAC-SHA256 or SHA-256 in your browser. It also checks that SHA-256 of the revealed server seed matches the hash you were shown before you played.

HMAC-SHA256 with the server seed as the key and "clientSeed:nonce" as the message.

Show the roll as

Only paste a server seed after the site has revealed it. Everything runs in your browser. Nothing is sent to us.

Paste your seeds to check a bet

After a bet, the site reveals its server seed. Paste it here with your client seed and the nonce. The tool shows the hash of the seed, so you can compare it with the hash the site showed before you played, and the roll the seeds produce.

How this method works

  1. hash = HMAC_SHA256(key = serverSeed, message = clientSeed + ":" + nonce), as 64 hex characters
  2. take the first 8 hex characters and read them as a number from 0 to 4,294,967,295
  3. roll = that number / 4,294,967,296 (0x100000000), a value from 0 up to but not including 1

Every site uses its own exact formula: the message format, how many characters it reads and how it turns the number into a result. If your roll does not match the site, check its fairness page for its exact steps. All seeds are used as UTF-8 text, exactly as typed. Hex-looking seeds are not decoded to bytes first.

What does provably fair mean?

Provably fair is a way for a site to prove it did not change a result after you placed your bet. The site picks a secret server seed before you play and shows you its hash. You add your own client seed. Each bet also has a counter called a nonce.

After the seed is revealed, you can run the same math yourself and get the same roll. If the math matches, the site could not have picked the result after seeing your bet. This idea is called a commitment scheme: you commit to a value while keeping it hidden, and reveal it later. Source

For the full story, read how provably fair works.

How does this verifier work?

You paste four things: the revealed server seed, the hash you were shown before you played, your client seed and the nonce. Then you pick a method. The tool does the math in your browser and shows two results.

The first is the hash check. It runs SHA-256 on the server seed and compares it with the hash you pasted. A green "Hash matches" means the seed is the one the site committed to. A red "Hash does not match" means something is different.

The second is the roll. It uses the method you picked to turn the seeds and nonce into a number. You can show it from 0 to 1, from 0 to 100 or from 0 to 10,000.

Nothing is sent to our server. The hashes run with the Web Crypto API built into your browser. Source

What methods does the verifier support?

It supports three common patterns. They are generic methods, not the formula of any named site.

MethodWhat it hashesHow the roll is made
HMAC-SHA256Key: server seed. Message: clientSeed:nonceFirst 8 hex characters, divided by 4,294,967,296
SHA-256 of joined seedsserverSeed-clientSeed-nonceFirst 8 hex characters, divided by 4,294,967,296
Server seed hash checkThe server seed aloneNo roll, only the comparison

HMAC is a standard way to mix a secret key into a hash. It is defined in RFC 2104. Source SHA-256 is defined in the Secure Hash Standard, FIPS 180-4. Source

Why do sites use different formulas?

Every site writes its own code. One might join the seeds with a colon, another with a dash. One might read 8 hex characters, another 13. One might turn the number into a roll from 0 to 100, and another into a card, a crash point or a slot on a wheel.

So if your roll does not match what the site showed, it does not always mean cheating. First check the site's own fairness page for its exact steps. The hash check is the one part that is nearly universal: if the revealed seed does not hash to what you were shown, that is a real red flag.

We do not list the formula of specific sites here. We would only add one after opening that site's own fairness page and citing it.

How is the roll calculated?

For the HMAC-SHA256 method, the steps are:

  1. Compute HMAC_SHA256(key = serverSeed, message = clientSeed + ":" + nonce). The result is 64 hex characters.
  2. Take the first 8 hex characters. Read them as a number from 0 to 4,294,967,295.
  3. Divide by 4,294,967,296 (that is 0x100000000, or 2 to the power of 32). The result is a roll from 0 up to, but not including, 1.

The 0 to 100 scale is floor(roll × 10,000) / 100, which gives 0.00 to 99.99. The 0 to 10,000 scale is floor(roll × 10,000), which gives 0 to 9,999.

All seeds are read as plain text, exactly as you type them. A seed that looks like hex is not turned into bytes first.

Worked example: HMAC-SHA256

These are the demo seeds behind the Try an example button. We made them up to show the steps, and they belong to no site. The tool itself starts empty, ready for your own seeds.

InputValue
Server seeddemo-server-seed-7f3a91
Client seeddemo-client-seed
Nonce1

The HMAC-SHA256 result starts with d3b75b93. As a number, that is 3,552,009,107. Divided by 4,294,967,296, the roll is about 0.82701657.

On the 0 to 100 scale that is 82.70. On the 0 to 10,000 scale it is 8,270. These are the numbers the tool shows after you press Try an example.

Worked example: the hash check

The SHA-256 hash of demo-server-seed-7f3a91 is:

471d256e10359e79805305031556499334fb1acd044b4aebffa2061e7fad0773

The example button puts it in the hash field for you, and the tool shows "Hash matches." Now change one letter of the server seed. The hash changes completely and the tool shows "Hash does not match." That is what makes the check useful: a site cannot find a second seed with the same hash.

If you switch the method to "SHA-256 of joined seeds," the same inputs give a hash that starts with a73efc56. The roll is about 0.65330484, or 65.33 on the 0 to 100 scale.

What should you check first?

Start with the hash. Copy the server seed hash before you play, and keep it. After the site reveals the seed (often when you change seeds), paste both here. If the hash matches, the seed was locked in before your bets.

Then check a roll or two with the site's own formula. If the site uses one of the methods above, you can do that here. If not, the hash check still tells you the most important part.

Never paste a server seed that is still active. It is only safe to share once the site has revealed it and moved you to a new one.

What provably fair does not tell you

Provably fair proves a roll was not changed. It does not tell you the odds were good. A game can be perfectly provable and still keep a large share of every bet. To see what a house edge costs you, use the house edge calculator, or read house edge explained.

It also does not apply to opening real cases in CS2. Those use the odds on our CS2 drop rates page.

When should you use this tool?

Use it after a big win or a loss that felt wrong, to confirm the result came from the seeds. Use it once on any new site, to see if its fairness system really works the way it says.

This tool only checks math. It does not link to or recommend any gambling site.

Frequently asked questions

How do I verify a provably fair roll?

Paste the revealed server seed, the hash you were shown, your client seed and the nonce. Pick the method the site uses and compare the roll with the site's result.

What does Hash does not match mean?

SHA-256 of the seed you pasted is different from the hash you pasted. Check for typos and spaces first. If the seed really does not match, the site did not use the seed it committed to.

Why does my roll not match the site?

Each site uses its own exact formula, such as a different separator or number of hex characters. Check the site's fairness page for its steps.

Is it safe to paste my seeds here?

Yes. All hashing runs in your browser with Web Crypto and nothing is sent to our server. Only paste a server seed after the site has revealed it.

What is a nonce?

A nonce is a counter that goes up by one with each bet on the same seed pair. It makes every roll different even though the seeds stay the same.

Does provably fair mean the odds are good?

No. It only proves a result was not changed after you bet. A provably fair game can still have a big house edge, which you can check with the house edge calculator.

Try next