Remove non-alphanumeric characters from a list

Paste a list and get every non-alphanumeric character stripped out of each line - punctuation, symbols, and whitespace all gone. Default Scope is "Everywhere in each line", so `pr!ic$e:19.99` comes out as `price1999`. Switch Scope to "Line ends only" for a trim-style cleanup that preserves mid-line characters. Characters to remove defaults to all ASCII punctuation plus whitespace; edit the field to keep specific characters (e.g. hyphens, dots).

Input
Ready
Output
Live

Global non-alphanumeric scrub, with a trim-only fallback

Default Scope is "Everywhere in each line" - every character from the Chars set is stripped from every position. The op compiles a regex `[chars]` with the global flag and runs one pass per line, so `pr!ic$e: 19.99` becomes `price1999` and `em@il: [email protected]` becomes `emilbobtestcom`. Characters to remove defaults to all ASCII punctuation plus space and tab.

Switch Scope to "Line ends only" to get trim-style behaviour - runs of the same character class stripped from line starts and/or ends only, with mid-line characters untouched. In that mode the Side option (Both / Start / End) picks which end(s) to strip. Use trim when your noise is leading `>> ` or trailing `—–` and the in-line content is already clean.

Customise Characters to remove to preserve specific characters: delete the hyphen from the default set to keep hyphens in your output; delete the dot to keep decimals. The field is a character class, so no regex escaping is needed for most punctuation. Leave blank to fall back to whitespace-only trimming (ignores Scope in that case).

How to use remove non-alphanumeric characters from a list

  1. 1Paste your list into the input panel
  2. 2Default Scope is "Everywhere in each line" - every punctuation / whitespace character is stripped in one pass
  3. 3Switch Scope to "Line ends only" if you only want to clean up leading/trailing noise
  4. 4Customise Characters to remove to keep specific punctuation (e.g. delete `-` and `.` from the default set to keep hyphens and dots)
  5. 5Copy or download the cleaned list from the output panel

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

Global character-class removal by default; switchable to a trim-only mode.

Everywhere scope (default)

Strips every character in the set from every position in each line. `pr!ic$e: 19.99` → `price1999`. `[email protected]!` → `emailtestcom`. One pass per line using a global-flag regex.

Line-ends scope (trim)

Switch Scope to "Line ends only" and the op behaves like trim: leading/trailing runs of the char class are stripped, mid-line characters stay. Pair with the Side option to target only start, only end, or both.

Full ASCII punctuation set pre-loaded

Default Chars is every ASCII punctuation character plus space and tab: `!@#$%^&*()_+-=[]{};\':"\|,.<>?/~` + whitespace. Covers the vast majority of "strip symbols" cases without any configuration.

Edit the character set to preserve specific punctuation

Delete characters from the Chars field to keep them in the output. Common cases: keep hyphens (delete `-`), keep decimals (delete `.`), keep URL slashes (delete `/`). The field is a character class — paste characters in verbatim.

ASCII-only by default

Default Chars does not include Unicode symbols (smart quotes, em dashes, bullets). Paste them into the field explicitly if your input contains them, or run Standardize punctuation first to normalise them to ASCII.

Worked example

Default `Everywhere` scope with the full ASCII punctuation set. Symbols, colons, spaces, parentheses, decimals, `@`, `#`, `-` - all stripped from every position, leaving only alphanumerics.

Input
pr!ic$e: 19.99
em@il: [email protected]
ph#one: (555) 123-4567
Output
price1999
emailbobtestcom
phone5551234567

Settings reference

How each option shapes the output using the sample above.

Setting What it does Effect on the sample
Scope: Everywhere (default) Removes every char in the set from every position in each line `price1999` / `emailbobtestcom` / `phone5551234567`
Scope: Line ends only Trim-style: only leading/trailing runs of the char class are stripped; mid-line preserved No change on this sample - every line starts and ends with alphanumerics. On an input like `!!pr!ic$e: 19.99!!` this mode would yield `pr!ic$e: 19.99` (trim the outer `!!` only)
Side: Both / Start / End Only applies when Scope is "Line ends only"; picks which end(s) to trim Inert when Scope is Everywhere
Characters to remove: default All ASCII punctuation + space + tab Every non-alphanumeric ASCII character in the sample is stripped
Characters to remove: custom (e.g. delete `-` and `.` from the set) Preserves hyphens and dots in the output `price19.99` / `emilbobtest.com` / `phone555123-4567` (decimal in 19.99, dot in test.com, hyphen in 123-4567 all kept; every other punctuation still stripped)

FAQ

Does this remove symbols from the middle of lines by default?
Yes. Default Scope is "Everywhere in each line", which strips every matching character from every position. `[email protected]!` becomes `emailtestcom`. If you only want to clean the line ends, switch Scope to "Line ends only" - that mode preserves mid-line characters.
How do I keep hyphens (or decimals, or any specific punctuation)?
Edit the Characters to remove field and delete the characters you want to keep. Default is `!@#$%^&*()_+-=[]{};\':"\|,.<>?/~` plus whitespace - remove the `-` to keep hyphens, remove the `.` to keep decimals, and so on. The field is a character class so no regex escaping is needed for most punctuation.
What about Unicode symbols like `—` or smart quotes?
Default Chars is ASCII-only. Paste Unicode characters directly into the field if your input has them. Alternatively, run Standardize punctuation first to normalise smart quotes / em dashes to ASCII, then use this tool with the default set.
When would I use "Line ends only" instead of the default?
When your input has noise at the start/end (leading `>> `, trailing bullet markers, shell prompts) but the in-line content is already clean and you want to preserve it. For a general "strip every symbol everywhere" cleanup, keep the default.
How is this different from Remove extra spaces?
Remove extra spaces uses the same op with Chars blank (falls back to whitespace-only trimming). This tool pre-seeds the full ASCII punctuation set and scopes globally by default, so it targets a much broader cleanup.