Tool
Provably fair verifier
Paste a revealed server seed, your client seed and a nonce. The page computes SHA-256 of the server seed (to compare with the published commitment), the HMAC-SHA256 result and a roll from 0.00 to 99.99. Everything runs in your browser via WebCrypto — nothing is sent anywhere.
SHA-256(server seed)
—Commitment check—
Message
—HMAC-SHA256
—First 8 hex → integer
—Roll (0.00–99.99)—
The method used
- Message =
client_seed + ":" + nonce(for examplelab-reader-01:0). - HMAC-SHA256 with the server seed as the key, output as hex.
- Take the first 8 hex characters (32 bits) as an integer n.
- Roll = floor(n × 10000 / 232) / 100, giving 0.00 to 99.99.
This is one common convention, not a universal standard. Sites differ in message format, how many bytes they read and how they map them to an outcome. If a site's own documentation describes a different method, its results won't match this tool — and a site that won't document its method at all is a red flag.
Reproduce it in Python
import hmac, hashlib
server_seed = "9f2c4e1a7b3d8e6f0a5c2b9d4e7f1a3c"
client_seed, nonce = "lab-reader-01", 0
print(hashlib.sha256(server_seed.encode()).hexdigest())
h = hmac.new(server_seed.encode(), f"{client_seed}:{nonce}".encode(), hashlib.sha256).hexdigest()
n = int(h[:8], 16)
print(h, n, (n * 10000 >> 32) / 100)
# a5e39de9361cb47dd6ccdf84bb0cbeff1e402575f217b91bb2e560cfe1ac582d
# c6b1e6abfb75912f63fb7d8e96d037910dd26cd81e57d5e70c7fc855c3fdb59e 3333547691 77.61The default values are example seeds made up for this page. For the full walk-through, read how to verify a roll step by step.
18+. A matching hash shows a result followed the published method. It does not mean a game is good value or that you will win. Responsible gambling