SpinForFun.app
Create wheel
Home / How the randomness works / Fairness test

Test the wheel's fairness yourself

Every wheel site says its results are random. This page lets you check ours instead of taking our word for it — it runs the exact code that picks winners, thousands of times, in your browser, and reports whether the results are statistically consistent with equal odds.

Quick answer

SpinForFun gives every option on a wheel an identical chance. You can verify that here: pick a number of segments, run up to 100,000 spins, and the page reports a chi-square test of the results. The test uses the same selection code the real wheel uses, so a pass here is evidence about the actual product, not a separate demo.

Choose your settings and press Run the test.

What is this actually testing?

Two things, together. First, the random draw: each spin takes a value from crypto.getRandomValues, the browser's cryptographically secure random number generator, rather than the weaker Math.random. Second, the conversion from that value to a winning segment — the step where an unbiased draw can still produce a biased result if the arithmetic is careless.

The second part is the one worth checking. A common way to get this wrong is to take a random number and apply a modulo that does not divide evenly into the range, which quietly makes the first few segments more likely than the rest. The test below would catch that, because it counts how often each segment actually wins.

How do I read the result?

The chi-square figure measures how far the observed counts sit from perfectly even. Small numbers mean the counts look like chance; large numbers mean something is skewing them. The critical value is the threshold at which a fair wheel would only produce a result this extreme about 1 time in 100.

  • Chi-square below the critical value. The distribution is consistent with equal odds. This is what should happen almost every time.
  • Chi-square above it. Either something is wrong, or you have hit the 1-in-100. Run it again — a genuine bias repeats, a fluke does not.
  • Bars that look slightly uneven. Expected, and not a problem. With 10,000 spins across 6 segments, individual counts drifting a percent or two either side of 1,667 is ordinary randomness. Perfectly equal counts would actually be suspicious.

Does passing this mean the wheel is fair?

It means the selection is uniform, which is the claim we make. It is worth being precise about what that does and does not cover. A chi-square test can show that results are consistent with equal odds; it cannot prove a generator is unpredictable in the cryptographic sense, and no browser-side test could. If you need certified randomness for a regulated prize draw, you need an audited system and a certificate, not a web page — ours included.

What this page does rule out is the failure that actually happens in practice: a wheel that looks random and quietly favours some segments over others.

Can I check the code myself?

Yes, and you do not need our permission. The whole site is static files with no build step: open view-source: on any wheel page, or read /assets/wheel.js directly. The function that picks the winner is called spin(), and the draw is the rnd() helper above it. The test on this page reproduces both in full rather than importing them, so you can compare the two and confirm they match.

The opposite of a verifiable wheel is a rigged one — they exist, and they are sold openly. How to spot a fixed draw.

Written by Vishal, Founder, SpinForFun·Last reviewed