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.

Press “Spin the wheel”. The winner is drawn by cryptographic randomness the instant you press — the spin you watch is just the announcement.

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:

  1. Spin 1: Heads
  2. Spin 2: Tails
  3. Spin 3: Heads
  4. Spin 4: Tails
  5. 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.

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.