How to Randomly Shuffle a List — Fair Randomisation Explained

Random list shuffling is needed more often than you might expect: assigning people to teams fairly, creating a random speaking order for presentations, picking a winner from a list of participants, randomising the order of questions in a quiz, shuffling a playlist, or A/B testing different orderings of content. The key word is "fair" — not all methods that feel random actually produce unbiased results.

Randomly shuffle any list instantly with our free List Randomizer tool. For sorting the list back to alphabetical order, use our List Alphabetizer. For reversing the order without randomising, use our Reverse List tool. For removing duplicates before shuffling, use our Duplicate Lines Remover.

What Makes Randomisation Actually Fair

Human attempts at randomisation are notoriously biased. When people try to arrange things "randomly" by hand, they unconsciously avoid patterns — distributing items more evenly than true randomness would. True random sequences often have unexpected clusters and runs that look non-random to human intuition.

Digital randomisation uses random number generators. The quality of the randomisation depends on the quality of the random number source:

Pseudo-random number generators (PRNG): mathematical algorithms that produce long sequences of numbers that behave statistically like random numbers but are actually deterministic — given the same starting seed, they produce the same sequence. Math.random() in JavaScript is a PRNG. PRNGs are fine for most practical purposes but are not suitable for cryptographic use.

Cryptographically secure random number generators (CSPRNG): use entropy from hardware sources (timing of keystrokes, mouse movements, disk access patterns) to produce genuinely unpredictable numbers. window.crypto.getRandomValues() in browsers, secrets module in Python, and /dev/urandom on Unix systems are CSPRNGs. For any application where the randomness must be unguessable (lotteries, security tokens, random passwords), use a CSPRNG.

The Fisher-Yates shuffle algorithm, used by our List Randomizer tool, is the standard correct algorithm for shuffling a list. It guarantees every permutation is equally likely when used with a quality random number source. Naive shuffling methods (like sorting by random keys) can produce subtly biased results.

Common Uses for List Randomisation

Random team assignment: paste a list of names, shuffle, then split the resulting order into groups of equal size. Every combination of people is equally likely.

Random speaking or presentation order: shuffle a list of names or topics to determine who goes first, second, and so on. Much fairer than any manually assigned order.

Prize draws and giveaways: paste the list of entries, shuffle, pick the top N entries as winners. Transparent and auditable — participants can see the original list and the shuffled result.

Quiz and test randomisation: shuffle a list of questions to create different orderings for different students, reducing the opportunity to copy from neighbours.

Random sampling: when you need a random subset of a large list, shuffle the full list and take the first N items. This is random sampling without replacement.

Randomly shuffle any list instantly — fair Fisher-Yates randomisation, free to use

Try List Randomizer Free →

Frequently Asked Questions

A good online randomiser uses the browser's cryptographically secure random number generator, which produces genuinely unpredictable results for practical purposes. Our List Randomizer uses this approach. For legal lotteries or high-stakes draws, use a certified random number service or physical randomisation (dice, balls in a drum) with witnesses, as these provide auditable randomness that is legally defensible in ways that software alone may not be.
To randomly shuffle a list in Python, use the shuffle() function from the random module. For example: import random, then random.shuffle(my_list). This changes the original list order randomly.
To randomly shuffle rows in Excel, add a helper column next to your data, enter =RAND() in the first cell, fill it down, then sort the whole table by that helper column. This will randomly reorder the rows.
Paste your list of names into the List Randomizer, shuffle, then divide the resulting list into groups of equal size. For example, if you have 24 people and want 4 groups of 6: shuffle all 24 names, the first 6 are group 1, the next 6 are group 2, and so on. This gives each person an equal probability of being in any group and each combination of people an equal probability of forming a group.
The Fisher-Yates (or Knuth) shuffle is the standard algorithm for producing an unbiased random permutation of a list. It works by iterating through the list from the last element to the first, swapping each element with a randomly chosen element from the remaining unshuffled portion. Every permutation of the original list is equally likely when this algorithm is used with a good random number source. Naive shuffling methods like sorting by a random key can be biased — Fisher-Yates is the correct approach.
Not exactly, since each shuffle produces a new random order. To repeat a specific shuffle, you would need to record the seed value of the random number generator, which most browser-based tools do not expose. If reproducibility matters — for example, you need to demonstrate the same shuffle to different people — use a programming language's seeded random function: Python's random.seed(42); random.shuffle(mylist) produces the same result every time for seed value 42.
Scroll to Top
Checker Tools