How the shuffle works
This tool runs the Fisher–Yates shuffle, the standard algorithm for producing an unbiased random permutation. It walks the list from the end to the start, swapping each item with a uniformly random item before it. Every possible ordering has the same chance of appearing — unlike the naive sort(() => Math.random() - 0.5) trick, which produces a measurably skewed distribution.
Randomness comes from the browser's crypto.getRandomValues API when available, falling back to Math.random on older browsers. That means the result is not predictable from the previous shuffle, so refreshing or resubmitting gives a genuinely new order every time.
Shuffling vs. picking winners
Set the Pick N winners field to a number larger than zero and the tool runs a partial Fisher–Yates: it shuffles just enough to determine the top N items, then stops. Each item is guaranteed to appear at most once, so this is a proper drawing-without-replacement — the same mechanism used for raffles, prize draws, and seat assignments.
- Shuffle all (N = 0): a full reorder, useful for randomizing a playlist, revising a study list in random order, or anonymizing rows for a blind review.
- Pick N: winners are shown separately in the box below the output, and the full shuffled list is still available if you want it.
Common uses
- Picking a random winner from a comment or signup list.
- Randomizing teams, seats, or speaking order.
- Testing a UI with test names in an unpredictable order.
- Revising a flashcard or vocab list without memorizing positions.
- Shuffling a playlist of URLs or file names before pasting them into another tool.
What this tool does not do
It does not verify that your list has unique entries. If "Alice" appears twice, the two Alices will both be shuffled and could both be picked as winners. If you need guaranteed-unique entries first, run the list through Remove Duplicate Lines before pasting it here.
Questions
Is the result actually random, or does it just look random?
Fisher–Yates with a proper random source is statistically uniform: every one of the n! possible orderings is equally likely. The alternative one-liner you see in most tutorials, array.sort(() => Math.random() - 0.5), is not — it biases towards the original order because the comparison function isn't consistent. This tool uses the correct algorithm.
Does reshuffling guarantee a different order?
No. With a large list the chance of getting the exact same order twice is astronomically small, but for tiny lists (say three items) a repeat is normal. Clicking Reshuffle performs a new independent shuffle each time; it doesn't try to avoid the previous result.
Can I use this for a giveaway or contest?
Yes, but record the input list and the moment of the shuffle if the result matters. The tool is client-side, so the exact draw you saw is not logged anywhere — screenshot the winners box or copy the output immediately.
How many items can it handle?
Comfortably tens of thousands. The bottleneck is the textarea, not the shuffle. Very large lists (100k+ lines) may make the textarea itself sluggish when you paste.