First-symbol-character grouping
For each line, the op runs `/[^\w\s]/` to find the first character that is neither a word character (`\w`) nor whitespace. That single character becomes the sort key. Lines with no symbol get the empty-string key and sort before any symbol-bearing line.
Two lines with the same first-symbol character fall back to alphabetical comparison (`localeCompare` with natural-order numerics). So `#cherry` sorts before `apple#` under `#` grouping, because `#` appears at position 0 vs. position 5 - but the sort key is only the character `#` for both, so the alphabetical tiebreak decides.
Order flips asc/desc. Case sensitive only affects the alphabetical tiebreak (not the symbol comparison). For sort-by-LAST-character see Sort by last character; for length-based sort see Sort by length.
How to use sort list by symbols
- 1Paste your list into the input panel
- 2Each line's first symbol character becomes its sort key
- 3Lines without a symbol sort first
- 4Alphabetical tiebreak within each symbol group
- 5Flip Order for descending
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this tool actually does
Primary sort by first symbol character, secondary alphabetical.
First-symbol extraction via regex
Each line matched against `/[^\w\s]/`. First match is the sort key. No match → empty-string key (sorts before all symbols).
Alphabetical tiebreak
Lines with the same first-symbol char are ordered alphabetically via `localeCompare` with `numeric: true`. Stable secondary sort.
Order flips both sorts
Descending order reverses both the symbol-group ordering AND the within-group alphabetical tiebreak. Consistent direction throughout.
Case sensitive affects tiebreak only
Symbol comparison is always case-insensitive (symbols have no case). The toggle only influences the alphabetical tiebreak for lines sharing a symbol.
Lines with no symbol sort first
Empty-string sort key is lexicographically smallest. Flip Order to put no-symbol lines LAST instead.
Worked example
Default ascending. No-symbol line first. Within `#` group: `#cherry` < `apple#` alphabetically. Within `@` group: `@banana` < `banana@`.
apple @banana #cherry apple# banana@
apple #cherry apple# @banana banana@
Settings reference
How each option shapes the output using the sample above.
| Setting | What it does | Effect on the sample |
|---|---|---|
| Order: A→Z (default) | No-symbol first, then `#`-group, then `@`-group | `apple` / `#cherry` / `apple#` / `@banana` / `banana@` |
| Order: Z→A | Reverses both symbol and alphabetical ordering | `banana@` / `@banana` / `apple#` / `#cherry` / `apple` |
| Case sensitive: on | Only affects alphabetical tiebreak within same-symbol group | No change on sample (no cased letters in relevant positions) |
| Line without symbol (automatic) | Empty-string key → sorts first (or last with Z→A) | `apple` leads the output |