SpinKit

How SpinKit stays fair

Draws come from SpinKitEngine. SpinBot never chooses a result. You can check a receipt, not take our word for it.

Fairness on a randomiser is easy to claim and hard to see. A spinning wheel can look theatrical while the outcome was decided in the dark. SpinKit is built the other way round: the engine picks first, the animation follows, and a receipt is left where you can check it. This page is the written account of that design — not a second product, and not a translated shell of the home screen.

It is also local-first. The draw that matters happens on the device in front of the room, from the list you can see, with no account required for the core tools. Optional cloud saves and share links are extras. They do not get a secret vote on the winner.

What actually picks the winner

Every wheel spin, slot roll, Spin Sheet row and team split is produced by SpinKitEngine on your device. The engine uses a cryptographic generator, not Math.random() dressed up as a wheel. Weighted slices change the odds in proportion to the numbers you typed, and those weights stay visible on the wheel. Removing a winner after a spin is a setting you turn on, not a hidden reroll.

That order is the whole design: commit to a result, then play the spin so the room can watch it land. The pointer does not hunt for a name. The animation is a display of a draw that already happened. If the wheel ever looked like it was “choosing” in the last second, that would be the opposite of this page.

SpinBot can help you build a list, rename a wheel or explain a setting. It cannot choose a winner. If an assistant could steer a raffle, the rest of this page would be theater. The code path that draws is the engine; the assistant is not on it.

Receipts you can check

After a draw, SpinKit can show a receipt: a commitment and a witness. Anyone with the original list can replay the draw and see whether the same name comes out. A receipt is not a marketing badge. If the list in your hand does not match the list that was drawn, replay will fail — which is the point. Copy the receipt if you need to show a class, a stream chat or a raffle auditor what happened.

Treat the receipt as part of the job, not an optional flourish. A classroom that keeps the receipt for a prize draw can answer “who was on the list?” without arguing from memory. A live giveaway that posts the receipt next to the clip has a second, quieter proof for anyone who missed the stream. The receipt will not invent a list you did not draw; it will refuse a list that was quietly edited afterwards.

Presentation Mode, used on a projector or a stream, hides ads and extra chrome so the room can watch the wheel. It does not hide the winner, the roll, or the receipt. Fairness that vanishes when you “go present” is not fairness.

Equal slices, and slices that are not

A fair unweighted wheel is boring in the best way: every name has the same chance, and the slices say so. If you need that, leave the weights alone. If someone bought three raffle tickets, the honest move is three chances — a larger slice, or three rows on a Spin Sheet — not a hidden boost. Weighted odds that you cannot see are a dark pattern. Weighted odds that you can see are just arithmetic.

The same rule applies in reverse. Do not put two copies of a name on the wheel “to make it more likely they win” unless you are willing to say that out loud. Do not leave a leftover “dummy” slice from an old edit. The list you show before the spin is the list the engine draws from. If those two disagree, the room is right to walk away.

Live rooms and the host mark

A live room is a broadcast, not a second engine. The host’s device still draws with SpinKitEngine; guests watch that same result. Privileged events (spin, config, ended) are signed with the host’s key. Guests who open the share link with ?hp= already know which host to trust. Guests who only type a six-character code should match the host mark the host reads aloud before they treat the room as real. That mark is the first characters of the host’s public key — short enough to say, specific enough to catch a colliding room.

A typed code is convenient. It is also short. Short codes collide in the way short words collide: rarely, but not never. The host mark is how a skeptical guest checks they are in the room the host is actually running, not a lookalike. If the mark on the guest screen does not match what the host reads, leave and join again from the link the host posted. Do not spin “anyway” and argue later.

The lab in this browser

The interactive lab at /verify runs thousands of independent SpinKitEngine draws against the wheel you currently have open. It reports a chi-squared statistic and a p-value. It is a check you run yourself, in this browser, on this list — not a certificate we print. Open it when you need to show a skeptical room that equal weights stay equal over a long run.

The lab is English-only on purpose. It is a tool, not an article, and it is marked so crawlers do not treat it as a second homepage. This page is the article. The guide Are online random wheels actually fair? is the general explainer — animation versus pick, PRNGs, why a pretty spin is not proof. Three URLs, three jobs. If you only need to show a class that this wheel is not secretly picking the teacher’s favorite, open /verify on the list you are about to use.

A long-run lab will not bless a weighted wheel as “unweighted”. If one name owns half the wheel, it should win about half the time. A “fail” on a weighted list is often the lab doing its job. Read the weights before you read the p-value.

One engine, four shapes of job

Fairness is not a special mode you switch on for raffles. The same engine draws a wheel, a slot combination, a Spin Sheet row and a team split. What changes is the shape of the job: one name, one combination, a whole spreadsheet row, or a set of groups. If you need a documented raffle from Excel or Google Sheets, the honest tool is a Spin Sheet, not a wheel with two hundred unreadable slices. If you need groups of five, use Teams. Do not fake a team draw by spinning a wheel seven times and writing the names down by hand.

What we do not hide

SpinKit does not sneak extra chance onto a name you did not weight. It does not reroll off-screen when the first result was “inconvenient”. It does not let SpinBot, a template author, or an ad slot pick the winner. It does not claim the website is ad-free while showing ads, and Presentation Mode is a timed display switch — not a promise that ads are gone forever. Core tools work without an account. That is the product, not a funnel dressed as a picker.

You can still run an unfair draw with a fair engine. Paste a partial list. Hide a weight. Spin twice and keep the result you like. The software cannot stop a host who wants to cheat a room that is not watching. What it can do is refuse to be the hidden part of that cheat: the list, the weights, the receipt and the host mark are visible if you use them. A draw you cannot explain is a draw you should not run.

What this page is not

This is not a marketplace, not a leaderboard of “verified raffles”, and not a promise that a weighted wheel is an unweighted one. If you give one name a larger slice, that name should win more often. The honest move is to show the slice. If you need a whole row from a spreadsheet, use a Spin Sheet. If you need balanced groups, use Teams. The engine is the same; the shape of the job is not.

It is also not legal advice, a gambling license, or a certificate you can wave at a regulator. Local rules for prize draws, giveaways and raffles still apply where you live and on the platform you use. This page describes how SpinKit draws. You still decide whether a draw is the right tool for the job in front of you.

A check you can run tonight

  1. Show the full list — names, ticket numbers or spreadsheet rows — before anyone spins.
  2. Say whether weights are equal or not, and leave the slices where people can see them.
  3. Draw once, in view. Keep the receipt. Do not reroll “because it felt wrong”.
  4. If the room is remote, read the host mark aloud, or send the share link rather than a typed code on its own.
  5. If someone doubts the engine rather than the list, open /verify on that same list and let them watch a long run.

That is the whole fairness story: an engine you can name, a list you can see, a receipt you can keep, and a lab you can run yourself. Nobody, including SpinBot, picks a winner for you.