Skip to the tool
CALCPARK

Random Picker Wheel

Type names or options one per line, add weights if you like, and spin the wheel to pick one at random. Remove winners between spins, keep a history, share by link.

Runs on your device
Loading the tool…

How to use it

  1. Type or paste the entries, one per line, or start from a preset. Add *2, *3… after a line to weight it.
  2. Tick “Remove the winner after each spin” if nobody should win twice, and turn the sound on if you want ticks.
  3. Press Spin. After about four seconds the pointer stops on the winner, which is shown with the chance it had.
  4. Spin again, copy the winner, or copy the link to reopen the same list later. Previous winners stay listed on the page.

Example

A raffle with 12 names, one of them bought three tickets and is entered as Maya *3. The total weight is 14, so Maya has a 3 / 14 = 21.4% chance and every other name 1 / 14 = 7.1%. With “Remove the winner” on, the first winner disappears from the wheel and the second spin runs over the remaining 11 names, exactly like drawing tickets from a hat.

How the winner is chosen

The entries are given consecutive integer ranges the size of their weights (1 each by default). One number is drawn uniformly from 1 to the total weight with crypto.getRandomValues and rejection sampling, and the entry whose range contains it wins. The wheel is then rotated by four to six full turns plus the exact angle that brings a random point inside the winning segment under the pointer, with a cubic ease-out so it decelerates like a real wheel.

P(entry i) = weight_i / Σ weights      final angle = current + k·360° + (angle that puts segment i under the pointer)

Because the result is fixed before the first frame, the animation cannot change it and the outcome does not depend on frame rate, tab switching or device speed. With the system “reduce motion” setting the spin is shortened to under a second.

Limits. Labels longer than 60 characters are shortened and the wheel stops drawing text above 40 entries (the segments and the winner are still correct). Weights are whole numbers from 1 to 100. The link stores the list only up to about 1 KB; longer lists work on the page but are not shareable by link.

Sources: MDN – Crypto.getRandomValues(), MDN – window.requestAnimationFrame(), Weighted random sampling (Wikipedia: Fitness proportionate selection).

Is a spinning wheel fair for a giveaway?

Yes, in the sense that matters: each entry wins with probability proportional to its weight and nobody, including the person clicking, can influence where it stops. What a web page cannot provide is public proof – if you run a prize draw, spin it live in front of the participants or on a screen recording, and keep the entry list (the link) as the record.

Questions

Can I give one entry a higher chance?
Yes. Write “*N” after the entry, for example “Bob *4”. Its segment becomes N times wider and it wins N times as often as a plain entry. Weights from 1 to 100 are accepted.
Does the wheel remember my list?
The list is kept in the page link while it fits in about 1 KB, so bookmarking or copying the link preserves it. Nothing is stored on a server; refreshing without the link restores the default list.
Why does the pointer sometimes stop near the edge of a segment?
The landing point inside the winning segment is random too, so it can stop anywhere between the segment’s edges, but never on the line – a small margin keeps the result unambiguous.