Spin Wheel PlusSpinWheelPlus

Is the SpinWheelPlus wheel fair?

Don't trust us. Test it yourself.

  • Wheel and mystery box samples
  • Runs in your browser
  • No account

Live fairness test

Runs in this tab with the same picker as the spin wheel. Equal weights only.

Number of test runs

Between 2 and 10,000 segments. Changing this count resets names to item001 style labels.

Between 2 and 1,000,000 spins per test run.

111 segments, 10,000 spins, 4 test runs

Published benchmark: 4 x 10,000 equal-weight spins, Web Crypto, generated September 1, 2026. 111 slices so a favorite is harder to hide than on an 8-name demo. Press Run for a new sample on this device.

Chi-square check

111 segments. Expected per segment: 90.1 (df 110). Equal-odds runs sit near df.

Consistent with equal odds

  • Test run 1103.7, p 0.65, Equal odds
  • Test run 296.3, p 0.82, Equal odds
  • Test run 394.4, p 0.86, Equal odds
  • Test run 4115.9, p 0.33, Equal odds

Consistent with equal odds: typical noise, no bias detected in this sample. Noisy: run more spins or another test. Suspicious: a favorite that repeats, or a table that looks hand-smoothed. A test cannot certify every future spin. NIST notes that statistical tests cannot certify a generator for every use.

Loading chart...

Segment counts

111 segments. Expected per segment: 90.1 (0.9%)

