← All posts
Fairness

Could you trust a shuffle you can't see?

Our deck is shuffled correctly. But in the gambling space, 'trust us' isn't good enough — so here's where we're taking it.


Every digital card game asks you to trust a shuffle you cannot see. Most of the time that trust is reasonable; sometimes it is badly misplaced. For a brand in the gambling space, we think the right answer is to make the shuffle something you don't have to take on faith.

First, shuffle it correctly

The baseline is an honest shuffle. We use the Fisher–Yates algorithm, which produces every ordering of the deck with equal probability — no subtle bias toward the original order, the classic bug in naïve shuffles.

for (let i = deck.length - 1; i > 0; i--) {
  const j = Math.floor(random() * (i + 1));
  [deck[i], deck[j]] = [deck[j], deck[i]];
}
Fisher–Yates: each card swapped with a uniformly random earlier slot — provably unbiased.

But "trust us" isn't verifiable

A correct algorithm still relies on you trusting that we ran it honestly and didn't peek. The gold standard removes that trust entirely, and it is called provably fair— a commit-reveal scheme borrowed from cryptography:

  1. Commit: before the hand, the server publishes a hash of a secret seed. The hash pins down the seed without revealing it — we can no longer change our mind.
  2. Mix in the player: combine our seed with a client seed, so neither side alone controls the deck.
  3. Reveal: after the hand, the server reveals its seed. You hash it yourself, confirm it matches the commitment, and re-derive the exact shuffle. If anything was tampered with, the hashes won't line up.

The point is not that you will check every hand — it is that you could. A shuffle anyone can audit is one nobody has to trust.

Keep reading