← Back to Spin the Wheel

Spin Verifier

Every spin on Spin the Wheel is provably fair. Before the wheel moves, we publish a SHA-256 commitment hash of the random seed we will use. After the spin, we reveal the seed. Paste both here to confirm that the result was not altered.

Verify a spin

How it works

1. Commit

Before you press Spin, Spin the Wheel generates a cryptographically random 16-byte seed using crypto.getRandomValues — the same API your browser uses for TLS. It immediately computes SHA-256(seed) and displays the first 16 hex characters as the "commit" in the wheel footer.

2. Spin

The seed is used to deterministically select the winner. The wheel animation is purely cosmetic — the outcome is already fixed at commit time and cannot be changed.

3. Reveal

After the spin resolves, the result modal shows the full seed. You can paste it here alongside the commitment hash to confirm SHA-256(seed) = hash, proving the result was not swapped after the commit was published.

4. Why this matters

Ordinary random wheels can be rigged by the host: run the wheel privately, discard unfavourable results, and only show the winner they wanted. A commit-reveal scheme makes that impossible — the commitment locks in the outcome before the spin is visible.

Technical specification

Seed generation
  seed = hex(crypto.getRandomValues(new Uint8Array(16)))
  → 32 hex characters, 128 bits of entropy

Commitment
  hash = SHA-256(seed)
  → 64 hex characters
  → displayed as hash.slice(0, 16) + "…" in the wheel footer

Winner selection
  items = live entries (on === true), each repeated weight times
  index = parseInt(seed, 16) % items.length
  winner = items[index]

Verification
  SHA-256(revealed_seed) === published_hash  →  spin was not altered

All operations run in your browser. No seed or hash is ever sent to a server. The source code is open for inspection via browser DevTools.