Prize wheel
Drop prizes into a Canvas wheel with weighted sectors and spin to draw a winner: skip the animation for instant results, remove winners automatically, and track history and win counts.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Prizes
Randomness comes from the browser crypto.getRandomValues API, entirely on your device.
Wheel
Result
Press "Start spinning" or "Quick draw" to try your luck.
Prizes in play
- Prize A×1
- Prize B×1
- Prize C×1
Win counts
- Prize A0 wins
- Prize B0 wins
- Prize C0 wins
Winner history
No winners yet.
What this tool does
- Run a lucky draw at a party, a livestream or in class: fill in the prizes and let weights decide sector sizes so the grand prize can be rare.
- Settle everyday decisions like where to eat or who presents next — a spin feels better than rolling dice.
- Need a fair, reproducible draw? Use quick draw to skip the animation; winners are picked by weight from the browser crypto random source.
- For multi-round draws, turn on "remove a prize after it wins" so past winners stay out, while history and win counts accumulate automatically.
Example
Input
First prize,1 Second prize,3 Try again,6
Output
Sector angles: -90° to -54° (first prize, 10%) · -54° to 54° (second prize, 30%) · 54° to 270° (try again, 60%)
The full 360° is split clockwise by weight starting from straight up (-90°); weights sum to 1+3+6=10, hence the 10% / 30% / 60% shares.
Frequently asked questions
How do weights work?
Each prize weight sets its share of the full circle: a bigger weight means a bigger sector and a higher chance of winning. A weight of 0 gives a zero-degree sector that can never win, and if every weight is 0 the draw degrades to an equal-probability pick.
Does quick draw give the same result as the animated spin?
Yes. Both call the same weighted random picker; the animated spin just plays an ease-out animation and parks the pointer on the winning sector midline, while quick draw shows the result immediately.
What happens to long prize names?
Labels longer than eight characters are truncated with an ellipsis, counted by code point so emoji are never split. The winner result, the prize list and the history all show the full name.
What if I mistype a weight?
A weight that is not a number, or is negative, raises an error saying the weight must be 0 or greater; a dangling separator such as "Prize," is also rejected. Spinning with an empty list asks you to add at least one prize first.
Is the draw actually random?
The randomness comes from the browser crypto.getRandomValues API rather than Math.random, so it is a cryptographically strong source, and everything runs locally with nothing uploaded.
Keywords:prize wheelspinner wheellucky drawrouletterandom wheel抽奖转盘大转盘抽奖转盘幸运抽奖权重