Coin Flip Wheel
Heads or tails without the coin: 2 segments of 180° each, and a draw of exactly 50% per face made from cryptographic random bytes before the wheel starts turning. There is no launch side, no catch, and no surface to favor — and every figure on this page is computed at build time by the same engine that runs the wheel.
Spin: heads or tails
Two segments, 180° each. Call it before you press Spin — the draw happens on the press.
Read next: Wheel versus coin versus dice sets this wheel beside a physical coin and a die and explains what changes between them. Every guide is listed under Guides.
The coin flip, minus the coin
The preset list has 2 entries, Heads and Tails, in that order. The engine divides the circle into 2 equal segments of 180° apiece: Heads runs from 0° to 180° with its midpoint at 90°, and Tails from 180° to 360° with its midpoint at 270°, measured clockwise from the pointer. The midpoint is the angle the pointer stops on after a win: the engine picks an index first, then hands the presentation layer that segment's midpoint to decelerate onto. Kickoffs, who goes first, who takes the last one, who drives — the call is the same two-way call it always was, but the verdict is drawn by a documented mechanism, and the spin history under the wheel keeps the record of the session. The list is editable like every preset on the site; whatever is in the entries box is what the segments are recomputed from.
How a two-entry draw is made
When you press Spin, the engine asks the browser's cryptographically secure generator
for random bytes and maps them onto the entries by rejection sampling. It takes the
minimal number of bits whose range covers the entry count, masks away the excess top
bits, and discards any candidate at or beyond the count rather than taking a remainder.
For 2 entries that is 1 bit: the mask keeps only the lowest bit of
the byte, so the candidate is either 0 or 1, both below 2, and nothing is ever
discarded. A scripted byte source makes this demonstrable. Replaying the byte 200,
whose lowest bit is 0, the engine returns Heads and a landing angle
of 90°; replaying 77, whose lowest bit is 1, it returns
Tails at 270°. Running every one of the 256 possible
byte values through the same spin function at build time maps 128 of them
to Heads and 128 to Tails, with
0 rejected — equal counts, which is what "exactly 1/2"
means in practice. The scripted bytes exist only for illustration; a live spin draws its
bytes from crypto.getRandomValues.
The pick precedes the animation
The draw is complete the instant you press. Only then does the wheel begin its roughly four-second, ease-out rotation, calculated to stop with the winning segment's midpoint under the pointer. Nothing about the wheel's resting position, the timing of your press, the deceleration curve, or any previous spin influences the result — which is why the hint above the wheel says to call it before you press. A common misreading is to watch the wheel slow down and conclude that it "nearly" landed on the other face. There is no nearly: the landing angle was fixed before the first frame was drawn. If your system asks for reduced motion, the animation is skipped and the identical draw is announced immediately, which shows that the spinning was never the deciding part.
What a fair run of flips looks like
Each spin is an independent draw: the engine keeps no memory of earlier results and takes no input from them, so a face that is "due" is not a concept it has. That independence is what produces streaks. With 2 equally likely faces, the probability that 5 consecutive spins all land on Heads is 1/ 2 multiplied by itself 5 times — 3.13%, or one run in 32 — and 10 in a row comes out at 0.10%, one run in 1024. Both figures are computed in this page's build from the engine's segment count, not typed in. After 5 heads, the next spin is still exactly 50% for either face. Reading a streak as evidence of bias is one misreading of a fair draw; reading it as a reason the other face is owed is another. Here is what a short session looks like when the bytes are scripted for illustration — 42, 17, 8, 255, 100 — and replayed through the engine, in the form the spin history uses:
- Spin 1: Heads
- Spin 2: Tails
- Spin 3: Heads
- Spin 4: Tails
- Spin 5: Heads
Editing the list: a three-sided coin
The entries box takes one entry per line, and a single line containing commas is split
on the commas instead. Typing Heads, Tails, Edge on one line gives
3 entries; the same three on separate lines give
3. Either way the engine recomputes the geometry: 3
segments of 120° each, and every entry — Edge included — wins with probability
33.33%. Three entries also show rejection sampling doing real work. The mask now
keeps 2 bits, so a byte becomes one of 4 candidate values, and
the candidate 3 is at or beyond 3 and is discarded. Scripting the
bytes 7 then 2: the first masks to 3 and is
rejected, the second masks to 2 and lands on Edge, and
the engine asked for bytes 2 times to get there. Across all
256 byte values, 64 are rejected on the first draw and
the remaining 192 split 64, 64, 64 between
Heads, Tails, Edge — equal, which taking a remainder would not give.
The related misreading is a duplicate. Paste Heads, heads, and
Tails on three lines and the parser returns 3 entries,
because a duplicate is a second segment, not a second label: the two Heads segments
together hold 66.7% of the wheel against 33.3% for Tails.
Tick "Remove duplicate entries" and the same input returns 2
entries — the comparison is case-insensitive and the first occurrence wins. For a
serious three-way answer rather than a joke edge, the
Yes or No Wheel has a Maybe toggle.
The history is the record
Every spin appends a line to the spin history under the wheel in the form shown above — the spin number and the face — with the newest line at the top, and the result box announces the winner as text, so there is nothing to squint at and nothing to argue about. That makes a best-of-three a matter of reading three lines rather than remembering them. The history exists only on the page: it dies with the tab, and the Clear history button empties it sooner. A list you have edited is different. It is saved in your browser's local storage so it survives a reload — on your device and nowhere else — and Reset list puts the preset back. No spin, result, or list is transmitted; open your browser's network tab and spin to check.
Eliminator mode and share links for two entries
This page's wheel does not offer the eliminator toggle, but the
custom wheel does, and a two-entry list is the shortest illustration of
what it means. Each eliminator spin removes the pick from the wheel, and the last entry
standing wins; with 2 entries the first spin is also the last. Replaying the
byte 77 through the engine's eliminator eliminates Tails and
declares Heads the winner, and a further spin on that finished state is
refused with the message "This elimination is finished — reset to run it again." Every entry survives with probability 1/
2 — the same 50% as a plain spin, with the reading inverted. Share
links work the same way on every wheel: Copy share link percent-encodes the entries and
joins them into the page address as a fragment. For the three-sided list above the link
is https://spinthatwheel.net/coin-flip-wheel/#items=Heads|Tails|Edge — 16 characters after #items=
against a cap of 1800. Browsers do not include fragments in web
requests, so opening the link rebuilds the wheel locally; a damaged link is reported as
damaged, and older ?items= links still open.
Where the wheel stops
A wheel holds at most 100 entries of at most 80 characters, and crossing either cap produces an error rather than a silent trim. Pasting a 101-line list returns "A wheel holds at most 100 entries — this list has 101. Remove some entries; nothing was silently dropped." and a single entry of 81 characters returns "Entries are limited to 80 characters — "HHHHHHHHHHHHHHHHHHHH…" is too long to fit on a segment." Those messages are the engine's own, captured at build time. The wider limit is the one the methodology page states: this randomness is cryptographically strong, but the site is not a certified gambling or raffle system — there is no auditor, no seed escrow, and no protection against someone re-spinning until they like the result. For a kickoff among people who trust each other's screens it does the job; for money-staked drawings it is the wrong tool.
Related wheels
The Yes or No Wheel is the same 50/50 draw framed as an answer, with an optional Maybe. Decision-specific variants: Go or Stay and Accept or Decline. For six outcomes instead of two, spin the Dice Wheel. To choose between a wheel, a coin, and a die, read Wheel versus coin versus dice; the full mechanism is on the methodology page.
Frequently asked questions
Is this fairer than a real coin?
This wheel draws heads or tails from cryptographic random bytes with exactly equal probability — 50% each — and there is no launch side, catch, or surface to favor. The draw is made before the animation starts, and the animation cannot change it. That is the whole claim this page makes, and the methodology page documents it.
Heads came up five times in a row. Is it broken?
No. Each spin is an independent draw, so a run of 5 identical faces has probability 1/2 multiplied by itself 5 times: 3.13%, or one run in 32, computed at build time from the engine's segment count. Runs like that arrive in any long session. After 5 heads the next spin is still exactly 50% for either face — the wheel never owes you a tails.
Why use a wheel instead of just flipping a phone app coin?
Two honest reasons: the spin history keeps a visible record (decisive for best-of-three arguments), and the result is announced as text — no disputes about which side is showing at a glance. Mechanically it is the same fair two-way draw, and the mechanism is documented rather than assumed.
Can I make it three-sided?
Edit the list — add "Edge" for the joke, or use the Yes/No wheel’s Maybe toggle for a serious three-way. Whatever the list, every entry stays exactly equally likely: with 3 entries each holds 120° of the wheel and wins 33.33% of the time.
Does when I press, or where the wheel is resting, affect the result?
No. The winner is drawn the instant you press Spin; the rotation that follows is calculated to stop on the segment that already won. The resting position, the timing of the press, and previous spins have no input. If your system asks for reduced motion, the animation is skipped and the same draw is announced immediately.
What does the spin history record, and does it persist?
Each spin adds a line with the spin number and the face, newest first. The history lives on the page only — it disappears when the tab closes, and Clear history empties it sooner. Your edited entry list is saved separately in your browser’s local storage, on your device, and Reset list restores the preset.
Can I share a coin wheel link, and what does it send?
Copy share link puts the current entries into the page address as a #items= fragment; the three-sided example on this page encodes to 16 characters against a cap of 1800. Browsers do not include fragments in web requests, so the recipient's browser rebuilds the wheel locally and the list is never sent to the server.
Why is there no eliminator toggle on this page?
With 2 entries, eliminator mode is a single spin: the pick is removed and the other face wins, which is the plain spin with the reading inverted. The custom wheel on the landing page offers the toggle for longer lists, where each spin removes one entry until a single survivor remains.
Games and tie-breaks only: fair enough for kickoff, not certified for wagers. Everything runs locally in your browser — details on the methodology page.