Is the Wheel Random? How Picks Work, Plus a Test

Yes. The wheel on this site is random: each winner is drawn with your browser's cryptographic random number generator before the wheel starts to turn. Test it on your own list.

Run the fairness test

Type your own entries, press Run, and watch thousands of picks land where the odds say they should.

Add a comma and a number to set a weight, such as “Kenji, 4”. Weights run from 0.01 to 1,000. Repeated names are counted together. Up to 100 lines.
Number of picks

Nothing is uploaded. The test runs in your browser.

Press Run to start. The lines on the chart show how many of 10,000 picks each entry should get. Bars for the actual counts appear after the run.

Expected picks for each entryAva: 1,250 expected; Mateo: 1,250 expected; Priya: 2,500 expected; Kenji: 5,000 expectedAvaMateoPriyaKenji
Show the numbers as a table
Actual and expected picks per entry, 10,000 picks
EntryWeightChanceExpectedActualDifference
Ava112.5%1,250––
Mateo112.5%1,250––
Priya225%2,500––
Kenji450%5,000––

How the wheel picks a winner

The wheel draws the winner first, in one random draw, and the spin animation only shows that result. Every spin on Wheel Spinning follows the same 5 steps:

  1. The wheel turns every visible entry into a slice with its weight. Hidden entries and entries knocked out in Elimination mode get no slice.
  2. Your browser's crypto.getRandomValues supplies 2 random 32-bit numbers, which become a fraction between 0 and 1 with 53 bits of precision.
  3. The fraction is scaled to the total weight, and the slice it falls in wins. A slice with weight 2 covers twice as much of that range as a slice with weight 1.
  4. A second random fraction picks the landing spot inside the winning slice.
  5. The wheel turns for the spin time you set, from 1 to 60 seconds, and stops on that spot. With reduced motion turned on in your device settings, the spin is shorter.

Nothing during the animation can change the winner. Spin time, slow spin, the wheel's starting position and the Stop button only change how the result is shown.

What crypto.getRandomValues is

crypto.getRandomValues is the cryptographic random number generator built into modern browsers. The W3C Web Cryptography API Recommendation describes it as a cryptographically strong pseudo-random number generator seeded with truly random values. Browsers also offer Math.random, but MDN's reference warns that it does not give cryptographically secure numbers.

The 2 random sources in a browser, and where this site uses each
SourceBuilt forUsed on Wheel Spinning for
crypto.getRandomValuesSecurity code, where numbers must be impossible to guessEvery pick, every shuffle and every landing spot
Math.randomGeneral use, with no security promiseConfetti and sound effects only, never a result

Is the wheel truly random?

Yes, in the way that matters for a fair draw: nobody can predict or choose the result, even though a browser does not measure physical randomness. A cryptographically secure pseudo-random number generator (CSPRNG) is an algorithm that stretches a small, unguessable starting value into a long stream of random numbers. That starting value, the seed, comes from unpredictable data your device collects, known as entropy.

A "true" random number generator measures a physical process, such as electrical noise. The IETF guide RFC 4086, Randomness Requirements for Security, covers both kinds. It explains that a good generator can stretch one strong seed into many cryptographically strong random values while its workings stay hidden. For a wheel, unpredictability is the test that counts, and it holds for this website too: no server sees or picks the next result.

How the wheel avoids rounding bias

The wheel removes the small biases that simple code introduces, using rejection sampling for whole numbers and a 53-bit fraction for weighted picks. A random 32-bit number has 4,294,967,296 possible values. Split among 3 entries with a plain remainder, 1 value is left over, so the first entry gets 1 more possible value than the other 2.

Rejection sampling throws away any draw that lands in that leftover block and draws again. Every entry then gets exactly the same number of possible values.

Techniques that keep every draw even
TechniqueUsed forWhat it prevents
Rejection samplingWhole-number draws, such as shuffling the listModulo bias, where some results get an extra chance in a few billion
53-bit fractionWeighted picks and the landing spotRounding error: each slice's chance matches its weight to far better than one part in a trillion
Fisher–Yates shuffleThe Shuffle buttonSome list orders coming up more often than others

Where the wheel stops inside the winning slice

The pointer always stops inside the winning slice, at least 12% of the slice's width away from either edge. The exact spot is random within the middle 76% of the slice. With 8 equal slices, each slice is 45 degrees wide, so the landing zone is the middle 34.2 degrees.

The margin keeps every result clear on a screen, a projector or a stream. It has no effect on the odds, because the winner is already drawn when the landing spot is chosen.

Does pressing Stop change the result?

No. Pressing Stop only brakes the animation, and the wheel still lands on the winner drawn when the spin began. The wheel slows down from its current speed and turns just far enough to reach the same landing spot. If the spin is almost over, Stop lets it finish.

