Skip to main content
UtilityStack

List Shuffler — randomise, pick, dedupe

Paste a list (one item per line), click Shuffle, get a fairly randomised order. Optionally pick only the first N — perfect for raffles, study cards, team draws, project assignments.

Input list (10)
Shuffled (0)
Click Shuffle to randomise.

How does the shuffle work?

The Fisher-Yates algorithm: walk the list from the end to the start, at each position swap the current item with a randomly chosen earlier (or current) position. The result is a uniformly random permutation in O(n) time. Used together with a cryptographically secure RNG (and proper rejection sampling), the output is exactly what 'random order' means.

Common alternative implementations (sorting by a random key) produce subtly biased results because of how comparison sorts work. Fisher-Yates is the only way to get a guaranteed-unbiased shuffle. This tool uses crypto.getRandomValues for the random source — no Math.random.

How to use this tool

  1. Paste your list, one item per line. Empty lines are ignored.
  2. Optionally toggle 'Remove duplicates' or set 'Pick first N' to only keep the top N of the shuffled list.
  3. Click Shuffle to randomise. Click Copy to grab the result for your spreadsheet, raffle announcement, study deck, or task assignment.

Frequently asked questions

Is the shuffle truly fair?

Yes — Fisher-Yates with a CSPRNG is provably uniform. Every permutation of N items is equally likely. Many homemade shuffles using sort-by-random-key are not uniform; this tool uses the proven algorithm.

What's the difference between 'shuffle' and 'pick random subset'?

Shuffle reorders all items. Pick random subset takes the first N items of a fully shuffled list — equivalent to drawing N from a hat without replacement. Use 'pick' for raffles where you want N winners from M entries.

Are duplicates kept by default?

Yes, unless you tick 'Remove duplicates'. With duplicates kept, all entries are equally likely to appear at any position; with duplicates removed, each unique value gets exactly one slot. Pick the right behaviour for your use case.

What's the largest list it handles?

Tens of thousands of items run instantly. Beyond ~100,000 the textarea starts to lag (because of rendering, not the algorithm). For huge lists, use Python's random.shuffle in a script.

Is the order saved?

No. Each click of Shuffle produces a fresh permutation. Refreshing the page clears state. The output is yours; copy it before navigating away.

Common use cases

Where shuffling pays off in seconds.

Raffle drawings

Paste your list of entries, set 'Pick first' to the number of winners, click Shuffle. The first N items are your winners. Screenshot for audit trail.

Team / pair assignments

Splitting a class into project teams of 4? Paste student names, shuffle, group every 4 lines into a team. Faster and fairer than letting people self-organise.

Study card randomisation

When studying flashcards or spaced repetition decks, shuffling fights the order-effect (you remember 'card 3 was easy' regardless of content). Re-shuffle each session for fresh practice.

Music or video playlist randomisation

Some playlist tools' 'shuffle' is biased toward recent additions or popular tracks. Paste your list, get a true random order, then re-create the playlist in that order.

Tips and shortcuts

Habits for getting reliable random orders.

Re-shuffle if the result feels biased

Random sequences sometimes look 'unrandom' — five names from one team in a row, for instance. The result is still uniform; humans see patterns where there are none. Re-shuffling is fine, but don't keep shuffling until the result 'looks random'; that's a different bias.

For audit trails, screenshot the inputs and outputs

Public raffles benefit from showing the input list and the shuffled output side by side, with a timestamp. The screenshot is the audit; this tool doesn't store anything for you.

Pre-dedupe when entries can repeat

Tick 'Remove duplicates' before shuffling if your list might have repeats — the same person submitting twice for a giveaway, for example. The dedupe is case-sensitive and preserves first occurrence.

Pick fewer than the full count

Use 'Pick first N' for clear raffle outcomes. Showing 100 names then announcing 'the first 5 are winners' is unambiguous; showing all 100 reshuffled and asking 'who's first?' is needlessly confusing.

Herramientas relacionadas