gizmobench

List Randomizer

Paste a list, press Shuffle, and get the whole list back in a random order. The shuffle is one Fisher-Yates pass over your browser's cryptographic random generator, which is the part most list randomizers get wrong: sorting a list with a random comparator, the usual shortcut, makes some orderings far more likely than others. Your list stays on screen beside its shuffle and both panes count their items, so you can see for yourself that nothing was dropped or added. The same draw answers the two questions people usually arrive with: Pick one shows the first item of the shuffle, and Groups cuts the shuffled order into teams of the size you name.

Shufflednothing to shuffle yet

Paste a list on the left, then press Shuffle.

No list yet.

Every ordering equally likelyNothing dropped, nothing addedYour list stays in this browserNo account, no length limit
Items
0
Show
Separator
Keep duplicates

No draw yet. Shuffle puts the list into a random order.

Line breaks separate items by default, so a column pasted out of a spreadsheet works as it is, and a name written "Smith, John" stays one item. Switch Separator to Comma when your list is typed on one line. Shuffle again draws a fresh order from the same list, so two draws of the same list are almost never the same order.

Why this order is fair. Most list shufflers sort the list with a random comparator, which is biased: some orderings come up far more often than others, and which ones depends on the sorting algorithm the browser happens to use. This one walks a single Fisher-Yates pass instead, swapping each position with a uniformly chosen earlier one, so every possible ordering has the same chance. The index comes from crypto.getRandomValues by rejection sampling rather than a remainder, so no position in your list is favoured, and the list you pasted is copied before the pass rather than sorted in place, which is why the left pane still holds it afterwards.
Accuracy. One Fisher-Yates pass over the browser's cryptographic random generator, so every ordering is equally likely and no item is dropped, duplicated or reordered on its own. It cannot prove a draw to anyone else: the result lives in your browser and nothing is recorded.

Common questions

Is the shuffle really random?
It is as fair as a browser can make it, and two things decide that. The first is the algorithm. This page runs one Fisher-Yates pass: it walks the list from the end and swaps each position with a uniformly chosen position at or before it. Every possible ordering comes out of exactly one sequence of those choices, so all of them have the same chance, and each item is touched once, so none can go missing. Many list randomizers instead sort the list with a comparator that answers at random, which is quicker to write and measurably biased: the result depends on the sorting algorithm the browser happens to use, and some orderings turn up far more often than others. The second is where the numbers come from. Each index is drawn from crypto.getRandomValues, the browser's own cryptographic generator, and mapped onto the list by rejection sampling rather than by a remainder, because 2 to the power 32 is not a multiple of most list lengths and a bare remainder would hand the first few positions one extra chance each.
Is my list uploaded anywhere?
No. There is no server in this: the page runs entirely in your browser, the shuffle happens on your own device, and neither your list nor the order it came out in is sent or logged anywhere. The text in the box and your separator choice are remembered in this browser alone, so the list is still there when you come back, and the Start over button above the tool forgets them. Nothing else is kept: a draw is replaced the moment you shuffle again and is gone when you close the page.
Can I shuffle the same list twice and get the same order?
Not on purpose. There is no seed to type in and no way to replay a draw, because every shuffle asks the browser for fresh random numbers. Pressing Shuffle again on the same list gives an independent order, and the chance of it matching is one in the number of possible orderings: one in 24 for four items, about one in 3.6 million for ten. Short lists do repeat now and then, and that is what fair looks like rather than a fault. It also means this page cannot prove a draw to somebody who was not watching, so for a result other people have to accept, draw it in front of them or record the screen.
How do I pick one item instead of ordering the whole list?
Set Show to Pick one. The tool runs the same single Fisher-Yates pass and then reads the first item off the shuffled order, which is a uniform pick: every item has exactly the same chance of ending up on top. The rest of the order is printed underneath it, so if the first choice declines you already know who is next, and Shuffle again draws a completely fresh order rather than picking again from what is left. If you want each name to be removed as it is drawn, so nobody comes up twice across several draws, the random name picker is built for that.
What counts as one item, and what happens to duplicates?
With Separator set to Line, every line is one item, so an entry written "Smith, John" stays a single item and only line breaks split it. With Separator set to Comma, commas and line breaks both split, which is what a comma list pasted out of a document needs. Blank lines and the spaces around an item are dropped either way, and nothing else about an item is changed: the text that goes in is the text that comes back out. Keep duplicates is on by default, so a raffle entry typed twice is two entries and really does have two chances. Turn it off and identical entries collapse to the first one. The match is exact, so "Red" and "red" stay two items: deciding that two spellings are the same thing is not a call this tool should make behind your back.
How do I split a list into random teams?
Set Show to Groups and name a group size. The shuffled order is cut into consecutive groups of that size, so the randomness happens once and the split is only a question of where the cuts fall. A remainder becomes a shorter final group: eight people in threes is three, three and two, and the tool prints those sizes rather than padding a group or dropping the odd one. Copy writes the groups out as numbered lines you can paste into a message. If you know how many teams you want rather than how big each should be, the random team generator takes that number instead.
How long a list can I paste in?
No limit is imposed. Everything runs in your browser with nothing uploaded and no account, so the practical ceiling is your device's memory rather than a plan: a list of ten thousand lines is parsed, shuffled and grouped without a pause, and both panes wrap and scroll instead of stretching the page. There is no minimum beyond two. A list of one item is refused with a message that says why, because printing a single item back as its own shuffle would read as a broken draw rather than an answer.

One Fisher-Yates pass over the browser's cryptographic random generator, so every ordering is equally likely and no item is dropped, duplicated or reordered on its own. It cannot prove a draw to anyone else: the result lives in your browser and nothing is recorded.