On this page
Spin the Wheel
A customisable decision wheel with 2-50 options, cryptographically fair picking and a session history.
- Available — Live on this site right now.
- Browser Tool — Runs in the browser you are reading this in.
- No Install — Nothing to download, no extension, no account.
- Client-Side — Runs entirely on your device. No test data is uploaded.
- Plays Sound — Produces audio, so speakers or headphones are needed.
This page explains the tool. The tool itself is one click away and needs no sign-in.
Open Spin the WheelWhat is this game?
Spin the Wheel is a random picker drawn on a canvas. You give it a list of options, press spin, and it lands on one of them. It exists to settle a choice - what to eat, who goes first, yes or no - not to be won, so there is no score and no leaderboard.
The wheel holds between 2 and 50 options and starts with six. You can type your own, or load a preset - food, yes / no, dice or weekdays - and then add, edit, delete, restore or clear entries. The canvas re-slices itself so every option gets an equal wedge.
The result is chosen before the animation, not by where a physical wheel happens to stop, and it is chosen fairly: the winner comes from crypto.getRandomValues() using rejection sampling, which removes the slight bias a plain modulo would leave. The spin you watch is an easing animation that ends on the already-decided slice.
How to play
- Build the wheelStart from the six defaults, load a preset, or type your own options. The wheel needs at least two entries and accepts up to fifty; each new option gets an equal slice automatically.
- Edit as you goAdd, rename or delete individual options, Restore the defaults, or Clear to start empty. The canvas redraws immediately so what you see is what will be picked.
- SpinPress Spin. The wheel accelerates and eases to a stop on the chosen slice, a tick sounds as each boundary passes under the pointer, and the winner is announced when it settles.
- Spin again or remove the winnerSpin Again re-runs with the same options. Remove Winner drops the last result from the wheel first, which is how you draw an order or run a bracket without repeats.
Controls
- Spin
- Pick and animate to a winner
- Spin Again
- Re-run with the current options
- Remove Winner
- Delete the last winner from the wheel before the next spin
- Presets
- Load food, yes / no, dice or weekday option sets
- Add / Edit / Delete
- Manage individual options; Restore returns the defaults, Clear empties the wheel
Scoring and results
The winning option
The slice the pointer rests on when the wheel stops. It was selected in advance by crypto.getRandomValues() with rejection sampling, so every option has a genuinely equal chance regardless of where it sits on the wheel.
The session history
Recent winners are listed as you spin, with the most recent shown up to fifteen deep. This history lives only in memory for the current visit - it is not saved.
What this game tests
- A fair, unbiased random choice among 2-50 named options
- A draw order or elimination bracket, using Remove Winner between spins
- A quick yes / no, dice roll or weekday pick from the built-in presets
Limits worth knowing
A browser can only report what the platform gives it. These are the honest boundaries of this page, so a result is never read as more than it is.
- The result is not stored. The history is in-memory for the session only, so reloading the page or closing the tab loses it - there is no localStorage record to restore.
- The wheel is capped at 50 options, both so each slice stays readable and so the canvas keeps drawing smoothly.
- The ticking sound is synthesised with the Web Audio API and can be silenced; it is a cue, not a requirement, so the picker works exactly the same with sound off.
- Fairness is per spin. Removing a winner changes the remaining odds as you would expect, but the tool does not track or balance results across spins - each spin starts even.
Tips for a higher score
- Use Remove Winner to turn the wheel into a draw: each spin picks the next name and takes it out, so you get a full order with no repeats.
- Load a preset first, then edit it - it is usually faster than typing a list from scratch.
- Because the choice is made before the animation, you can trust the result even if the wheel looks like it stopped between two slices; the announced winner is the decided one.
Troubleshooting
My history vanished when I reloaded.
That is expected. Spin the Wheel keeps its winners only in memory for the current session and never writes them to storage, so a reload or a new tab starts the history empty.
I cannot spin.
The wheel needs at least two options. If you cleared it or deleted down to one, add another entry or press Restore to bring back the defaults.
Is the wheel actually random, or does it favour a slice?
It is random. The winner is drawn from crypto.getRandomValues() with rejection sampling to avoid modulo bias, so no slice is favoured no matter where it sits.
Ready to run it?
A customisable decision wheel with 2-50 options, cryptographically fair picking and a session history. Nothing to install, and it opens in this browser.