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.
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.
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.
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.
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.
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.