Skip to main content
CaseSwitch

Spin the Wheel

Spin the Wheel is a browser prize wheel for names, tasks, and yes-or-no calls. Slices can be weighted, removed after a win, or hidden until the pointer stops. The draw uses crypto.getRandomValues() and stays on this device.

Written by the CaseSwitch editorial team. We maintain these tools in the browser so drafts, keys, and images stay on your device.

Last reviewed: 1 November 2026 · How we test these tools

Examples

Equal yes / no / maybe

Input

Yes | 1
No | 1
Maybe | 1

Output

Each slice is about 33% of the circle. One spin returns exactly one of those labels.

Weighted raffle

Input

Grand prize | 1
Small prize | 4
Try again | 5

Output

Grand prize is about 10%, small prize about 40%, try again about 50%.

Disabled row

Input

!Ada | 1
Grace | 1
Alan | 1

Output

Ada is kept in the list but omitted from the wheel until the row is enabled again.

Two unique winners

Input

winners: 2 · elimination on
Red | 1
Blue | 1
Green | 1

Output

The wheel spins twice. The first winner is disabled before the second spin, so the two labels differ.

Custom color

Input

Pizza | 2 | #e11d48
Salad | 1 | #16a34a

Output

Pizza takes about 67% of the wheel and uses the hex color on that row.

How to use

  1. Add a row per choice, or load a preset. Optional text form is Label | weight | #hexcolor, with ! before a row to disable it.
  2. Set spin time, how many winners, and whether a winner is removed. Turn on sound, confetti, or hidden labels if you want them.
  3. Spin from the hub, the button, or the Space key. Copy the result, download the wheel as a PNG, or export the history.

What this tool is for

A spin wheel is a visual draw: each slice is one choice, the pointer is fixed at the top, and the wheel turns until one slice stops under it. This page is for classrooms, standups, dinner debates, and informal raffles where people want to see the odds, not only a name printed in a box. Weight changes how wide a slice is and how often it wins. Equal weights mean equal chances. A slice marked 1 next to a slice marked 4 wins about one time in five.

How it works

Enabled rows with a label and a weight above zero become slices. Their widths share the circle in proportion to those weights. A spin draws one ticket with crypto.getRandomValues(), maps it onto the weight total, and computes a clockwise rotation that parks that slice under the pointer, inset from the borders so the result is not a coin-flip on the line. Extra full turns are only animation. Elimination disables the winner before the next spin in the same run. Mystery mode paints question marks during the turn and reveals the label when it stops. The list, settings, and the last fifty results are stored in local storage on this browser.

When to use it

Use it to pick a speaker, assign a chore, choose dinner, split people into colored teams, or run a small raffle where one prize should be rarer than another. Presets cover yes/no, a coin, weekdays, numbers 1–10, and a weighted grand-prize / small-prize / try-again layout. Space spins when focus is not in a text field. You can also click the hub.

When not to use it

Do not use it for a licensed lottery, a legally binding selection, or any draw that needs a signed audit log. Do not put private health or account data on the slices if the screen might be shared or screenshotted. Local storage survives refresh on this device; it is not a backup and not hidden from someone who uses the same browser profile.

How it compares to related tools

The Random Choice Generator prints winners from a pasted list without a wheel, weights, or animation. The Random Number Generator is the right tool when the options are already a numeric range and you do not need labels. The Random Letter Generator only emits alphabet characters.

Common mistakes

Leaving a header row enabled so “Name” can win. Setting a huge weight and then forgetting the percent column. Promising unique winners while elimination is off, which allows the same slice twice in one run. Editing the list after you have shown the room a result. Treating a screenshot as proof that the draw was fair — the page can show the percent at the moment of the spin, but it does not notarize it.

Weights, percents, and ties

The percent beside a slice is its weight divided by the total of enabled weights, rounded for display. Two slices can show the same rounded percent and still differ by a fraction of a percent in the draw. A weight of 0.1 is the minimum the row editor will keep; blank weights in the text import become 1. Duplicate labels are allowed and are called out so you do not think two “Alex” rows are one person.

What stays on this device

Spins, the entry list, and history use this browser only. CaseSwitch does not receive the names. Clear site data, or use Clear saved wheel, to drop the local copy. Download PNG saves the current circle, not a video of the spin. Sound is synthesized in the tab; there is no audio file to fetch. If the system asks for reduced motion, the wheel jumps to the winner instead of turning.

Frequently Asked Questions

Does a bigger slice really win more often?+

Yes. The ticket is drawn across the total weight, then the wheel is animated to that slice. Spin speed does not change the odds.

Can the same person win twice?+

If elimination is off, each spin in a multi-winner run is independent, so repeats are possible. Turn elimination on to disable a winner before the next spin.

Where is my list saved?+

In local storage for this site on this browser. It is still there after refresh. It is not uploaded, and it is not synced to another device.

What if I only have one slice?+

The wheel still spins and that slice wins. Add another enabled row if you wanted a real choice.

Can I hide the names until it stops?+

Yes. Hidden labels paints a question mark on every slice during the spin, including while the wheel is idle, and reveals the winner when the pointer stops.

Is this a legal raffle?+

No. It is a classroom and party picker. It does not sell tickets, record entrants, or produce an official draw certificate.

Are these values cryptographically secure?+

Random generators use crypto.getRandomValues() in your browser for secure randomness where supported.

Related tools