Standardize punctuation in list items

Standardize punctuation by replacing four Unicode characters with their ASCII equivalents: smart single quotes (`‘’`) → `'`, smart double quotes (`“”`) → `"`, horizontal ellipsis (`…`) → `...`, and en/em dashes (`–—`) → `-`. No options, no toggles - the mapping is fixed.

Input
Ready
Output
Live

A fixed Unicode-to-ASCII punctuation swap

Exactly four replace operations run, globally across the whole input (not per-line): smart single quotes `‘` / `’` → ASCII `'`. Smart double quotes `“` / `”` → ASCII `"`. Horizontal ellipsis `…` → three dots `...`. En dash `–` + em dash `—` → ASCII hyphen `-`.

That is it. Other Unicode punctuation (French guillemets `«»`, CJK quotes `「」`, German `„“`, mathematical minus `−`) are NOT touched. Add them explicitly via Replace if your input contains them.

The ellipsis becomes three ASCII dots (not a single-char substitute), which can shift column widths in fixed-width output. Plan accordingly for aligned layouts.

How to use standardize punctuation in list items

  1. 1Paste text with smart quotes / em dashes / ellipsis
  2. 2Output runs four fixed replacements - no options
  3. 3Smart quotes → ASCII quotes
  4. 4Em/en dash → ASCII hyphen
  5. 5Ellipsis character → three ASCII dots

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

Four hard-coded Unicode-to-ASCII replacements.

Smart single quotes → `'`

U+2018 LEFT SINGLE QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK both become the ASCII apostrophe. Common when pasting from Word, Google Docs, or auto-correcting chat apps.

Smart double quotes → `"`

U+201C and U+201D both become ASCII `"`. Critical when preparing text for CSV, JSON, or code that parses plain ASCII only.

Horizontal ellipsis → `...`

U+2026 (a single character) becomes three ASCII dots. The line gets longer by two characters per ellipsis.

En/em dash → `-`

U+2013 (en dash `–`) and U+2014 (em dash `—`) both become an ASCII hyphen. Typographic distinction is lost - this is a lossy conversion for publishing-quality text.

What is NOT covered

Guillemets (`«»`), CJK quotes, mathematical minus, non-breaking hyphen, etc. Use Replace with Regex for those.

Worked example

Smart quotes, em dash, en dash, and ellipsis all converted to ASCII.

Input
She said “hello” — then left…
It’s a test – see the difference
‘Single quotes’ — too
Output
She said "hello" - then left...
It's a test - see the difference
'Single quotes' - too

Transformation reference

No options - these four replacements run unconditionally.

Input character(s) Output Codepoint(s)
`‘` / `’` (smart single quotes) `'` (ASCII apostrophe) U+2018, U+2019
`“` / `”` (smart double quotes) `"` (ASCII double quote) U+201C, U+201D
`…` (horizontal ellipsis) `...` (three ASCII dots) U+2026
`–` / `—` (en/em dash) `-` (ASCII hyphen) U+2013, U+2014
Other Unicode punctuation Unchanged Use Replace with Regex

FAQ

Which characters does this standardize?
Four mappings: smart single quotes (U+2018, U+2019) → `'`; smart double quotes (U+201C, U+201D) → `"`; ellipsis (U+2026) → `...`; en/em dash (U+2013, U+2014) → `-`. Nothing else.
Does it handle French guillemets or CJK quotes?
No. Only the four mappings above are built in. For other Unicode punctuation, use Replace with Regex mode.
Why does the ellipsis become three dots instead of one character?
ASCII has no single-character ellipsis. Three dots (`...`) is the conventional ASCII equivalent. The tradeoff: line length grows by two characters per ellipsis replaced.
Does it distinguish en dash from em dash?
No - both become a single ASCII hyphen. The typographic distinction (en dash for ranges, em dash for breaks) is lost. For publishing-quality text, this is a lossy conversion.
Is this a per-line operation?
No - it runs globally across the whole input. Line structure is preserved but the replacements do not depend on line boundaries.