Reverse list items

Reverse each item in a list - default flips each line's characters (`apple` → `elppa`). Switch Mode to reverse the line order instead (same as Reverse a list). Unicode-aware character splitter handles astral-plane characters (emoji) correctly.

Input
Ready
Output
Live

Two reverse modes

Reverse characters (default): each line's characters flip end-to-end. `apple` becomes `elppa`, `banana` becomes `ananab`. The op uses `[...line].reverse()` which splits on Unicode code points - emoji and surrogate pairs don't break apart mid-character.

Reverse order: same as Reverse a list. Last line becomes first, first becomes last. No character-level changes.

Chain reverse-chars with Sort + reverse-chars again to get true last-character sort grouping. That is the workflow Sort by last character documents.

How to use reverse list items

  1. 1Paste your list into the input panel
  2. 2Default Mode is Reverse characters (per-item)
  3. 3Switch Mode to Reverse list order for line-order reversal
  4. 4Blank lines pass through unchanged
  5. 5Chain with Sort + reverse-chars again for last-char grouping

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

Two reverse modes via a shared op.

Reverse characters in each item (default)

`[...line].reverse().join('')` per line. Unicode-aware split - emoji and surrogate pairs stay intact. `apple` → `elppa`, `café` → `éfac`.

Reverse list order

Flips the line sequence. First line becomes last, etc. Same op as Reverse a list. Line content untouched.

Blank lines preserved

Empty lines pass through as empty lines in both modes. Line count is preserved.

Unicode-aware character split

Uses spread operator (`[...str]`) which iterates by Unicode code points. Naive `str.split('')` would break surrogate pairs - this op avoids that.

Composable with Sort

Reverse chars → Sort → Reverse chars again produces last-character sort. Documented on Sort by last character.

Worked example

Default Mode: Reverse characters. Each line's chars flip end-to-end.

Input
apple
banana
carrot
date
Output
elppa
ananab
torrac
etad

Settings reference

How each mode shapes the output using the sample above.

Setting What it does Effect on the sample
Mode: Reverse characters (default) Per-line character flip `elppa` / `ananab` / `torrac` / `etad`
Mode: Reverse list order Line order flipped; line content untouched `date` / `carrot` / `banana` / `apple`
Unicode surrogate pairs (automatic) Preserved intact Emoji lines reverse as expected, not mangled
Blank lines (automatic) Pass through unchanged Empty line stays empty

FAQ

What does Reverse characters mode do?
It flips the characters in each line end-to-end. `apple` becomes `elppa`. Line-by-line - does not touch the list order.
How is this different from Reverse a list?
Reverse a list flips line ORDER only. This tool defaults to flipping each line's CHARACTERS, and offers the line-order mode as an option.
Does it handle emoji and non-Latin characters correctly?
Yes. The op uses `[...line]` which iterates by Unicode code points. Emoji (surrogate pairs) and combining marks stay intact during the flip.
How do I sort by last character using this?
Reverse chars → Sort → Reverse chars again. Documented in detail on Sort by last character.
What about combining marks like accents?
A character with a combining accent (e.g. `é` as `e` + combining acute) may separate during reverse, since each code point is iterated independently. For normalized forms, precompose with `normalize('NFC')` before reversing.