Go or Stay Wheel
It's 7pm, the invitation is open, the couch has opinions. Two segments — Go and Stay — one fair draw, and the debate is over either way. The same go-or-stay wheel settles any version of the call: stay at the party or go, take the offer or stay put, leave early or see it through.
Spin: go out or stay in
Commit to obeying it before you spin — or use the result as a gut check. Both are legitimate.
The 50/50 problem, and the 50/50 solution
Genuine ambivalence is the signature of a decision where both options are good enough — and those are exactly the decisions that eat the most time, because no amount of reconsidering makes one option pull ahead. Flipping for it is not flippant; it is the recognition that you have already done the analysis and it came out even. The wheel adds one thing a mental coin flip lacks: a moment of committed suspense during the deceleration, which is when preferences you did not know you had tend to speak up.
What the engine does with two entries
The preset list on this page is exactly 2 entries: Go and Stay. The
engine's computeSegments divides the circle into 2 equal segments of 180° each, in list order — Go runs from 0° to 180° with its midpoint at 90°, and Stay from 180° to 360° with its midpoint at 270° — and
each entry wins with probability 1/2, which is 50%. None of those figures is
typed into this page; every one is computed while the page is built by the same engine that
runs the wheel above. The
Yes or No Wheel runs the same 2-segment draw over the
same geometry; swap the two labels and the engine cannot tell the pages apart.
When you press Spin, the engine does not consult the picture at all. It asks
crypto.getRandomValues for 1 byte, keeps only the lowest 1 bit — the minimal number of bits whose range covers 2 entries — and uses the value as the
winning index. Only then does the roughly four-second, ease-out rotation begin, calculated to stop
with that segment's midpoint under the pointer. Scripted bytes make the mapping reproducible: fed
the byte 200, the engine picks index 0, Go, with a target
angle of 90°; fed the byte 201, it picks index 1, Stay, target 270°; fed the byte 7, it also
picks Stay, because only the lowest bit of the byte is read. Those three draws
were run through the real engine while this page was built. A live spin draws from the
browser's cryptographically secure generator instead of a script; everything after the byte is
identical. And on a 2-entry wheel there is nothing for rejection sampling to reject:
after masking, no candidate can exceed 1, so every candidate is below 2.
If you would rather check that than take it on trust, the guide Is the wheel rigged? How to check walks through what to look for on your own screen. The short version, from the methodology page: the pick precedes the animation, reduced motion shows the same draw without any animation, and the network tab shows no request carrying your entries.
Tilting the odds by repetition
The wheel has no weights, sliders, or hidden multipliers. What it has is an editable list, and
the engine counts entries, not labels. Type the list Go, Go, Stay and
computeSegments builds 3 segments of 120° each. The 2 segments labelled Go together cover 240° of the circle, and because the draw
is uniform over 3 indexes, Go wins with probability 2/3, or 66.67%, and Stay with 1/3, or 33.33%. The tilt is exactly the ratio of copies, and it is painted on the wheel where everyone
deciding with you can see it.
Two more lists, computed the same way. Go, Go, Go, Stay gives 4 segments
of 90°, so Go wins 75% of the time and Stay 25%. Tilt the other way with Go, Stay, Stay, Stay, Stay — 5 segments of 72° — and Go drops to 20% while Stay rises to 80%. The rule
in every case is copies of a label divided by total entries, so a tilt is always a
whole-number ratio, and the 100-entry cap bounds how fine that ratio can be.
Repeated labels stay visually distinct: colours cycle through the engine's fixed palette
segment by segment, with one adjustment so the last and first segments never match, so no two
adjacent segments share a colour even when they share a label.
One switch can quietly undo a tilt if you let it: Remove duplicate entries.
The parser's dedupe option is case-insensitive and keeps the first occurrence, so the 3 lines
Go
,
go
,
Stay
parse to 3 entries with the switch off and 2 — Go and Stay — with it on. Leave the switch off when the repetition is deliberate.
Where rejection sampling starts to matter
With 2 entries there is nothing to reject; with 3 there is. The engine needs
2 bits to cover 3 indexes, and after masking a byte down to those
bits the candidate can be as large as 3 — but 3 is not below 3,
so the engine discards that candidate entirely and draws a fresh byte. It never takes a
remainder: the naive alternative, value % N, silently favours low-numbered
segments whenever the byte range does not divide evenly, and this engine does not do it.
Scripted bytes show the redraw happening. Feed the 3-entry wheel the byte 7 and then the byte 2: 7 masks to 3, which is rejected; 2 masks to 2, which is accepted, and the winner is index 2, Stay, at 300°. The engine asked the byte source 2 times to get there. Feed it 11, then 7, then 1, and it asks 3 times — 2 rejections — before accepting the 1 and picking index 1, Go. Because the mask keeps the acceptance rate above half, redraws are rare and a live spin stays instant.
Eliminator mode on a two-entry wheel
This page does not show the eliminator toggle, and the engine explains why. Eliminator mode
removes each spin's pick and crowns the last entry standing; on a 2-entry wheel that
is the same draw read backwards, because the first pick leaves exactly one survivor. Run it
through the engine anyway: createEliminator on Go and Stay starts with
2 remaining and 0 eliminated; one scripted
spin with the byte 1 picks index 1, Stay, removes
it, and the state is done with Go as the winner after 1 elimination. Each entry survives with probability exactly 1/2. The toggle is offered
on the custom wheel and on the longer preset wheels — the
Number Wheel, Food Wheel,
Dice Wheel and others — where lists are long enough to need it.
Eliminator mode also respects a tilt. Start it on Go, Go, Stay: the first
spin is a uniform draw over 3 entries, the second over 2.
Scripted, the byte 2 removes Stay and leaves Go and Go; the byte 0 then removes one Go, and the survivor
is Go. Every entry survives with probability exactly 1/3, so the 2 entries labelled Go produce a Go survivor 66.67%
of the time — the same odds as a single spin of the same list. Elimination states are
immutable values in the engine, and editing the list mid-elimination restarts the elimination
on the new list.
Editing the list: what the parser does
The entries box accepts one entry per line. A single line that contains commas is split on the
commas instead, so Go, Stay parses to 2 entries, Go and Stay. Multi-line input keeps its commas: the lines Go out and
Stay in, order food parse to 2 entries, and the second is still
Stay in, order food, comma included. Entries are trimmed and blank lines are dropped.
The caps are honest errors, not silent trims. A list of 101 numbered entries is refused with the message “A wheel holds at most 100 entries — this list has 101. Remove some entries; nothing was silently dropped.” An entry of 93 characters — over the 80-character limit — is refused with “Entries are limited to 80 characters — "Go out to the new pl…" is too long to fit on a segment.” Nothing is truncated in either case; fix the list and spin. Reset list restores Go and Stay. Your edited list is saved in this browser's local storage so it survives a reload — on your device, removable with Reset or by clearing site data — while spins and the history list exist only on the page and die with the tab.
Sharing a tilted wheel
Copy share link encodes the current list into the page address as a
#items= fragment, each entry percent-encoded and joined with |. For
Go, Go, Stay the engine produces https://spinthatwheel.net/go-stay-wheel/#items=Go|Go|Stay — 57 characters, of which the encoded list is 10, against a cap of 1800 on the encoded list. Spaces are encoded rather than lost: Go out, Stay in
becomes Go%20out|Stay%20in. Browsers do not include fragments in web requests, so
whoever opens the link rebuilds the wheel locally without the list reaching the hosting
server. Legacy ?items= links are still accepted, an over-long list gets an honest error
instead of a truncated link, 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 a result, and it cannot: spins and history live on the page and die with the tab. If a group wants one binding spin, share the list, have one person spin while the others watch, and treat that as the draw. There is no protection against someone re-spinning until they like the answer — the methodology page says so directly — so this is a tool for people who trust each other's screens.
How to read the result — and how not to
The result line under the wheel announces the winning label; the rotation that follows is calculated to stop with the winning segment's midpoint under the pointer. With reduced motion enabled on your device, the animation is skipped and the identical draw is announced immediately. Several readings of a spin are wrong, and each comes from treating the drawing as the draw.
- “It only just landed on Stay.” There is no near miss. The index was drawn before the wheel moved, and the pointer stops on the winning segment's midpoint — 270° for Stay on the preset — not wherever the deceleration happened to run out.
- “Stay three times in a row — Go is due.” Each spin is an independent draw. The chance of 3 Stays in a row on the preset is (1/2) to the power 3, computed here as 12.5%, and the next spin is still 50% either way. Nothing about a previous spin, the wheel's resting position, or the timing of your click reaches the draw.
- “Go is first on the list, so it must be favoured.” List order sets where segments are painted, not how likely they are. The engine draws an index uniformly, and index 0 is exactly as likely as index 1.
- “A tilted wheel is a rigged wheel.” A tilt is visible: every extra Go is a painted segment, and the share link exposes the exact list. Rigging would mean a draw that differs from the picture; this engine's draw is the picture's own index count.
For groups: spin once, no appeals
The go-or-stay debate gets worse with more people, because nobody wants to be the one who dragged everyone out or kept everyone home. Delegating to the wheel removes the blame entirely — agree on one spin, no best-of-three, and screenshot-worthy history if anyone claims the result was different. If the group obeys the wheel and the evening flops, the wheel takes the blame. That is what it is for.
Related wheels and guides
Once you are going out, the Food Wheel decides where the evening eats. The general-purpose version of this draw is the Yes or No Wheel, and for invitations specifically there is the Accept or Decline Wheel. To check the draw for yourself, read Is the wheel rigged? How to check; the other guides cover the rest of the mechanism.
Frequently asked questions
Why does "go out or stay in" deserve its own wheel?
Because it is a low-stakes decision that gets relitigated over and over: the invitation is fine, the couch is fine, and you can argue either side for an hour without new information appearing. That is precisely the situation where a random tiebreaker is rational — the options are near-equivalent, so the cost of choosing randomly is almost zero and the cost of deliberating longer is the whole evening.
Does the go-or-stay wheel work for any decision, not just going out?
Yes. Go and Stay are generic enough to cover every version of the choice — stay or go, go or don’t go, leave or stay — so the same two-segment draw settles whether to leave a party, accept a move, or stick with a plan. The list is editable, so rename the two entries if you want the segments to read in your exact words.
What if the wheel says Go and I really don’t want to?
Then you have your real answer, and it cost one spin to find. The wheel’s verdict and your reaction to it are two separate readings — the second one is the more honest. Decline the invitation with a clear conscience; the wheel takes no offense.
Can I tilt the odds toward going out?
Transparently, yes: the list is editable, so "Go, Go, Stay" gives going a visible 2-in-3 chance — 66.67%, computed by the engine at build time. The wheel shows the bias to anyone watching — a fair way to say "I mostly want to go, but I’m leaving fate a veto".
Is this the same as the Yes/No wheel?
Mechanically identical — a uniform two-way draw. The framing is the feature: when the question is specifically about leaving the house, segments that say Go and Stay read instantly to everyone deciding with you.
Is Go more likely because it is listed first?
No. The engine draws a segment index uniformly at random from 2 indexes, so index 0 and index 1 are equally likely at 50% each. List order only decides where each segment is painted on the circle.
Why is there no eliminator toggle on this page?
Eliminator mode removes each spin’s pick and keeps the last entry standing. With 2 entries the first spin already leaves one survivor, so the mode would be the ordinary draw read backwards — the eliminated entry loses and the other wins. The toggle is offered on the custom wheel and on the longer preset wheels — the Number Wheel, Food Wheel, Dice Wheel and others — where lists are long enough for it to mean something.
Does ticking "Remove duplicate entries" affect a tilted list?
Yes — it collapses the tilt. Dedupe is case-insensitive and keeps the first occurrence, so the 3 lines Go, go, Stay become 2 entries, Go and Stay. Leave the switch off when repeated entries are deliberate.
Can I send the spin result to the friend I am deciding with?
The share link carries the list, not the result: spins and history stay on the page and disappear when the tab closes. Send the link so both of you see the same wheel, then spin once while the other watches. The list travels in the address fragment, which browsers do not include in web requests.
A tiebreaker, not a therapist: the wheel settles ties between fine options; it cannot weigh what matters to you. The draw runs locally in your browser — see the methodology page.