List randomizer
Paste a list, one item per line. Shuffle all of it into a random order, or pick one or more random winners. Nothing is uploaded.
Press generate to fill this table.
How a fair shuffle works
RandomKit shuffles with the Fisher–Yates algorithm (Durstenfeld’s 1964 version, popularised by Knuth). Walk from the last position to the first. At each position, pick a random item from the ones not yet placed, including the current one, and swap it in. Every ordering comes out equally likely. Step through it:
Press step to start from the right-hand end.
The easy mistake
An obvious-looking shortcut (“for each position, swap with any position”) gives 3³ = 27 equally likely swap sequences. 27 can’t be split evenly across 6 orderings, so some come up more often than others. Run both shuffles 60,000 times on A, B, C:
Ways to use a list shuffler
- Giveaways and raffles: paste entrants and pick winners. Leave duplicates in if people have several tickets.
- Random sampling: pick n rows from a list of IDs to audit or QA, a simple random sample without replacement.
- Presentation or stand-up order: shuffle the team so the same person isn’t always first.
- Test ordering: shuffle test cases to flush out hidden dependencies between them.
Splitting people into groups? The random team generator does it in one step.
Questions people ask
Is the list randomizer fair?
Yes. It uses the Fisher–Yates shuffle driven by crypto.getRandomValues with rejection sampling, so every possible ordering of your list is equally likely. The explainer on this page shows why that matters.
How do I pick a random winner from a list?
Paste your entries one per line, set “Pick” to the number of winners and press Randomize. The winners are the first entries of a fair shuffle, so nobody can be picked twice.
Does it remove duplicates?
Only if you tick “Remove duplicates”. Otherwise a name entered twice gets two chances, which is correct for weighted raffles where some people have more tickets.
Is my list saved or uploaded?
Your list is never uploaded. It’s kept in this browser’s local storage so it’s still there if you reload. Press Clear to remove it.