Fair randomness
Each spin starts with a random number from crypto.getRandomValues, the generator browsers use for security keys. To turn it into a choice between, say, seven entries without favoring any, TwirlPick uses rejection sampling: numbers from the uneven tail of the range are thrown away and drawn again. Weighted entries (written as Name *3) get a share of the range in proportion to their weight.
The winner comes first
The winner is chosen the moment you press spin. The animation is then calculated to stop inside that entry's slice, at a random point that is not too close to its edges, so what you see and what was drawn always agree. Spin time, sound and confetti change the show, never the odds.
Tested before every release
Automated tests draw tens of thousands of times and check the results: a chi-square test for even spreads, weights of 1:2:7 landing within 1.5 percentage points of 10, 20 and 70 percent, shuffles placing every item evenly in every position, teams never differing by more than one person, and links that rebuild the exact same wheel.
Verifiable draws
For giveaways and anything where trust matters, switch on the verifiable draw. TwirlPick then:
1. fixes the list of entries and computes its SHA-256 fingerprint;
2. picks a round of the drand public randomness beacon a few seconds in the future, run by the League of Entropy, a group of universities and companies, which publishes a new random value every three seconds;
3. when that round is published, derives the winner from the beacon value and the fingerprint.
Because the beacon value did not exist when the entries were fixed, nobody can steer the result. The proof link contains the entries and the round, and the checker recomputes the winner in anyone's browser. Only the round number is requested from the beacon; your entries never leave the page.
What a proof does not show
A proof shows that the winner follows from the entries and a public random value. It cannot show that the organizer did not run several draws and publish only one. Announce the entry list and the draw time before you draw; the proof's beacon round then shows the draw happened at that time, and the checker prints how long ago that round was published.
Storage
Your current wheel, your saved wheels, results and theme are kept in this browser's local storage. A wheel link carries the whole wheel inside the address after the # sign, which is never sent to our server. After the first visit the site works offline.