Check a spin
Every spin on Wheel Pick Names can be checked by anyone afterwards. Paste the result link the host shared with you, or just open it, and this page tells you in plain words whether the winner was worked out correctly from the list, and whether the result was left unchanged. Nothing is uploaded: the check happens in your browser.
How it works, in plain words
- A random value is created before the spin. Your browser makes it with its built-in cryptographic random generator and keeps it until the spin is over.
- The winner is calculated from it. The random value and the list of names decide the winner by a fixed, published method. The animation only shows what was already decided.
- The result link carries everything needed to repeat the calculation. This page repeats it for you and tells you whether the winner and the list match.
Where do you get a result link? On the wheel, open the Results tab after a spin and press Copy result link. Developers can also paste the full proof text instead of a link.
The exact procedure (for developers)
You do not have to trust this page. These are the exact steps, so anyone can repeat them with a SHA-256 tool.
- Seed. Your browser creates a random 128-bit seed, written as 32 hexadecimal characters, before the spin.
- Fingerprint. SHA-256 of the seed text, recorded in the proof as a check that the seed was not swapped.
- List hash. SHA-256 of the list as UTF-8 text: one entry per line, written as the name, or the name, a TAB and the weight when the weight is not 1.
- Draws. For counter i = 0, 1, 2 and so on, take the first four bytes of SHA-256 of
seed|listHash|ias an unsigned big-endian number r. - Unbiased pick. With total = the sum of the weights and limit = floor(2³² ÷ total) × total, use the first r that is below limit. Let k = r mod total.
- Winner. Walk through the entries, subtracting each weight from k. The entry where k drops below zero wins.
- Slot machine. Slot mode is only a different look. It uses exactly the same procedure and has exactly one winner.
This Node.js script gives the same winner for a result:
import { createHash } from 'node:crypto';
const sha = (s) => createHash('sha256').update(s);
const { seed, list } = JSON.parse(proofText); // the proof text
const entries = list.split('\n').map((l) => { const [name, w] = l.split('\t'); return { name, w: Number(w ?? 1) }; });
const listHash = sha(list).digest('hex');
const total = entries.reduce((a, e) => a + e.w, 0);
const limit = Math.floor(2 ** 32 / total) * total;
let r, i = 0;
do { r = sha(`${seed}|${listHash}|${i++}`).digest().readUInt32BE(0); } while (r >= limit);
let k = r % total;
console.log(entries.find((e) => (k -= e.w) < 0).name);What this proves, and what it does not
It proves that the winner was worked out correctly from the recorded random value and list, with a method that gives every entry exactly its fair share, and that the result was not edited afterwards.
It cannot prove how the random value was chosen. Anyone who runs a tool on their own device could in theory spin again until they like the result, or modify the page, and a result link made that way would still check out. No website can rule that out from a link alone. To show that a draw was honest, run it live or record your screen from before you press SPIN, show the list first, and agree that the first spin counts. The spot where the wheel stops inside the winning slice is only for show and is not part of the check.