Clicking the wheel, or pressing Space during a spin, works the same way as Stop. None of these actions draws a new number.

Can anyone rig a random wheel?

No. A random wheel on Wheel Spinning has no hidden setting that forces a winner, and weights are the only way to change the odds. 4 design choices keep the wheel fair and open to checking:

  • Visible weights. Each entry's chance appears as a percentage in the "Weights, colors & images" table. Weights run from 0.01 to 1,000.
  • Hidden means out. A hidden entry has no slice and no chance, so hiding never favors anyone in secret.
  • Open duplicate rules. A name typed twice gets 2 slices by default. Turning off "Count duplicates separately" gives repeated lines 1 shared slice.
  • No server in the draw. The pick runs in your browser, so the website has no way to steer a result.

For a giveaway, publish the entry list and any weights before the draw. Anyone can then load the same list into the main wheel and check every chance. The prize wheel shows each prize's odds as a percentage.

Why the same name can come up again

Every spin is independent, so the last winner keeps exactly the same chance on the next spin. The wheel has no memory of earlier results. Repeats feel suspicious, but with equal weights they arrive sooner than most people expect.

Chance of picking a name twice, with equal weights and no winners removed
Entries on the wheelChance of a repeat within 3 spinsSpins before a repeat is more likely than not
462.5%3
834.4%4
1028.0%5
2014.5%6
309.8%7
505.9%9
1003.0%13

Streaks are normal too. On a yes or no wheel with 2 equal slices, 10 spins contain a run of 3 or more identical answers 82.6% of the time. To stop a name winning twice, remove each winner or turn on Elimination mode. For a class list, the random name picker is built for calling on students.

How to read the 10,000-spin test

To read the 10,000-spin test, compare each entry's actual wins with its expected wins, then check the p-value for how unusual the gaps are. The test sends your list through the same weightedIndex() function the wheel uses. The expected count is the entry's chance multiplied by the number of picks. Kenji, with weight 4 out of a total weight of 8, should win 5,000 of 10,000 picks.

The test skips the animation and calls the pick function directly. Watching 10,000 five-second spins would take nearly 14 hours. Your entries stay in your browser the whole time.

Actual counts always differ a little from expected counts. With 2 equal entries and 10,000 picks, each entry lands between 4,900 and 5,100 wins 95.6% of the time.

The chi-square statistic adds up those gaps, each scaled by its expected count, into one number. The p-value says how often a perfectly fair draw gives gaps that large or larger:

How the page reads a p-value
p-valueReadingWhat it means
0.05 or moreTypicalGaps this size are common with a fair wheel. Nothing points to bias.
0.01 to 0.05A little unusualAbout 1 fair run in 25 (4%) lands here by chance. Run the test again.
Under 0.01RareAbout 1 fair run in 100 lands here. A real bias shows up again and again across repeated runs.

A p-value is not the chance that the wheel is fair. A fair generator gives p-values spread roughly evenly between 0 and 1, so an occasional low value is expected. When an entry expects fewer than 5 wins, the reading is rough; choose more picks.

Passing the test has a limit as well. RFC 4086 points out that passing statistical tests does not show whether numbers are unpredictable. Unpredictability comes from the generator itself, which is why every pick uses crypto.getRandomValues.

Questions about wheel fairness

Does hiding an entry change the odds for the others?

Yes. A hidden entry has no slice, so the entries left on the wheel split its share in proportion to their weights. With 5 equal entries, each has a 20% chance. Hide 1, and each of the other 4 has 25%.

Is a random wheel fair for a giveaway?

Yes, when the rules and the full entry list are public before the draw. Record the screen while you spin so entrants can watch the result. The guide on running a fair online giveaway covers each step.

Can the website see or change my result?

No. The pick happens in your browser. Your entries and results are not sent to Wheel Spinning, and the site has no accounts.

Does a longer spin make the result more random?

No. The winner is drawn before the wheel moves, so a 1-second spin and a 60-second spin are equally random.

Does the wheel's starting position matter?

No. The wheel works out the turn needed to reach the drawn landing spot from wherever it rests.

Why does one name seem to win more often?

Short runs swing a lot. With 4 equal names and 20 spins, each name expects 5 wins, yet any count from 2 to 8 happens 93.5% of the time. Over 10,000 picks, the shares settle close to the odds.

Do all wheels on the site use the same randomness?

Yes. Every wheel on Wheel Spinning, from the name picker to the team generator, draws from the same crypto-backed random module.

Sources: W3C Web Cryptography API Recommendation (January 2017), section 10; IETF RFC 4086, Randomness Requirements for Security (June 2005), sections 2 and 6; MDN Web Docs on Math.random. Checked October 2026.