Published benchmark: 111 segments, 10,000 spins, 4 test runs.
SegmentTest run 1Test run 2Test run 3Test run 4
item00190 (0.9%)96 (1.0%)86 (0.9%)83 (0.8%)
item00299 (1.0%)81 (0.8%)91 (0.9%)84 (0.8%)
item003104 (1.0%)94 (0.9%)93 (0.9%)85 (0.9%)
item00488 (0.9%)88 (0.9%)85 (0.9%)95 (0.9%)
item00591 (0.9%)79 (0.8%)96 (1.0%)79 (0.8%)
item00691 (0.9%)84 (0.8%)95 (0.9%)101 (1.0%)
item00789 (0.9%)90 (0.9%)91 (0.9%)84 (0.8%)
item00881 (0.8%)88 (0.9%)91 (0.9%)101 (1.0%)
item00990 (0.9%)93 (0.9%)93 (0.9%)83 (0.8%)
item01088 (0.9%)105 (1.1%)88 (0.9%)73 (0.7%)
item011108 (1.1%)94 (0.9%)75 (0.8%)90 (0.9%)
item01269 (0.7%)78 (0.8%)83 (0.8%)89 (0.9%)
item01396 (1.0%)91 (0.9%)89 (0.9%)82 (0.8%)
item01489 (0.9%)96 (1.0%)88 (0.9%)93 (0.9%)
item01580 (0.8%)73 (0.7%)74 (0.7%)100 (1.0%)
item016100 (1.0%)81 (0.8%)83 (0.8%)101 (1.0%)
item017101 (1.0%)93 (0.9%)89 (0.9%)76 (0.8%)
item01887 (0.9%)84 (0.8%)102 (1.0%)107 (1.1%)
item01979 (0.8%)98 (1.0%)89 (0.9%)96 (1.0%)
item02095 (0.9%)81 (0.8%)64 (0.6%)99 (1.0%)
item02197 (1.0%)89 (0.9%)91 (0.9%)87 (0.9%)
item02269 (0.7%)91 (0.9%)93 (0.9%)97 (1.0%)
item02390 (0.9%)96 (1.0%)83 (0.8%)84 (0.8%)
item02487 (0.9%)92 (0.9%)105 (1.1%)97 (1.0%)
item02581 (0.8%)98 (1.0%)100 (1.0%)97 (1.0%)
item02675 (0.8%)102 (1.0%)87 (0.9%)95 (0.9%)
item027106 (1.1%)93 (0.9%)94 (0.9%)98 (1.0%)
item02876 (0.8%)73 (0.7%)94 (0.9%)82 (0.8%)
item02982 (0.8%)95 (0.9%)95 (0.9%)79 (0.8%)
item03099 (1.0%)89 (0.9%)87 (0.9%)71 (0.7%)
item03194 (0.9%)94 (0.9%)91 (0.9%)98 (1.0%)
item03293 (0.9%)79 (0.8%)93 (0.9%)80 (0.8%)
item03398 (1.0%)90 (0.9%)98 (1.0%)88 (0.9%)
item03495 (0.9%)91 (0.9%)90 (0.9%)92 (0.9%)
item03581 (0.8%)103 (1.0%)92 (0.9%)80 (0.8%)
item03681 (0.8%)88 (0.9%)97 (1.0%)77 (0.8%)
item03798 (1.0%)94 (0.9%)95 (0.9%)84 (0.8%)
item03896 (1.0%)90 (0.9%)100 (1.0%)87 (0.9%)
item03994 (0.9%)106 (1.1%)89 (0.9%)92 (0.9%)
item04087 (0.9%)99 (1.0%)84 (0.8%)104 (1.0%)
item04193 (0.9%)92 (0.9%)103 (1.0%)105 (1.1%)
item042103 (1.0%)83 (0.8%)81 (0.8%)79 (0.8%)
item04390 (0.9%)99 (1.0%)87 (0.9%)72 (0.7%)
item04494 (0.9%)89 (0.9%)74 (0.7%)82 (0.8%)
item04593 (0.9%)82 (0.8%)77 (0.8%)85 (0.9%)
item04695 (0.9%)97 (1.0%)106 (1.1%)97 (1.0%)
item04780 (0.8%)90 (0.9%)96 (1.0%)86 (0.9%)
item04884 (0.8%)84 (0.8%)80 (0.8%)80 (0.8%)
item04978 (0.8%)114 (1.1%)85 (0.9%)101 (1.0%)
item05096 (1.0%)103 (1.0%)81 (0.8%)96 (1.0%)
item05189 (0.9%)103 (1.0%)85 (0.9%)101 (1.0%)
item05281 (0.8%)87 (0.9%)86 (0.9%)84 (0.8%)
item05393 (0.9%)95 (0.9%)88 (0.9%)87 (0.9%)
item05479 (0.8%)95 (0.9%)107 (1.1%)99 (1.0%)
item05599 (1.0%)90 (0.9%)79 (0.8%)98 (1.0%)
item056106 (1.1%)93 (0.9%)83 (0.8%)89 (0.9%)
item057103 (1.0%)86 (0.9%)97 (1.0%)67 (0.7%)
item05886 (0.9%)95 (0.9%)97 (1.0%)85 (0.9%)
item05971 (0.7%)94 (0.9%)110 (1.1%)84 (0.8%)
item06096 (1.0%)80 (0.8%)89 (0.9%)95 (0.9%)
item06185 (0.9%)86 (0.9%)83 (0.8%)103 (1.0%)
item06285 (0.9%)87 (0.9%)92 (0.9%)120 (1.2%)
item06384 (0.8%)80 (0.8%)92 (0.9%)83 (0.8%)
item06480 (0.8%)91 (0.9%)91 (0.9%)76 (0.8%)
item06597 (1.0%)89 (0.9%)95 (0.9%)88 (0.9%)
item06698 (1.0%)100 (1.0%)67 (0.7%)85 (0.9%)
item06797 (1.0%)81 (0.8%)91 (0.9%)83 (0.8%)
item06894 (0.9%)95 (0.9%)97 (1.0%)102 (1.0%)
item069106 (1.1%)85 (0.9%)93 (0.9%)84 (0.8%)
item070102 (1.0%)78 (0.8%)88 (0.9%)82 (0.8%)
item07174 (0.7%)71 (0.7%)116 (1.2%)88 (0.9%)
item07288 (0.9%)82 (0.8%)89 (0.9%)96 (1.0%)
item07395 (0.9%)89 (0.9%)104 (1.0%)79 (0.8%)
item07484 (0.8%)84 (0.8%)88 (0.9%)95 (0.9%)
item07587 (0.9%)91 (0.9%)100 (1.0%)94 (0.9%)
item07685 (0.9%)101 (1.0%)100 (1.0%)112 (1.1%)
item07786 (0.9%)73 (0.7%)92 (0.9%)88 (0.9%)
item07885 (0.9%)97 (1.0%)86 (0.9%)71 (0.7%)
item07983 (0.8%)81 (0.8%)83 (0.8%)90 (0.9%)
item08094 (0.9%)77 (0.8%)93 (0.9%)92 (0.9%)
item08189 (0.9%)87 (0.9%)100 (1.0%)96 (1.0%)
item08284 (0.8%)108 (1.1%)79 (0.8%)87 (0.9%)
item08391 (0.9%)82 (0.8%)93 (0.9%)87 (0.9%)
item08488 (0.9%)97 (1.0%)83 (0.8%)93 (0.9%)
item08592 (0.9%)86 (0.9%)85 (0.9%)92 (0.9%)
item08695 (0.9%)67 (0.7%)91 (0.9%)85 (0.9%)
item087111 (1.1%)98 (1.0%)88 (0.9%)102 (1.0%)
item08892 (0.9%)93 (0.9%)96 (1.0%)87 (0.9%)
item089101 (1.0%)107 (1.1%)94 (0.9%)105 (1.1%)
item09094 (0.9%)94 (0.9%)106 (1.1%)95 (0.9%)
item09196 (1.0%)85 (0.9%)76 (0.8%)80 (0.8%)
item09298 (1.0%)95 (0.9%)85 (0.9%)84 (0.8%)
item093100 (1.0%)92 (0.9%)90 (0.9%)103 (1.0%)
item09488 (0.9%)90 (0.9%)96 (1.0%)88 (0.9%)
item09594 (0.9%)96 (1.0%)81 (0.8%)82 (0.8%)
item09697 (1.0%)80 (0.8%)104 (1.0%)102 (1.0%)
item09781 (0.8%)99 (1.0%)95 (0.9%)88 (0.9%)
item09879 (0.8%)91 (0.9%)75 (0.8%)90 (0.9%)
item099106 (1.1%)100 (1.0%)87 (0.9%)81 (0.8%)
item10082 (0.8%)101 (1.0%)87 (0.9%)87 (0.9%)
item10177 (0.8%)79 (0.8%)81 (0.8%)89 (0.9%)
item10274 (0.7%)95 (0.9%)90 (0.9%)84 (0.8%)
item103108 (1.1%)94 (0.9%)92 (0.9%)87 (0.9%)
item10474 (0.7%)76 (0.8%)81 (0.8%)104 (1.0%)
item10581 (0.8%)72 (0.7%)81 (0.8%)90 (0.9%)
item10680 (0.8%)100 (1.0%)86 (0.9%)93 (0.9%)
item10776 (0.8%)90 (0.9%)92 (0.9%)76 (0.8%)
item108102 (1.0%)95 (0.9%)103 (1.0%)94 (0.9%)
item10992 (0.9%)102 (1.0%)93 (0.9%)95 (0.9%)
item11092 (0.9%)86 (0.9%)75 (0.8%)107 (1.1%)
item11194 (0.9%)75 (0.8%)101 (1.0%)114 (1.1%)

