Shuffle a list

Reorder all lines with browser cryptographic random values while preserving the exact multiplicity of every entry.

Runs in your browser. Your text is not uploaded.

Worked example

Before

red
green
blue

After

green
blue
red

This documented seeded example shows one valid permutation; a live run may use another order.

Exactly what this changes

  • Production shuffling uses crypto.getRandomValues through a rejection-sampling integer adapter and an unbiased Fisher–Yates pass. Each position is exchanged with a uniformly selected eligible position in the remaining range.
  • The output is a permutation: no line is added, removed, edited, or deduplicated. Blank lines and repeated values participate independently, while the source’s final-line-terminator state is retained after positions change.
  • Shuffle is the one PlainSift operation whose output is intentionally not deterministic. Running the same input again may produce another ordering. Tests inject a seeded dependency so correctness and multiplicity remain repeatable during verification.

Options and edge cases

  • There are no weighting, grouping, or selection controls. Every parsed line occupies one position in the shuffle, including identical lines that happen to display the same text.
  • Use Reverse lines for a deterministic positional change or a sorting tool for repeatable ordering. The shuffle does not save a seed and cannot recreate a prior order after memory history is cleared.

Edge case: This list rearrangement is not described or tested for gambling, lotteries, security decisions, regulated selection, or other uses that require an audited randomness process.