How to use
Type one entry per line in the textarea — names, dish options, gift recipients, anything. The wheel updates in real time. Click **Spin** to randomize: the wheel turns several full rotations and decelerates to a winner sector. Each entry occupies an equal-sized sector regardless of name length, so the probability of any single entry winning is `1 / N`.
Turn on **Remove winner after spin** for tournament-style elimination — each spin drops the winner from the list, so by repeated spins you can rank everyone. Spins use `Math.random()` for selection; the visual rotation is computed *after* the winner is chosen, so the animation is honest rather than landing wherever the wheel happens to stop. Nothing leaves the browser.
FAQ
Is each entry really equally likely?
Yes. The winner is picked first with `Math.floor(Math.random() * N)`, which is uniform over `0..N-1`. The wheel then rotates to make the chosen sector land under the pointer, with several extra full turns added for show. The visual is a presentation layer over the random pick, not the source of randomness.
Can I weight entries differently?
Not directly — every entry is one sector. To bias the draw, repeat an entry: writing `Alice` three times and `Bob` once gives Alice a 75% chance. This is uglier on the wheel but transparent — anyone watching can count the slices.
How many entries can I add?
There is no hard cap, but labels start truncating around 16 entries and the wheel gets cramped past 30. For larger draws use a different format — the elimination mode of this tool, or sort by random key in a spreadsheet.
Does the result depend on where the wheel was last time?
No. Each spin draws a fresh random index from `Math.random()`, independent of the wheel's current angle. The starting rotation only affects how the deceleration animation looks, not which sector ends up under the pointer.