Using the wheel for groups: classrooms, meetings, households

One wheel, one screen, a room watching it. That is the situation this guide covers: a teacher picking who answers next, a meeting host drawing an icebreaker, a household settling dinner or dealing out chores. What the room needs is a pick that is visibly fair to everyone watching, a way to make sure nobody is drawn twice when that matters, a record of what was drawn, and a way to hand the same list to a second screen. Each is a specific mechanism in the engine. Every figure below is computed at build time by the same engine that runs the wheels.

What the room is actually watching

When you press Spin, the engine draws the winner first, from random bytes supplied by the browser's cryptographically secure generator and mapped onto your list by rejection sampling, so every entry has exactly a 1/N chance. Only then does the roughly four-second ease-out rotation begin, calculated to decelerate onto the segment that already won. The animation is only the announcement of a pick that already exists; the moment of the click, the wheel's resting position and every earlier spin have no influence on it. If a viewer's system asks for reduced motion, the animation is skipped and the identical draw is announced at once. On the 6-name sample list the custom wheel opens with, each name occupies a 60° segment and wins with probability 16.67%.

Loading a roster

The entries box takes one name per line: paste a column of names and each line becomes a segment. If the roster arrives instead on a single line separated by commas — "Priya, Tomas, Wen, Adaeze, Luis" — the parser sees a single line containing commas and splits on them. Both pastes give the same wheel: the comma form parses to 5 entries, the line form to 5, and the two lists are identical.

The comma rule applies only when the input is a single line. Once a list spans several lines, commas stay inside entries, so a chores list beginning "Dishes, then wipe the counters" with 3 more chores beneath it parses to 4 entries, the comma still inside the first. Entries are trimmed of surrounding spaces and blank lines are dropped.

Two caps apply, and both fail loudly rather than quietly. A wheel holds at most 100 entries; feed it 101 and the error reads: “A wheel holds at most 100 entries — this list has 101. Remove some entries; nothing was silently dropped.” An entry may be at most 80 characters; a line of 87 produces: “Entries are limited to 80 characters — "Clean the fridge she…" is too long to fit on a segment.” Nothing is silently truncated.

Duplicate names

A roster assembled from two sources often lists someone twice, sometimes with different capitalisation. The Remove duplicate entries box beneath the list applies a case-insensitive dedupe in which the first occurrence wins. Take a paste of 7 lines in which two of the lines repeat an earlier name with different casing: unticked, the wheel has 7 segments and the repeated people hold doubled chances; ticked, the list collapses to 5 entries — Priya, Tomas, wen, Adaeze, Luis — because the later "Wen" and "PRIYA" match earlier lines once case is ignored. If the lower-case "wen" is the wrong label, fix it in the list; the dedupe does not judge spellings, it keeps the first. The switch is for one person listed twice, not for two people who share a name — those should stay two segments with distinct labels.

Eliminator mode: nobody is picked twice

A normal spin is an independent draw every time. The engine keeps no memory of who was picked, so a name drawn on one spin is exactly as likely on the next — 1/6, or 16.67%, on the sample list. Eliminator mode is the fix when that is wrong. Tick the box and each spin removes the picked entry from the wheel; the next spin is a fresh uniform draw over the entries still remaining — 1/N, then 1/(N−1), and so on — until one entry is left, which the status line reports as the winner.

Here is a complete run on the 6-name sample list, executed at build time by the real engine. The random bytes are scripted for illustration so the page can show the draw; live spins draw from crypto.getRandomValues.

Spin Names left before it Chance for each Eliminated Still on the wheel
1 6 1/6 = 16.67% Elena Alex, Bailey, Carmen, Devon, Farrah
2 5 1/5 = 20.00% Alex Bailey, Carmen, Devon, Farrah
3 4 1/4 = 25.00% Devon Bailey, Carmen, Farrah
4 3 1/3 = 33.33% Carmen Bailey, Farrah
5 2 1/2 = 50.00% Bailey Farrah

The run took 5 spins to reach a survivor, Farrah, and consumed 8 scripted bytes on the way: 3 of them fell at or beyond the number of names remaining and were discarded by the mask-and-redraw rule before the next byte was tried. That discard is why no name is favoured — the engine never takes a remainder.

Read the table from the room's side. Elena, eliminated first, has answered first or drawn the first chore; Farrah, the survivor, is the last to be picked or the one who escapes — settle which reading the room is using before the first spin. Every entry survives to the end with probability exactly 1/N — the same 16.67% each name started with — because each step is uniform over whatever remains. Editing the list while an elimination is running restarts it on the new list, and once the status line reports the run finished, unticking and re-ticking the box starts it over. The full mechanism is in the eliminator mode guide.

The spin history: a record that lives on the page

The page keeps a spin history — the spins made and their results — and in eliminator mode the engine keeps a second record of its own: each state holds the entries still remaining and the order in which entries were removed, which is how the run on the sample list can report its elimination order, Elena, Alex, Devon, Carmen, Bailey, and its survivor, Farrah. Both records exist only on the page. Unlike the list, which is saved to the browser and comes back after a reload, spins, results and history die with the tab, and an elimination in progress dies with it too. For a room that means the history is the record of who has answered, which chore went out or which question was asked, for as long as the tab is open and no longer — and only its most recent spins, since older lines drop off the visible history as new ones arrive. When the record matters — a drill that continues next lesson, a rota that has to be honoured — copy lines out as you go rather than at the end, or narrow the list itself by deleting the entries already used, since the list is the one thing the browser remembers.

