List Randomizer
Shuffle any list, pick N random winners, or run a fair lottery using the Fisher-Yates algorithm.
Last updated: March 25, 2026
Find this tool useful? Support the project to keep it free!
Buy me a coffeeWhat is List Randomizer?
Random selection from a list is needed constantly: picking a lottery winner from participants, assigning team members to projects fairly, shuffling a quiz question order, selecting a random recipe for dinner, deciding presentation order impartially, or picking a random daily standup facilitator. A proper random selection requires a statistically unbiased algorithm — one where every item has an exactly equal probability of appearing at any position or being selected.
The gold standard algorithm for list shuffling is the Fisher-Yates shuffle (also known as the Knuth shuffle), which has O(n) time complexity and guarantees a perfectly uniform distribution of outcomes — every permutation of the list is equally likely. For selection of N winners from M participants, the algorithm picks N items without replacement, meaning the same item cannot be selected twice. This tool uses the Fisher-Yates algorithm with the browser's built-in Math.random() pseudo-random number generator.
How to Use List Randomizer
Enter your items in the text area — one item per line (names, options, questions, etc.)
Choose your mode: "Shuffle All" to randomize the full list, or "Pick Random" to select N specific items
For "Pick Random", set how many items to select (e.g., "pick 3 winners from 50 participants")
Click "Randomize" or "Pick" — results appear instantly in the output panel
Click "Randomize Again" to get a fresh draw with the same input list, or "Copy Results" to copy the selected items
Common Use Cases
- Picking random winners for a social media giveaway from a list of participants
- Randomly assigning 20 team members into 4 equal groups for a workshop or hackathon
- Shuffling quiz questions to deliver them in random order to each quiz taker
- Randomly selecting a recipe from a meal planning list to decide what's for dinner
- Fairly picking presentation order for a class or team where everyone must go
- Randomly assigning code review responsibilities from a list of available engineers
- Shuffling a flashcard deck to create a new study sequence each session
- Picking a random standup lead from the team roster each morning
Example Input and Output
Picking 3 random winners from a list of 8 participants:
Alice Johnson
Bob Martinez
Carol Chen
David Kim
Eva Petersen
Frank Okafor
Grace Williams
Henry Müller🎲 Randomizing 3 winners from 8 participants...
🏆 1st Place: Carol Chen
🥈 2nd Place: Frank Okafor
🥉 3rd Place: Alice Johnson
Remaining (did not win):
Bob Martinez, David Kim, Eva Petersen, Grace Williams, Henry Müller
Algorithm: Fisher-Yates | Items: 8 | Selected: 3 | Unique: ✓How This Tool Works
The input text is split by newlines to produce an array of strings. For "Shuffle All" mode, the Fisher-Yates algorithm iterates from the last index to the first; for each index i, it generates a random integer j between 0 and i using Math.random() (or crypto.getRandomValues() in secure mode), and swaps array[i] with array[j]. For "Pick N" mode, only the first N iterations are performed and the first N elements of the result are returned as the selection.
Technical Stack
Client-Side Processing
All randomization runs locally in your browser. Your participant list — which may include real names — is never transmitted to our servers. This tool works fully offline.
Crypto-quality Randomness
For higher-stakes draws, enable "Use Cryptographic Randomness" to use window.crypto.getRandomValues() instead of Math.random(). This uses the operating system's cryptographically secure pseudo-random number generator (CSPRNG), which is suitable for security-sensitive applications. Both options produce statistically equivalent results for typical lottery and team assignments.
No Seeded Reproducibility in Browser
Browser Math.random() cannot be seeded with a custom value (unlike Python's random.seed() or NumPy). Each call to Math.random() advances an internal state opaquely. For reproducible random sequences (same seed = same sequence), use a seeded PRNG library like Seedrandom.js, which accepts an explicit seed string and produces deterministic output — critical for verifiable lottery auditing.

