How the wheel picks a winner
Is a spinning wheel really random? Here is exactly how every 123SpinWheel spin is decided.
In short: 123SpinWheel picks the winner before the wheel moves,
using your browser’s cryptographically secure random number generator
(crypto.getRandomValues()) with rejection sampling, so every entry has exactly the
same chance. The spin is an animation aimed at that pre-chosen slice. Nothing is sent to a
server, and no one — including us — can influence the result.
1. The winner is drawn first, then the wheel is spun
When you press Spin, the page draws a random slice number and only then animates the wheel, calculating a rotation that lands exactly on that slice. It adds four to seven full turns so consecutive spins look different, and it lands at a random point inside the winning slice rather than dead center, so the result is not obvious before the wheel stops.
Drawing first is fairer than it sounds. A wheel that spins freely and reads off wherever it stops has to decide which slice a stopping angle belongs to, and floating-point rounding at the slice boundaries makes some slices very slightly more or less likely than others. Choosing the slice first makes every entry exactly equally likely by construction.
2. A cryptographically secure source of randomness
The random numbers come from the Web Crypto API, crypto.getRandomValues(), which
browsers back with the operating system’s secure random generator — the same kind of source used
to create encryption keys. Unlike Math.random(), it is designed so that its output
cannot be predicted from earlier output.
3. No modulo bias
A common shortcut is to take a random 32-bit number and use the remainder after dividing by the number of entries. That is slightly biased whenever the number of entries does not divide 232 exactly: the first few entries get one extra chance each. The bias is tiny — about one part in 600 million for seven entries — but removing it costs one comparison, so the wheel uses rejection sampling: any draw from the short leftover block at the top of the range is thrown away and redrawn.
4. Weighted entries
You can change the odds in two ways. Repeating a line gives that entry more slices: three lines of “Ava” on a ten-line wheel gives Ava a 3 in 10 chance. Or, in Advanced mode, type a chance in percent next to an entry. Chances you type are kept exactly; entries you leave blank share whatever is left equally. The slices are drawn at those sizes, so the wheel always shows the real odds, and the winner is chosen by walking the cumulative chances with a secure 32-bit random fraction.
5. Every spin is independent
The wheel has no memory, so the same entry can come up twice in a row. That is not a fault — it is what randomness looks like:
| Entries on the wheel | Chance for each entry | Same entry on the next spin | 3 spins with no repeat |
|---|---|---|---|
| 2 | 50% | 50% | 0% |
| 4 | 25% | 25% | 37.5% |
| 8 | 12.5% | 12.5% | 65.6% |
| 20 | 5% | 5% | 85.5% |
| 100 | 1% | 1% | 97.0% |
If each entry should win only once, turn on Take the winner off the wheel afterwards (Settings → After spin). That turns the wheel into a draw without replacement, like pulling names from a hat.
6. Your entries stay on your device
The wheel runs entirely in your browser. Your list and settings are saved in your browser’s local storage so they are there next time; pictures you add are held in memory for the session and never uploaded. The only time entries leave your device is when you choose to share a wheel: the link then contains the entries, so anyone with the link — and the server that answers it — can read them. See the privacy policy.
7. Can a spin be checked?
Because the draw happens on the device that spins, the fairest way to run a public draw is to spin it where everyone can see: share your screen or use Full screen on a projector, switch on removing winners, and keep the Results list — it records every outcome in order and can be copied with one click.
Summary
- Source: Web Crypto API (
crypto.getRandomValues), a cryptographically secure generator. - Method: uniform integer draw with rejection sampling; weighted draws use cumulative shares.
- Order: winner chosen first, animation aimed at it, landing point randomized within the slice.
- Fairness: every entry equally likely unless you set weights; spins are independent.
- Privacy: runs locally; entries leave the device only in links you choose to share.