Skip to content
LUDO CASH ARENA

Fair play · 8 min read · Updated

Provably Fair Dice Explained: How to Verify Every Roll

Is online Ludo rigged? It is a fair question, and you should not have to take anyone's word for the answer. On Ludo Cash Arena every roll is locked in before the match starts and can be recomputed by anyone afterwards. This guide explains how it works in plain language and shows you how to check a match yourself.

The problem with trusting the dice

At home you can see the die, pick it up and roll it yourself. Online you cannot. You only see a number on the screen, and you have to trust whoever runs the game. When money is involved, that trust matters even more. Provably fair dice solve this with simple cryptography: the game commits to its dice before you play, and proves afterwards that it kept its promise.

How it works, in four steps

1. The server locks the dice before the first roll

When a match is created, the server picks a secret random value called the server seed. It does not show you the seed itself, only its SHA-256 fingerprint, called the server seed hash. A fingerprint like this works one way: you cannot work out the seed from it, but if the seed changed even slightly, the fingerprint would be completely different. So once you have seen the hash, the dice are locked in.

2. Your own seed is mixed in

Every player has a client seed. It is random by default, or you can choose your own in the Fair play sheet. The match's client seed is all human players' seeds in seat order, joined together with the match id. Because your seed goes in, the server cannot know the dice before the players sit down. Changing your client seed applies to matches created after the change.

3. Each roll is a numbered calculation

Every roll in the match has a number called the nonce: 0 for the first roll, 1 for the second, and so on. Bots' rolls and automatic rolls after a timeout count too, so nothing is skipped. Each die comes from HMAC-SHA256 of the server seed and the client seed with the nonce. The result is turned into a number from 1 to 6 in a way that gives every face exactly the same chance.

4. After the match, the seed is revealed

When the match ends, the server seed is revealed. Anyone can now check two things: that the seed matches the fingerprint shown at the start, and that every roll in the match came from it. If both are true, the dice could not have been changed during the game.

How to verify a match yourself

  1. During a match, tap Fair play to see the server seed hash and the client seed. Take a screenshot of the hash if you like.
  2. Play the match to the end.
  3. After the match, open Fair play again, or go to the dice verifier page on ludocasharena.com/fair.
  4. Paste the revealed server seed (64 characters) and the client seed.
  5. Your browser checks that the seed matches the hash from the start of the match and recomputes every die.
  6. Compare the recomputed rolls with the rolls you saw in the game. They should match exactly, nonce by nonce.
Tip
The check runs in your own browser, not on our server, so you are not relying on us to tell you the answer. Developers can also implement the published algorithm in Python, JavaScript or even a spreadsheet and get the same dice.

Why a secure random generator alone is not enough

Any serious game uses a cryptographically secure random number generator, and ours always has. The weakness is not the generator, it is trust: you cannot see inside our server, so you would have to believe us. Provably fair dice remove that need. The commitment is published before the game, your own seed goes in, and the proof comes out after. Even if someone wanted to cheat, changing a single die would break the match between the seed and its fingerprint, and anyone checking would see it immediately.

The exact algorithm

For readers who want the detail, the algorithm is called hmac-sha256-v1 and is published in full on the verifier page.

  • serverSeedHash = SHA-256 of the server seed, written as hex. The server seed is 64 hex characters, hashed as text.
  • clientSeed = the human players' seeds in seat order, then the match id, joined with a vertical bar.
  • For roll number n, compute HMAC-SHA256 with the server seed as the key and the message clientSeed, a colon, then n.
  • Read the 32-byte result as eight 32-bit numbers. Take the first one below 4294967292 and the die is that number mod 6, plus 1.
  • If all eight are rejected (about 1 in 10 to the power 37), repeat with a round counter added to the message.

The number 4294967292 is the largest multiple of 6 below 2 to the power 32. Rejecting anything above it removes what is called modulo bias, so a 1 is exactly as likely as a 6.

What it proves, and what it does not

  • It proves the dice were fixed before the first roll and that nobody, including our staff, changed them during the game.
  • It proves bots, including the House bot, rolled the same fair dice as you.
  • There is no admin tool that sets dice or outcomes.
  • It does not mean you will win. Fair dice are random, and losing streaks are part of chance.
  • Matches created before provably fair dice went live on 13 October 2026 used a secure random generator but cannot be verified this way.

Other fairness protections

Provably fair dice are one part of fair play. Every roll and move is also logged with the match, turn and time, so disputes can be checked against the full record. Bots are always labelled and never play in money games between players. Collusion, multiple accounts and automated tools are banned, and suspicious patterns are reviewed by people. You can report a player from the match or through Support, or email [email protected].

If you play for money, remember that fair dice protect the game, not your budget. Cash play is 18+ only, nobody is guaranteed to win, and the limits in Wallet, Limits are there to help you stay in control.

Questions and answers

Is online Ludo on Ludo Cash Arena rigged?

No. Dice are rolled on our server, committed before the first roll, and every finished match can be verified in your own browser. There is no admin tool that sets dice or outcomes.

What is a server seed hash?

A SHA-256 fingerprint of the secret server seed, shown before the first roll. It locks the dice in without revealing them.

Can I choose my own client seed?

Yes. Set it in the Fair play sheet. It applies to matches created after you change it.

Where do I verify a match?

Open Fair play after the match, or go to ludocasharena.com/fair, paste the revealed server seed and client seed, and your browser recomputes every roll.

Can old matches be verified?

Matches created before 13 October 2026 have no fairness record and cannot be verified this way.

Put it into practice

Play a real opponent in seconds, or start with free practice against labelled bots.

Play near you: Ludo Kampala, Ludo Entebbe, Ludo Wakiso, Ludo Nansana, Ludo Kira, Ludo Makindye-Ssabagabo, Ludo Mukono, Ludo Lugazi, Ludo Njeru, Ludo Mpigi and every district.

Chat on WhatsApp