How long the record runs is set by the engine: an elimination ends when one entry remains, so a full run over N entries is N−1 spins. Run at build time with scripted bytes, the 6-name sample list took 5 spins, the 26-letter preset takes 25 and the 50-state preset takes 49 — one spin per entry removed, and none for the survivor, who is never drawn.

Sharing a prepared wheel with a co-host

Prepare the list on one screen, press Copy share link, and the entries are percent-encoded and joined into the page address as a #items= fragment. For the 4-chore list above, the link is:

https://spinthatwheel.net/#items=Dishes%2C%20then%20wipe%20the%20counters|Vacuum%20the%20stairs|Take%20out%20the%20bins|Fold%20the%20laundry

The spaces and the comma inside the first chore have become percent escapes, so unicode, emoji and commas survive the trip. The encoded part is 107 characters against a cap of 1800; a list that would exceed the cap gets an honest error instead of a truncated link. Browsers do not include the fragment in web requests, so when your co-host opens the link their browser rebuilds the wheel locally without sending the list to the server, and a damaged link is reported as damaged rather than decoded into a garbled wheel.

The link carries the list and only the list. It does not carry the eliminator setting, the duplicate switch, an elimination in progress or the spin history; a co-host who opens it sees the identical entries and then ticks eliminator mode themselves.

Reset and what the browser remembers

The list you edit is saved to your browser's local storage so it survives a reload — on that device, under your control. Reset list discards the saved version and restores the page's preset; clearing site data does the same. What is not saved is anything about spins: results, history and a half-finished elimination are gone when the tab closes. Check the privacy claim yourself: open the browser's network tab, spin, and no request carries your entries. The only route a list takes off the machine is a share link you copy and send.

The question wheel for icebreakers

The question wheel ships with 25 original questions written for this site, one per 14.4° segment, each with a 4% chance per spin. Questions are lines like any other entry, so edit them freely; because the list spans many lines, a question containing a comma stays one question. Eliminator mode keeps a meeting from hearing the same question twice within a session, but the elimination dies with the tab while the list itself is saved — so for a standing meeting that wants no repeats across weeks, delete asked questions from the list itself.

The food wheel for households

The food wheel opens with 30 generic dinner suggestions at 3.33% each. They are editable starters; the page makes no claim about what anyone should eat. The protocol that suits a household is pruning before spinning: each person deletes the lines they will not eat, and the wheel is spun once over what is left. Prune to 6 options and each is a 60° segment with a 16.67% chance. Eliminator mode turns the pruned list into a no-repeat run of dinners, one per spin, in random order.

A custom wheel for chores

Chores go on the custom wheel, which accepts any list, and there are two ways to orient it. Put the chores on the wheel and spin once per person: with the 4-chore list, each chore is a 90° segment at 25%, and eliminator mode deals every chore out exactly once. Or put the names on the wheel, tick eliminator mode, and spin once per chore, so the same person cannot be drawn for two jobs.

Letters and states for drills

The two drill presets follow the same rules. The letter wheel carries 26 letters at 13.85° each; the wheel of US states carries 50 states, alphabetical, at 7.2° each. Eliminator mode works through either without repeats — 25 spins for the letters, 49 for the states, as the history section above sets out — and deleting lines narrows the wheel to the subset a lesson needs; the remaining entries stay exactly equally likely among themselves. The other mechanisms are covered in the guides index.

Frequently asked questions

Can I paste a roster straight from a spreadsheet column?

Yes. A column pastes as one name per line, and each line becomes one segment. If the roster arrives on a single line separated by commas instead, the parser splits on the commas — both forms of the 5-name example on this page parse to 5 entries.

Does eliminator mode carry over if I close the tab?

No. The list itself is saved in your browser and comes back after a reload, but spins, results, history and an elimination in progress exist only on the page and end with the tab. For no-repeats across sessions, delete the used entries from the list — the shortened list is what the browser remembers.

If I share the link, does my co-host see the same eliminated names?

No. A share link carries the list and only the list — not the eliminator setting, not an elimination in progress, not the history. Your co-host opens the identical entries and ticks eliminator mode themselves. Each browser draws its own random bytes on its own device; nothing about one screen's spin is sent to the other.

Two students have the same name — what happens?

The duplicate switch merges entries that match when case is ignored, keeping the first. That is right for one person listed twice and wrong for two people who share a name, so give them distinct labels — an initial is enough — before ticking the box.

How many people can go on one wheel?

At most 100. One more and the list is refused with an error that says exactly what happened — nothing is dropped behind your back. Split a larger group across two wheels.

Why was the same name picked twice in a row?

Because each spin is an independent draw with no memory of the last. On the 6-name sample list the chance that a spin repeats the previous result is exactly 1/6, or 16.67%, every time. Eliminator mode is the no-repeat setting.

Where is the record of who has already been picked?

On the page, and nowhere else. The spin history records the spins and their results, and during an elimination the engine's own state holds the entries still remaining and the order in which entries were removed — on the 6-name run above, Elena, Alex, Devon, Carmen, Bailey. Neither is saved: the list comes back after a reload, the history and the elimination do not. When the record matters, copy lines out as you go.

For fair turns and tie-breaks: the wheel decides fairly, but it cannot know your room — do not delegate consequential decisions to it. Everything runs locally in your browser; see the methodology page for how the draw works.