Sort list paragraphs

Sort list paragraphs by splitting the input on blank lines, sorting the resulting paragraph blocks, and re-joining with blank lines between them. Uses `localeCompare` with `numeric: true` - so `Paragraph 2` sorts before `Paragraph 10`. Case-insensitive by default.

Input
Ready
Output
Live

Blank-line-aware paragraph sort

Input is split on blank-line runs (regex `/\n\s*\n/`). Each resulting block is treated as one paragraph regardless of internal line wrapping. Output uses double-newline joining, so your paragraph structure survives the round trip.

The sort uses JavaScript's `localeCompare` with `numeric: true`. This means mixed alpha-numeric paragraph starts (`Paragraph 2`, `Paragraph 10`) sort in human-natural order, not lexicographic (where `10` would come before `2`).

Two options only: Order (A→Z / Z→A) and Case sensitive. No "length" or "numeric-only" or "random" modes - for those, use Sort by length, Sort numeric, or Shuffle.

How to use sort list paragraphs

  1. 1Paste paragraphs separated by blank lines into the input panel
  2. 2Pick Order: A→Z (default) or Z→A
  3. 3Toggle Case sensitive for exact casing comparison
  4. 4Output emits sorted paragraphs separated by blank lines
  5. 5Paragraphs without blank-line separators are treated as a single paragraph

Keyboard shortcuts

Drive ListShift without touching the mouse.

Shortcut Action
Ctrl ZUndo last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor
EscExit fullscreen
Ctrl KOpen the command palette to jump to any tool
Ctrl SSave current pipeline draft Plus
Ctrl PRun a saved pipeline Plus

What this tool actually does

Blank-line-split paragraph sort. Two options.

Splits on blank-line boundaries

Regex `/\n\s*\n/` detects one or more blank/whitespace-only lines between paragraphs. Single-line-wrapped paragraphs are preserved intact during the sort.

Natural-number ordering

`localeCompare(numeric: true)` means `Para 2` sorts before `Para 10`. Without that flag, lexicographic comparison would put `10` before `2`.

A→Z default, Z→A via Order

Default ascending. Flip Order to descending for reverse alphabetical.

Case-insensitive by default

`apple` and `Apple` sort as equal. Toggle Case sensitive on to separate them (uppercase sorts before lowercase under default locale rules).

Preserves paragraph internals

A multi-line paragraph stays a multi-line paragraph - only the paragraph *order* changes. Internal line wrapping and whitespace within the paragraph is untouched.

Worked example

Three paragraphs separated by blank lines, sorted A→Z by their first characters.

Input
Paragraph three: apples and oranges.

Paragraph one: just a starter.

Paragraph two: middle chapter.
Output
Paragraph one: just a starter.

Paragraph three: apples and oranges.

Paragraph two: middle chapter.

Settings reference

How each option shapes the output using the sample above.

Setting What it does Effect on the sample
Order: A→Z (default) Ascending sort `one` / `three` / `two` (lexicographic)
Order: Z→A Descending sort `two` / `three` / `one`
Case sensitive: on Uppercase vs lowercase is distinct Would group all uppercase starts before lowercase
Case sensitive: off (default) `Apple` and `apple` sort as equal Original order preserved for equal-keyed paragraphs (stable sort)
No blank lines in input (automatic) Treated as one paragraph Output identical to input

FAQ

How are paragraphs detected?
By blank-line separation. Regex `/\n\s*\n/` detects one or more blank or whitespace-only lines between paragraphs. If your input has no blank lines, the tool treats it as a single paragraph and emits it unchanged.
Does it sort `Para 10` before or after `Para 2`?
After. The sort uses `numeric: true`, which parses embedded numbers so `Para 2` < `Para 10`. Pure lexicographic sort would put `Para 10` first.
Can I sort by paragraph length?
Not with this tool - it sorts alphabetically only. For length-based sort, use Sort by length (note: that tool works on lines, not blank-separated paragraphs).
What happens to empty paragraphs?
The split regex collapses consecutive blank lines, so you will not get empty paragraph entries. Three blank lines between paragraphs behaves the same as one blank line.
Is the sort stable?
Yes - JavaScript's `Array.prototype.sort` is stable since ES2019. Paragraphs with the same sort key keep their original relative order.