Toolz

Random Winner Picker

Pick one or several random winners from a pasted list, fairly and unpredictably.

Entrants
Winners to pick

How the draw is made fair

Picking a winner from a list sounds trivial, but the obvious implementation — an index from Math.random(), or a raw random byte reduced with % length — is usually biased and always predictable. Math.random() is seeded from a non-cryptographic generator, and modulo-reducing a random byte over a list whose length does not evenly divide the byte range quietly favours the first few entries. This tool draws 32-bit values from crypto.getRandomValues(), the same source used for encryption keys, and uses rejection sampling: any value that would land unevenly across the list is discarded and redrawn, rather than folded back in. Every entrant ends up with exactly equal odds.

Duplicates are entries, not a bug

If a name appears three times in your pasted list, it gets three separate tickets in the draw, not one. That is deliberate: a raffle where people can submit multiple entries, a giveaway where retweets count as extra chances, or a spreadsheet export with one row per purchase all rely on duplicates carrying real weight. The tool never deduplicates your input on your behalf — if you want one entry per person, remove the duplicates before pasting.

Picking several winners, or picking again

"Pick a winner" draws one name; raise "Winners to pick" to draw several distinct names in a single click, without any of them repeating within that draw. Turn on "Remove winners from list after picking" to also exclude past winners from every future draw in the same session — useful for a raffle with several prize tiers where nobody should win twice. Leave it off and every click draws fresh from the full list, duplicates and all. Nothing you paste is sent anywhere; the whole draw happens in your browser.

Related tools

Most popular