How to use it
- Choose the entriesChoose how many equal entries the test wheel has, from 2 to 20. Equal slices are easy to judge; weights are covered by the automated checks described below.
- Run the spinsSelect 1,000, 10,000 or 100,000 spins and press Run the test. Each spin draws one entry with the same cryptographic picker the wheel uses, without the animation.
- Read the barsEach bar shows how often an entry won, as a count and a percentage. The line below gives the expected count and a chi-square verdict on the spread.
The short answer
Yes, when the spinner is built properly, a wheel is random in the strict sense: the chance of each entry is its share of the wheel and nothing else. That is a claim about code, and code can be tested. A wheel that cannot be tested, that never says how it picks, or that asks you to simply believe it, has not earned the word.
TwirlPick does three things you can inspect. It draws numbers from the browser's cryptographic generator instead of Math.random. It converts them into a choice without modulo bias. And it shows the odds on every spin, so a weighted wheel never hides that it is weighted. None of that proves anything to a skeptic by itself, which is why the page below lets you check.
Three words get mixed up in this debate. Random means each outcome follows its stated odds. Unpredictable means nobody can work out the next result in advance. Fair means the rules suit the people involved. A wheel can be random and still feel unfair, for example when the same student is picked twice in one lesson, so it helps to know which of the three you are really asking about. To see a fair pick put to work, run a draw with the giveaway picker and check it on the verify a draw page.
What happens when you press spin
The browser hands the page random bytes through crypto.getRandomValues, the source used for passwords and keys. Plain Math.random is fine for confetti but is not designed to resist prediction, so it is not used for picks.
Bytes have to become a choice. The naive way is to take a big random number and use the remainder after dividing by the number of entries. With seven entries and a range that does not divide evenly by seven, the first few entries would win slightly more often. TwirlPick avoids that with rejection sampling: any number that falls in the leftover tail is discarded and a new one drawn, so what remains maps evenly onto the choices. Weighted entries work the same way: weights become whole units, so *2 is two thousand units against one thousand, and one unbiased integer picks the unit. Wheels, shuffles, dice, coins, team splits and the test below all run this one picker.
For weights, each entry owns a stretch of the range in proportion to its weight, and the random point decides which stretch it lands in. The winner is fixed at that moment. The animation is then built to finish inside the winner's slice, at a random point away from the edges, so the picture always agrees with the draw.
The project has automated checks on this logic: a chi-square test for even wheels, a weighted wheel of 1:2:7 that must land within 1.5 percentage points of 10, 20 and 70 percent, shuffles that must place each item evenly in each position, and team splits that must never differ in size by more than one person. The live test on this page is the same idea, put in your hands.
Why a fair wheel still looks rigged sometimes
People expect random results to alternate. They do not. With eight equal entries, the chance that the same one wins twice in a row is 1 in 8, and over a class of thirty spins you should expect a repeat several times. A streak of three is rarer, about 1 in 64 for any given trio of spins, but across a long session it shows up.
A quick way to feel this: flip a coin thirty times and write down the results. Most people are surprised to find a run of four or five heads or tails, and many invent their own sequences with too few runs. Real randomness is lumpier than intuition, and a wheel spinner that never repeated a name would be the suspicious one.
The opposite error is just as common: after a name has not come up for a while, it feels due. A wheel has no memory, so a name that missed twenty spins has exactly the same chance on the twenty-first as at the start. If a group wants turns to be spread out, the honest answer is a different rule, not a different wheel: switch on everyone once before anyone twice, which deliberately trades pure randomness for fairness of turns.
Finally, small samples wobble. Ten spins of a four-entry wheel will often show one entry with four wins and another with one. That is not a sign of steering. It is why the test below goes to thousands of spins.
Reading the live test
Each bar shows how many times an entry won, and the line below the bars gives the count an even spread would produce. Bars will never match it exactly. What matters is how far they stray. For a result built from n spins and an entry with a share p, the typical gap is the square root of n times p times one minus p. The table shows that spread for eight equal entries.
More spins make the gap smaller as a share of the total, even though it grows in raw counts. At 100,000 spins every bar should sit within a fraction of a percentage point of the expected share.
The live test uses equal entries and the same picking code the wheel uses, so it checks the generator and the even case. Weights are covered by the automated checks described above: an entry written with *2 beside two plain ones owns half of the total, and the tests confirm that 1:2:7 lands near 10, 20 and 70 percent. On the live wheel you can see the weighted odds in the result of each spin.
| Spins | Expected wins per entry | Typical gap (one standard deviation) | Gap as a share of expected |
|---|---|---|---|
| 1,000 | 125 | about 10 | about 8% |
| 10,000 | 1,250 | about 33 | about 2.6% |
| 100,000 | 12,500 | about 105 | about 0.8% |
What the chi-square line means
Chi-square collapses all the bars into one number: how much the counts differ from the expected ones, scaled by the expected counts. Large numbers mean a lumpy spread. The test compares that number to a threshold chosen so that an honest generator crosses it rarely, at most about once in a thousand runs, which is the 0.1% line.
So if you see a failure, run it again. A single fail in a thousand is expected from pure chance; two fails in a row on the same settings would be a real surprise. On the other side, passing does not certify a wheel forever. It says that on this run the spread was consistent with the odds shown.
What a test cannot show
The test runs in your browser, on the code your browser downloaded, using the same picking function as the wheel. That makes it far better than a promise, but it is not a full audit. It cannot show how a different site behaves, and it cannot see inside a server-side draw that happens somewhere else.
That is the real difference between sites. A wheel that draws on a server is hard for anyone but its owner to check. A wheel that draws in your browser can be tested by you, with the developer tools open if you wish. And a verifiable draw goes a step further for giveaways: it fixes a fingerprint of the entries, waits for a public random value that did not exist yet, and derives the winner from both, so anyone can recompute it on the verify page.
Even then, a proof cannot show that an organizer did not run the draw several times and keep the result they liked. Publish the round number or the proof link before the draw, and the audience can see it was the only one.
There is also the question of the device itself. If someone controls the browser that runs the wheel, they control what it shows, which is true of every client-side tool. For a live stream or a class, the simplest protection is to run the draw in front of people, on a screen they can see, with the entries visible before the spin.
Questions to ask any spinner
Does it say what random source it uses? Can you see the odds of each entry, including weights? Is the result chosen before the animation or does the pointer decide? Can you test it in volume? For a prize or a giveaway, is there a way for outsiders to confirm the winner? A site that answers all five plainly is worth trusting more than one that only says fair.
If you manage a class, add a sixth question: does the tool let you control repeats? Fair turns and random draws are different goals, and a good tool lets you choose.
For giveaways the questions change. Who can see the entry list before the draw? Is the list fixed at the moment of the draw? Can a third party recompute the result? A raffle that fails these tests can still pick a legitimate winner, but nobody else has a reason to believe it. Also keep local rules in mind: if entrants pay to join, a draw can count as a lottery, and platforms have their own contest rules.
Questions
Is spin the wheel random?
In TwirlPick, yes: each pick comes from the browser's cryptographic generator and is mapped to an entry without modulo bias. The chance of each entry equals its share of the wheel, and that chance is shown. You can confirm the spread yourself with the test on this page.
Can a wheel spinner be rigged?
Any software can be built to cheat, so the useful question is whether you can check it. This wheel draws in your browser, shows odds, and offers a test and verifiable draws. A closed wheel on someone else's server cannot be checked the same way, and a rigged version would not tell you.
Why did the same name come up twice in a row?
Because random draws have no memory, and past spins do not change the odds of the next one. With eight entries, a repeat happens about once every eight spins on average. If you want turns spread out, switch on Everyone once before anyone twice, which holds a name back until all others have been picked.
What does a failed chi-square result mean?
The threshold is set at 0.1%, so an honest generator fails at most about once in a thousand runs. Run the test again. Repeated failures on the same entries would deserve a closer look; a single failure in a long session is ordinary statistics and not a warning sign.
How does a random picker work?
It gets random numbers, maps them onto the list in proportion to the weights with rejection sampling, so no entry is favored, and announces the winner. Animation, sound and confetti are added afterward for the audience and do not influence the choice in any way.
Is the wheel animation fixed to a result?
The result comes first and the animation follows. The wheel is turned so that the pointer finishes inside the winner's slice, at a random position within it, which keeps the pointer away from the borders between slices. The spin time changes the length of the show, not the odds.
Can I trust a giveaway done on a wheel?
Use a verifiable draw. It fixes a fingerprint of the entries, takes a public random value from a future beacon round, and lets anyone recompute the winner. Share the proof link before the draw, because a proof alone cannot rule out repeated attempts.