🎯 Random Name Picker
Paste names, spin the roller, and pick a fair winner.
🔒 100% client-side — names are never stored
History
Paste a list, press pick, and watch the roller slow to a stop on one winner. This name picker is built for classrooms, live giveaways, stand-ups, and any draw where people are watching and fairness has to be obvious. It draws from a cryptographically secure random source, keeps an ordered history of every winner, and can remove each winner from the pool so nobody is selected twice.
How to Use
- Paste names: One per line in the text area. Order does not affect the odds.
- Decide on removal: Leave “Remove winner from list” checked for no-repeat draws, or uncheck it to keep everyone eligible.
- Pick: Press the pick button. The display cycles through names and settles on the winner.
- Pick again: Each new draw adds to the history below, in order. Use Clear to reset the list of winners.
How a Fair Draw Works
Most simple pickers rely on Math.random, which is designed for speed, not for unpredictability. This tool instead calls crypto.getRandomValues for every draw, the same primitive browsers use to generate keys. A 32-bit value is divided by 4,294,967,296, producing a fraction in the range [0, 1), and that fraction selects an index in the cleaned list. For N names, each one has a probability of exactly 1/N.
The cleaning step matters as much as the random source. parseNameList trims whitespace, discards blank lines, and removes exact duplicates while preserving first-occurrence order. Without that, a name typed twice would occupy two slots and double its chance. With it, what you see in the box is what is actually in the pool.
Worked Draws
Suppose the textarea holds these five lines:
Maya
Ben
Maya
Dana
After cleaning, the pool is Maya, Ben, Dana — three names, because the second Maya is trimmed and merged. Every draw now has a 1 in 3 chance for each person, not 1 in 2 for Maya and 1 in 4 for the others.
Run three draws with remove-winner checked. The first draw lands on Ben, so the textarea becomes Maya and Dana, and the history shows 1. Ben. The second draw, from two names, could go either way; say it lands on Dana, leaving only Maya. The third draw has a single eligible name and Maya wins by default. The history now reads Ben, Dana, Maya — a complete, ordered result.
Now repeat the same list with remove-winner unchecked. The pool stays at three names for every draw, so Maya can win twice in a row, the same as any raffle where tickets are returned to the hat. A sequence like Dana, Dana, Maya is entirely possible and not a bug.
Real-World Scenarios
- Classroom participation: Draw a student to answer instead of always calling on raised hands.
- Live giveaways: Draw viewer or attendee names on stream, with the history visible as proof of the order.
- Stand-ups and retros: Pick a speaker without arguments about who went last time.
- Chore or shift assignment: Rotate the unpopular tasks through the history so they move around fairly.
What Happens to Your List
The name list lives only in the textarea on the page. Nothing is saved to a server and nothing persists after you close the tab. When remove-winner is enabled, the winning line is deleted from the textarea and the remaining names stay in their original order. The history is kept in the page as a numbered list, so a sequence of draws reads like an official result sheet. Clearing the history empties that list but does not restore names that were already removed from the textarea.
Practical Tips
Deduplicate deliberately. If two different people genuinely share a name, the cleaner will merge them into one entry; add a middle initial or a department to keep them distinct. For a prize draw, decide the order of prizes before you start and draw in that order, so the history maps cleanly to first, second, and third place. If an audience is watching, read the final name aloud and leave it on screen for a beat before the next draw. And if you need to keep a permanent record, copy the history list before closing the tab. The status line under the button shows the current pool size after cleaning, which is a useful check before a public draw: if you expected 30 entries and it reads 28, two lines were either blank or duplicated. When the draw is over, clear the history only after you have recorded the names elsewhere, since clearing does not put removed winners back into the textarea.
Edge Cases to Know
- Long lists: There is no hard cap. Thousands of names work; the rolling animation just moves through them faster.
- A single name: It will win every draw until you uncheck removal or edit the list.
- Trailing spaces: Cleaned automatically, so “Ben ” and “Ben” are treated as the same person.
- Case sensitivity: “sam” and “Sam” are kept as separate entries, since the tool does not guess at capitalization.
- Empty draws: Pressing pick with an empty box does nothing and shows an error rather than selecting a blank entry.
Related Tools
Frequently Asked Questions
What random source decides the winner?
The picker uses crypto.getRandomValues, the browser's cryptographically secure generator, rather than Math.random. A fresh 32-bit random value is drawn for each pick and divided by 4,294,967,296 to produce a uniform fraction, which is mapped to an index in the cleaned name list. Every listed name therefore has exactly the same probability.
What does the remove-winner checkbox actually change?
When it is checked, the winner is deleted from the textarea after each draw, so the same person cannot win again and the pool shrinks with every pick. Uncheck it and the full list stays intact, which is what you want for a single draw or for draws where repeat wins are allowed.
How are duplicate names and blank lines handled?
Before every draw the list is normalized: each line is trimmed of surrounding whitespace, empty lines are dropped, and exact duplicates are merged while keeping the first occurrence. Two lines reading 'Ana' and 'Ana ' become one entry, so nobody silently gets a double chance.
Can I draw several winners in one click?
No. The interface draws one winner per click. For a multi-prize raffle, leave remove-winner checked and click repeatedly; each result is appended to the history in the order drawn, so you can announce first, second, and third prize directly from that list.
Why does it say all names were removed?
That message appears when the textarea is empty but the history already contains winners, which happens after every name has been drawn with removal enabled. Edit or paste a new list to continue. It is different from the no-names error, which means nothing was entered in the first place.
Does the rolling animation affect who wins?
No. The winner is chosen the instant the button is pressed, before the animation starts. The roller cycles names for roughly 22 to 30 steps with an increasing delay, about 2.5 seconds in total, and is engineered to land on the pre-selected winner. The animation is presentation only.
Reviewed by the HandyTools Hub team · Last updated