Published results by wheel size

One committed run of 100,000 equal-weight spins per size, using the same unit-interval picker as the canvas wheel. Pass means the chi-square upper-tail p is at least 0.001. Generated September 1, 2026. A test cannot certify every future spin.

Published size benchmark: 7 wheel sizes, 100,000 spins each, 700,000 draws total, 7 of 7 passed at p 0.001.
SlicesSpinsExpectedChi-squarepResult
2100,00050,0000.000.9169Pass
3100,00033,333.32.100.3518Pass
8100,00012,50012.870.0747Pass
10100,00010,00014.140.1167Pass
26100,0003,846.217.760.8527Pass
100100,0001,000107.400.2649Pass
111100,000900.9105.500.6036Pass

Sizes 3, 10, 26, and 100 do not divide 232. A remainder mapping would give those wheels a quiet bias. Equal slices on this wheel still get equal width on the unit interval, so the walk does not favor a named slice. Integer tools such as the name picker use rejection sampling; this table tests the wheel path.

Published mystery box grid sample

Same 10 default prizes as the mystery box editor. 10,000 equal-weight opens, 4 runs, with replacement (pool path). Generated September 2, 2026. Treasure Hunt is without replacement and is not this table. Open the mystery box editor to run the live grid.

10 prizes. Expected per prize: 1000 (10%).

Chi-square check

10 segments. Expected per segment: 1000.0 (df 9). Equal-odds runs sit near df.

Consistent with equal odds

  • Test run 16.1, p 0.73, Equal odds
  • Test run 26.1, p 0.73, Equal odds
  • Test run 38.6, p 0.48, Equal odds
  • Test run 415.9, p 0.07, Equal odds

Consistent with equal odds: typical noise, no bias detected in this sample. Noisy: run more spins or another test. Suspicious: a favorite that repeats, or a table that looks hand-smoothed. A test cannot certify every future spin. NIST notes that statistical tests cannot certify a generator for every use.

Segment counts

10 segments. Expected per segment: 1000.0 (10.0%)

Published benchmark: 10 segments, 10,000 spins, 4 test runs.
SegmentTest run 1Test run 2Test run 3Test run 4
$100 Gift Card1007 (10.1%)953 (9.5%)958 (9.6%)1023 (10.2%)
Better Luck Next Time1006 (10.1%)1030 (10.3%)1005 (10.1%)995 (10.0%)
Wireless Earbuds992 (9.9%)1030 (10.3%)981 (9.8%)971 (9.7%)
Coffee Mug939 (9.4%)962 (9.6%)1012 (10.1%)973 (9.7%)
Notebook1018 (10.2%)1010 (10.1%)996 (10.0%)1073 (10.7%)
Water Bottle976 (9.8%)998 (10.0%)948 (9.5%)974 (9.7%)
Bluetooth Speaker1009 (10.1%)1010 (10.1%)1052 (10.5%)1018 (10.2%)
Backpack1031 (10.3%)998 (10.0%)1024 (10.2%)1031 (10.3%)
Mechanical Keyboard1007 (10.1%)1019 (10.2%)1013 (10.1%)1020 (10.2%)
Surprise Gift1015 (10.2%)990 (9.9%)1011 (10.1%)922 (9.2%)

