Wheel Spinner
Spin a wheel online with your own options and weights, smooth easing, an instant result copy and a short history.
How to use
- Type one option per line. To give options different odds, write "Option,weight" such as "First prize,1".
- A bigger weight draws a bigger sector and wins more often. Options without a weight count as 1.
- Press "Spin" or hit the space bar. The wheel eases out for three to five seconds and stops on a random sector.
- The winner appears below and its sector stays highlighted. Press "Copy result" to copy the text.
- Tick "Remove the winner after each spin" to drop each winner from the list, which suits draws without repeats.
FAQ
How is the winner chosen?
How do weights relate to sector size?
What does "Remove the winner after each spin" do?
Are my options uploaded anywhere?
How to use
- Fill in the options
Type one option per line. To give options different odds, add a comma and a weight, as in First prize,1. A missing weight counts as 1, and sector size follows the weight.
- Spin and wait for the stop
Press Spin or hit the space bar. The wheel eases out for three to five seconds, slowing down before it stops on the sector picked by weight, which is then highlighted.
- Copy the winner
The result area shows the full winning text, while long labels are shortened inside the sectors. Press Copy result to put the winner on the clipboard for a chat or a spreadsheet.
- Draw without repeats
Tick Remove the winner after each spin and every winner leaves the list while the wheel is redrawn. With fewer than two options left, the spin button is disabled.
- Reset the list
Press Reset options to restore the starting list and Clear history to drop the last five rows. The history lives in page memory and disappears on a refresh.
About this tool
A wheel spinner turns a small decision into a random draw. Type one option per line, and add a comma and a weight when some options should win more often. A weight of 1 against a weight of 3 gives a one to three ratio in sector angles. The visible area then matches the real chance of each option. The wheel is drawn on a canvas, and its colours come from the site theme variables, so it follows the light and dark themes. Long labels are shortened inside a sector, while the full text always appears in the result area below.
The spin uses requestAnimationFrame with an ease-out curve and lasts three to five seconds. Speed drops near the end, and the sector under the pointer is the one that was picked by weight, which is then highlighted. Random values come from the browser's cryptographic source, so the outcome is as fair as the weights allow. With remove-winner mode enabled, each winner leaves the list and the wheel is redrawn without it. When fewer than two options remain, the spin button is disabled.
How it works
A weighted draw adds up all weights and takes one random decimal between zero and that total. Then it walks the list, subtracting each weight, and stops at the first option where the running value turns negative. One random value is enough, and the cost grows in step with the number of options. Sector angles follow the same ratio, so the drawing tells the truth about the odds. The random decimal is a 32-bit integer divided by 2 to the power of 32. That space is wide enough to separate options with very close weights.
Landing on the chosen sector is the part that needs care. The script finds the angle of that sector centre in wheel coordinates. It works out the rotation that brings the pointer onto that angle, then adds a whole number of extra turns. An ease-out curve interpolates from the current angle to the target over a fixed duration. Four to six turns across three to five seconds look like a real wheel losing speed. When the system asks for reduced motion, the duration drops below half a second and the extra turns drop to one. The result is the same, and only the animation changes.
When to use it
- Live draws and events
Fill the list with prizes and weights: first prize at 1, second at 3, consolation at 10. Remove-winner mode keeps one name from winning twice, and the history rows leave a record to check afterwards. On a projector the slow stop is easy to follow, which matters when an audience is watching.
- Team lunches and chores
Small calls such as where to eat or who collects the parcel do not need a meeting. List the candidates and spin once. Give the popular canteen a higher weight when most of the team prefers it, then copy the winner into the group chat and move on.
- Classroom name picking
Paste a class list with one name per line and leave every weight at 1. Each spin picks one student at random. Remove-winner mode keeps a lesson free of repeats, and the five history rows show who has already been called.
Tips & tricks
- Weights can be decimals such as 0.5 for an option that should win half as often.
- Blank lines are skipped when the list is parsed, so a quick paste works without tidying.
- Sector labels are truncated by design; copy the full winner text from the result area.
Things to watch
- Weights are not percentages
Weights only describe a ratio and do not have to add up to 100. Two options at 1 each split the wheel in half, while 2 against 1 gives two thirds against one third. Convert your figures to a common base first if you prefer to think in percentages.
- Long labels get cut
A sector has limited room, so long text is shortened with an ellipsis on the wheel. The full wording appears in the result area. Short option names, or a quick copy from the result area, keep the draw readable at a glance.
- History lives in the tab
The last five rows sit in page memory. A refresh or a closed tab clears them, and nothing is written to local storage. Copy the winner first, or note it down, if you need a lasting record of a draw.