← All tools

PF Universal Verifier

Don’t trust the flashing green “Fair” checkmark on your casino profile. This universal verifier lets you grab your raw seeds and independently audit the cryptographic randomness of your bets outside the operator’s system.

Provably Fair — Universal Verifier

Reproduces the raw HMAC-SHA256 outcome stream operators use to map (server seed, client seed, nonce) → game results. Use this to spot-check any provably-fair game before trusting its in-app "Verify" button.

A · Outcome stream

B · Seed-rotation hash check

After an operator rotates the server seed, they should publish the OLD seed. SHA-256 it here and confirm the digest matches the hash they showed you BEFORE the rotation.

How to use the universal verifier in 3 steps

Every modern crypto-casino (including Stake, BC.Game, and Roobet) utilizes the exact same cryptographic primitives to guarantee game results aren’t altered mid-bet. To audit any specific game round, paste these values directly from your bet history panel (read our guide on how to verify provably fair outcomes):

  1. Server Seed (Revealed): Operators keep this string encrypted while you are playing. Once you rotate your active seed pair, the casino reveals the raw hexadecimal string of your previous server seed. Learn more about the mechanics of the server seed, client seed, and nonce.
  2. Client Seed: A custom string created by your browser or entered manually by you before placing bets. This ensures the casino cannot guess your seed combo in advance.
  3. Nonce: The exact sequence number of your bet (e.g., the first bet on a seed pair is nonce 0 or 1, the second is 2, and so on).
Auditing seed rotations: Before you begin playing, copy the hashed server seed shown on your profile. After a session, click “Rotate Seed Pair” to reveal the raw server seed. Paste the revealed seed and the previously published hash into Section B below. If they match, the casino didn’t swap your seeds to manipulate outcomes.

The cryptography behind the numbers

I spent years assuming provably fair systems explained in marketing materials were just high-level wrappers to keep players quiet. But once you break down the mathematical flow, the cryptography is actually elegant. The system relies entirely on one fundamental algorithm: HMAC-SHA256.

1. Building the message string

The game takes your client seed, your nonce (bet number), and a cursor value (to handle games that need multiple numbers, like cards or mines boards). It joins them together using colons to create a clean message string:

Message = "client_seed:nonce:cursor"

2. Generating the HMAC hash

Next, it runs the message and the revealed server seed through a Keyed-Hash Message Authentication Code (HMAC) using the SHA-256 hash function. This outputs a 64-character hexadecimal signature:

Signature = HMAC-SHA256(Server_Seed, Message)

This signature is mathematically locked. A single character shift in your client seed or server seed results in a completely unrecognizable, random-looking hash.

3. Converting hash bytes to game floats

To turn this 32-byte signature into readable multipliers or card indices, the algorithm takes the bytes in groups of 4 (32 bits). It converts each group into a decimal fraction between 0 and 1:

Float = (Byte_1 / 256^1) + (Byte_2 / 256^2) + (Byte_3 / 256^3) + (Byte_4 / 256^4)

The verifier runs this identical math stream. By matching the output floats generated here with the cards, dice rolls, or crash points shown in your game history, you can prove if the operator is running a legitimate RNG.

Strategy: Keep the operators honest

Casinos aren’t stupid. They know most players will never look at their seeds, let alone write code to audit them.

You don’t need to check every single wager. Instead, develop a strict auditing habit: rotate your seeds after a big win or an unusually long losing streak, copy your active history, and paste them here.

If the casino ever outputs a result that doesn’t match this universal cryptographic stream, you have immediate, undeniable proof of fraud.

Frequently asked questions

What does “previously published hash” mean?

Before you place a bet, the casino shows you a SHA-256 hash of the active server seed. Because it is hashed, you cannot read the seed or predict outcomes. However, it acts as a commitment. When you rotate seeds and the raw seed is revealed, hashing it must produce that exact same digest. If it doesn’t, the casino cheated by swapping seeds mid-session.

Can the casino predict my client seed?

No, not if you change it. When you generate a new custom client seed (e.g., typing a random sentence or using a local random number generator), the casino has no way of knowing what it will be until your bet is submitted. This makes it mathematically impossible for the casino to pre-determine a losing outcome.

Why does the verifier generate multiple floats?

Different games require different quantities of random numbers. A single dice roll only needs one float. A Plinko round needs one float per peg row. A mines board needs up to 25 floats to randomize the tile positions. Deriving multiple floats allows this tool to audit any game style.