Equal slices should land near the same count over thousands of spins.

  1. Paste your names in Customize, or keep the published list.
  2. Choose how many spins and how many independent test runs.
  3. Press Run. New draws stay in this browser tab.
  4. Compare counts to the expected share and the chi-square check.

Methodology reviewed by the SpinWheelPlus engineering team. See About us | Last updated

Yes for equal-weight classroom and stream picks. Each spin uses the same Web Crypto picker as the canvas wheel. This page runs that picker thousands of times, then compares counts to the expected share with a chi-square check. It is not a licensed lottery generator.

The chart and table start with a published sample: 111 names, 10,000 spins, and 4 test runs. That sample is in the HTML so you can read the counts without clicking. Press Run to draw a fresh sample on this device. New runs stay in this tab; we do not store your list.

A second table, Published results by wheel size, is a committed chi-square check at 2, 3, 8, 10, 26, 100, and 111 slices (100,000 equal-weight spins each). Sizes 3, 10, 26, and 100 do not divide 232; they are in that table because a remainder mapping would bias those wheels.

A third table, Published mystery box grid sample, is the default 10-prize editor list at 10,000 equal-weight opens and 4 runs. That sample uses the mystery box picker (rejection sampling), not the wheel unit-interval walk. Treasure Hunt is without replacement and is not that table.

What this page checks

Each test run picks one segment per spin, with replacement, using equal weights. Four independent runs (the default; you can run 1 to 10) should look like noisy versions of the same flat line. A single lucky spike on one run is normal. A slice that wins several times more often than the rest, on every run, would be a problem.

The default list is 111 placeholder names (item001 through item111) so a favorite is harder to hide than on an 8-name demo. At 10,000 spins the expected share is about 90 hits (0.9%), and chi-square has 110 degrees of freedom. Swap in your own names with Customize if you want the table to match a classroom roster or prize list.

How to read the result

One bar is one segment. Bar height is the mean of the test runs. The dashed line is the expected count (spins divided by segments). Hover a bar to compare each run and that expected share. The table lists every segment as count (percent of that run).

The chi-square card condenses the table into one number per run. For n equal slices it should wander around n minus one. Consistent with equal odds means typical noise, with no bias detected in that sample. Noisy means run more spins. Suspicious means a repeated favorite, or a table that looks hand-smoothed. A test cannot certify every future spin. If you raise the list past 200 names, the chart plots the first 200 bars so it stays readable. The table and chi-square still use the full list.

Segments Expected wins at 10,000
4 2,500 each
8 1,250 each
12 about 833 each
111 (this page default) about 90 each

No real run lands exactly on those figures, and that is the point. Chance overshoots and undershoots in small, shrinking amounts. If a run of yours ever produced the table above to the digit, that run would deserve more suspicion than any streak.

How the picker works

The wheel does not shuffle a pre-baked order. Each spin draws a 32-bit value from the Web Crypto API (MDN: Crypto.getRandomValues), divides by 232 to get a unit in [0, 1), then multiplies by total weight and walks the slices until the roll lands. This audit calls that same function. Animation on the homepage is display-only; the winner is chosen first, then the canvas eases to that slice.

That mapping is a unit-interval pick, not rejection sampling. Equal slices get equal width on the interval, so the walk does not favor a named slice. Integer tools on this site, such as the name picker and the mystery box pool draw, use rejection sampling so modulo bias cannot favor low numbers in a range. The wheel does not use that helper; the live tester and size table test the wheel path on purpose. The published size table is that check at the awkward widths, not a claim that the wheel uses rejection sampling.

Weighted wheels are a different contract: a slice with weight 3 is supposed to win about three times as often. This page keeps every weight at 1 so the fair picture stays readable. Build a custom wheel on the homepage when you need visible odds.

What this is not

This is not a certified lottery RNG, a gambling license, or a proof that any giveaway on the internet is legal in your region. NIST SP 800-22 notes that statistical testing can be a useful first step, but no statistical test can certify a generator for every application. For a regulated draw, check local rules before you treat any web tool as official. The same limit is on our disclaimer and about pages.

Frequently Asked Questions

Build the wheel you just tested

Same picker as this audit. Add names, colors, and spin on camera.

Create a Wheel