How the randomness works
It’s worth understanding because it’s the opposite of what the animation suggests: the result is determined the instant you click, not as the wheel coasts to a stop. The tool draws a random final angle from a flat, uniform 0–360° distribution — ideally via the Web Crypto API, which produces far higher-quality randomness than Math.random() — and then the requestAnimationFrame loop animates the wheel through a friction/easing curve that lands precisely on that angle. Because the angle is uniform and every equal segment spans the same arc, the odds are provably fair. The spin you watch is theater; the fairness is in the pick.
Fair decisions and weighted ones
| You want | Do this |
|---|---|
| Equal odds for every choice | List each option once |
| One option more likely | List it multiple times (more arcs = bigger slice) |
| Roughly 70/30 split | Enter the first ~7×, the second ~3× |
The duplication approach (FAQ) is the simplest mental model for weighting — you’re literally giving an option more of the wheel.
Good uses for a wheel
A decision wheel removes deliberation and bias from low-stakes choices:
- Team rituals — who leads standup, who picks lunch, who reviews the PR.
- Classroom/group — randomly call on a participant, pick a winner.
- Personal — break a tie between options when you’re overthinking it.
- Giveaways — a visual, transparent way to draw a name.
The visible randomness is part of the appeal — everyone watches the same fair spin, which feels more legitimate than a number appearing instantly.
Keep it smooth
Performance scales with entry count: each segment is drawn (arc, text, color) on every animation frame, so a wheel of 500+ items can overwhelm a phone GPU and stutter. Keep datasets under ~100 entries for fluid 60fps spinning, and truncate very long labels that would overflow their thin slices. Everything runs locally in your browser — no entries or results are sent anywhere. For generating lists of names to drop into the wheel, the Mock JSON Data Generator can help.