← play

Are online backgammon dice rigged?

If you play backgammon online, you have probably wondered whether the dice are rigged. You danced four times against a two-point board. Your opponent rolled the one double that saved them, exactly when it mattered. Read the reviews of almost any backgammon app and the same complaint is there.

gammonchain is a free backgammon server built around one idea: you should not have to take anyone's word for it. Its dice are provably fair. No one, the server included, can predict or steer a roll, and after the match you can re-derive every roll yourself. Start a match, or read on for how it works.

Why so many players think backgammon dice are rigged

What "certified random" can and cannot prove

Sites usually answer with an audit: a lab tested the random number generator and found its output uniform. That shows the generator can produce fair dice.

It cannot show that the roll in your game came from that generator unaltered, or that nobody saw it coming. A histogram of millions of rolls would look perfect even if a handful of key rolls had been chosen. gammonchain publishes totals too (a lobby panel counts every face, with a chi-square test), but that is a sanity check. The proof has to be per roll.

How provably fair backgammon dice work here

Every roll is built from secrets from more than one side, locked in before the first die is thrown:

  1. The server commits. Before play, the server picks a secret seed and publishes a fingerprint of it (a SHA-256 hash), so it cannot swap the seed later.
  2. Your browser commits. Your browser builds a chain of secret values, each one the hash of the next, and publishes only the end of the chain. Values are revealed one at a time and each must hash to the one before, so you cannot pick a convenient one, and nobody can work out the next.
  3. Both players sign the commitments. The match header holds the server's fingerprint and both players' chain ends. Both browsers sign it before any value is revealed.
  4. Each roll mixes both secrets. When you press roll, your browser sends your next chain value with the request. The dice are computed as HMAC-SHA256(server seed, match | game | roll number | … | your value). Each game's opening roll uses a value from each player.
  5. The seed is revealed at the end. Every chain value is already in the signed event log, so once the seed is out, anyone can recompute every roll.

Why nobody can predict or steer a roll

The full protocol, with the exact byte formats, is in the dice fairness docs.

What you can verify, and how

Every match ends as a signed record: commitments, rolls, moves, the revealed seed, and Ed25519 signatures from the server and both players over a hash chain covering it all.

The verifier checks that the seed matches its commitment, that every roll equals its derivation, that every move was legal, that the score follows from the moves, that nothing in the chain was edited, and that both named players really signed. Change one byte and it fails. See verification and signed records.

What this does not prove

Fair dice backgammon: common questions

Are online backgammon dice rigged?

Usually you have no way to tell, and that is the real problem. Most sites ask you to trust a certified random number generator. On gammonchain you do not have to: every roll is derived from secrets both sides committed to before play, and you can re-derive each one from the signed record after the match.

Can the gammonchain server change or choose my dice?

No. The server commits to its seed before the first roll, and each roll also depends on a value from your browser that the server does not have until you roll. A changed die would no longer match its derivation, and verification would fail.

How do I check that my dice were fair?

When a match ends, your browser verifies the signed record and re-derives every roll, and shows you the result. You can also download the record and check it again later, in the verify panel on the site.

Why do I keep rolling badly if the dice are fair?

Streaks are part of fair dice. Against a board with only one point open you fail to come in about 69% of the time, so dancing three turns running happens about once in every three tries. Fair dice are not kind dice. They are dice nobody chose.

Do I need an account to play with provably fair dice?

No. You can play as a guest with a key generated in your browser. A guest's private key never leaves the browser, so nobody, including the server operator, can sign a match record in a guest's name.

Can I read the code that makes my dice?

Yes. The dice derivation, the rules engine and the verifier are served as plain, readable JavaScript, and your browser runs exactly that code to check your match. They are MIT licensed. The rest of the server's source is not published.

Play a match you can check

No account, no download. Play a person or a bot, and the verification is waiting when the match ends.

Play now — no sign-up