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: ✓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.
Frequently Asked Questions
Is the randomization truly fair and unbiased?
What is the Fisher-Yates shuffle algorithm?
Does the same item ever get picked twice?
How do I run a transparent, verifiable lottery?
Can I divide a list into equal groups?
What is the maximum list size this tool supports?
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