Wheel Spinner

Spin a wheel online with your own options and weights, smooth easing, an instant result copy and a short history.

One option per line. Write "Option,weight" to change the odds; a missing weight counts as 1.

Wheel preview

How to use

  1. Type one option per line. To give options different odds, write "Option,weight" such as "First prize,1".
  2. A bigger weight draws a bigger sector and wins more often. Options without a weight count as 1.
  3. Press "Spin" or hit the space bar. The wheel eases out for three to five seconds and stops on a random sector.
  4. The winner appears below and its sector stays highlighted. Press "Copy result" to copy the text.
  5. 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?
The script picks a winning index by weight first, then works out how far the wheel must turn to stop on that sector. Random values come from window.crypto.getRandomValues: a 32-bit integer is scaled to a decimal between 0 and 1. Everything runs locally in the browser.
How do weights relate to sector size?
Sector angles follow the same ratio as the weights. With weights of 1, 3 and 6, the sectors take one tenth, three tenths and six tenths of the full circle. The visible area matches the real chance of each option.
What does "Remove the winner after each spin" do?
The winning option is deleted from the list once the wheel stops. The wheel is then redrawn without it, so the same option cannot win twice. When fewer than two options remain, the spin button is disabled.
Are my options uploaded anywhere?
No. The option list, the winner and the last five history rows live in page memory only. A refresh or a closed tab clears them, and nothing is sent to a server or saved to local storage.

How to use

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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.

  2. 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.

  3. 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.

Related Tools