Spin Yes No

Yes or No Wheel

Spin a fair yes-or-no wheel with 2, 4, 6 or 8 segments, an optional Maybe wedge, and a running history with a tally -- every draw is crypto-secure and unbiased.

Press Spin to draw a result.

This is a fair coin, generalized: every segment is an exactly equal slice of the wheel, and which one wins is drawn with crypto.getRandomValues and unbiased rejection sampling -- not Math.random() and never a modulo shortcut that would quietly favor some segments over others.

How a spin is decided

Every segment on the wheel is an exactly equal slice: with N segments, each one gets exactly 360/N degrees, no more and no less. Choosing a winner is a single random integer draw from 0 to N-1 -- nothing about a segment's position, color, or label affects its odds.

winning segment = randomInt(0, segments − 1) — via crypto.getRandomValues + rejection sampling
landing point within that segment = randomFloat() — affects only where it visually stops
wheel rotation = derived FROM the winning segment, never the other way around

That last line is the part worth trusting: the spin animation is calculated backward from a result that was already decided before the wheel starts turning. There is no version of this tool where the visual spin computes a result -- it only ever displays one.

Each segment's exact odds

With the default 6 segments (Maybe off), Yes and No alternate evenly, so each label's true probability is:

LabelSegmentsProbability per spin
Yes3 of 650.00%
No3 of 650.00%

Worked example

Here's a real, reproducible run of the tool's own engine: 8 spins of the default 6-segment wheel, drawn with a fixed illustrative seed instead of live randomness so this page always shows the same numbers. Your actual spins above use real, non-repeating cryptographic randomness -- this table exists only to show the mechanism working.

Spin #Result
1No
2Yes
3Yes
4No
5Yes
6Yes
7No
8No

Tally: Yes 4, No 4 across 8 spins (6 equal segments underneath). This exact sequence is pinned and checked in the site's own test suite, so a future change to the engine can't silently drift this table out of sync with reality.

Frequently Asked Questions

Is the wheel rigged?

No. Every spin draws its winning segment with the Web Crypto API (crypto.getRandomValues), the same cryptographically-secure random source browsers use for things like generating encryption keys, run through unbiased rejection sampling rather than a plain modulo. Nothing about the outcome is predetermined, weighted toward any segment, or influenced by how long you've been spinning.

Why is rejection sampling necessary -- why not just use Math.random()?

Math.random() is not specified to be cryptographically random in every browser, and the common shortcut of mapping a random byte to a segment with '% segmentCount' is measurably biased whenever segmentCount doesn't evenly divide 256 -- some segments end up very slightly more likely than others. Rejection sampling discards the small sliver of draws that would introduce that bias and only keeps draws from a region that maps perfectly evenly, so every segment is exactly, not just approximately, equally likely.

Does turning on the Maybe wedge change the odds of Yes vs. No?

Slightly, yes, and it's worth knowing: with Maybe off, Yes and No always alternate in equal counts. With Maybe on, one slot that would have gone to the alternating pattern becomes Maybe instead, so at an odd segment count like 5 base slots, Yes gets 3 and No gets 2 before Maybe is added. If you need a strict 50/50 Yes/No with no skew, leave Maybe off.

Does the wheel work offline?

Once the page has loaded, yes -- every draw happens in your browser with no server round-trip, so it keeps working without a connection. Loading the page itself the first time still needs the internet, same as any website.

Does the spin animation ever disagree with the result?

It can't, by construction. The winning segment is drawn first, before any animation starts; the spin you see is calculated backward from that already-decided result to land the wheel exactly there. There's no code path that decides a result from where the wheel happens to stop.

My browser says it prefers reduced motion -- what happens?

The result appears instantly with no spin animation, since the fairness of the draw never depended on the animation in the first place -- reduced motion only skips the visual flourish.

Every result here is drawn live in your browser with cryptographically-secure randomness -- nothing is predetermined, saved, or replayable. See the Terms.

Every tool