Paste text from a PDF, an email thread or a chat export. Nine cleanup steps run top to bottom, each with its own switch. Every step reports how much changed. Your text stays in this browser tab.
Steps, in run order
Zero-width spaces, soft hyphens, byte order marks. No-break spaces turn into normal ones.
Curly quotes to straight, long dashes to hyphens, the ellipsis character to three dots.
Runs of spaces or tabs inside a line become one space.
Runs only when half the lines or more start with a marker.
The order is fixed. Each step reads the result of the one above, so moving a step would change the output. Four of the choices matter more than the rest.
1. 1. Book the venue. Step 6 clears the old marker, step 8 writes the new one.The Load sample button fills the box with five sprint notes copied out of a chat thread after three people edited the list. Orange tags mark characters you won't see on screen.
ZWSP zero-width space NBSP no-break space TAB tab 3 sp run of spaces
2 sp1. Mehreen Shah moved the JSONZWSP beautifier to the new editor.2 sp 2.3 spTomás Ruiz found a bug: “smart quotes” break the CSV parser.TAB 3) Ifeoma Bello will retest the sitemap on staging.toolexe.com before Friday.NBSPNBSP • Kenji Watanabe asked for a dark theme on the regex tester – no date yet. 5. Dana Whitfield is still chasing the4 spfavicon cache on cdn.toolexe.com.
1. Mehreen Shah moved the JSON beautifier to the new editor. 2. Tomás Ruiz found a bug: “smart quotes” break the CSV parser. 3. Ifeoma Bello will retest the sitemap on staging.toolexe.com before Friday. 4. Kenji Watanabe asked for a dark theme on the regex tester – no date yet. 5. Dana Whitfield is still chasing the favicon cache on cdn.toolexe.com.
2. and four before favicon.1. 2. 3) • 5.The curly quotes survived. This preset leaves step 2 off, since curly quotes read fine in a chat or a doc. Tick Straighten quotes & dashes before the text goes into a CSV file, a terminal or a code editor, where “ is a different character from " and breaks parsing.
The right-hand column matters as much as the middle one. Most formatting accidents come from a step touching text you expected to stay put.
| Step | Changes | Leaves alone |
|---|---|---|
| 1. Invisible characters | Removes zero-width spaces (U+200B), word joiners (U+2060), byte order marks (U+FEFF) and soft hyphens (U+00AD). Turns no-break spaces (U+00A0, U+202F) and typographic spaces (U+2000 to U+200A) into plain spaces. | Zero-width joiners and non-joiners. Emoji families such as a parent with two kids are built from joiners, and Persian or Hindi spelling depends on them. |
| 2. Quotes & dashes | Curly single and double quotes become ' and ". En dashes, em dashes and the minus sign become -. The single ellipsis character becomes ... | Prime marks in measurements like 5′11″, French guillemets, apostrophes already typed straight. |
| 3. Trim line ends | Spaces and tabs at both ends of every line. | The left edge, once you tick Keep leading indentation. |
| 4. Collapse spaces | Any run of two or more spaces, plus every tab inside a line, shrinks to one space. | Single spaces. Leading indentation, when kept. |
| 5. Blank lines | Lines holding nothing or only whitespace, plus empty lines at the top or bottom. | Any line with a visible character, even a lone period. |
| 6. Strip numbers & bullets | 1. 2) (3) [4] #5 • - * + at the start of a line, or a number followed by a tab, as editors paste line numbers. | Clock times like 10:30, decimals like 1.5. Every line, when under half the lines carry a marker. |
| 7. Change case | Letters in any script with upper and lower forms: Latin, Greek, Cyrillic, Armenian. | Digits, punctuation, scripts without case such as Arabic, Hebrew, Chinese or Hindi. |
| 8. Add numbers | Prefixes each line with a number, right-aligned so the text column stays straight past 9 or 99. | Numbers already in the text. Pair with step 6 to replace them. |
| 9. Wrap lines | Breaks any line longer than your width at the last space before the limit. Continuation lines indent under the text, past the number or bullet. | Single words longer than the width, such as a long URL. They stay whole on a line of their own. |
None of these show up in a text box. All five survive copy and paste. When two strings look identical but a search, a spreadsheet formula or a database lookup treats them as different, one of these is the usual suspect. Step 1 handles all five.
| Character | Code | Where you pick one up | What goes wrong |
|---|---|---|---|
| No-break space | U+00A0 | Word, Google Docs, web pages written with | Ctrl+F for two words misses the match. Excel refuses to treat 1 250 as a number. |
| Zero-width space | U+200B | CMS editors, chat apps, some PDF exports | Two JSON keys or usernames look identical on screen yet fail an equality check. |
| Byte order mark | U+FEFF | Files saved as UTF-8 with BOM, a default in older Notepad and Excel CSV exports | The first CSV header reads as \uFEFFid, so a lookup on id comes back empty. |
| Soft hyphen | U+00AD | PDFs, e-books, justified layouts | A word split by an unseen hyphen fails spell check and site search. |
| Narrow no-break space | U+202F | Times formatted by recent ICU versions, used in Chrome and Node.js 20, as in 10:30 AM | Date parsers built for a normal space reject the string. |
Every step follows fixed rules. None of them reads meaning. A few outputs need a human pass before you publish.
Each word gets one capital letter, then lowercase. Acronyms and mixed-case names lose their shape. Small words such as of, the and in stay lowercase unless they open or close the line, an English-only rule.
The rule capitalizes the first letter of each sentence, each line and the pronoun I. Place names and surnames drop to lowercase. Use sentence case on text typed in ALL CAPS, where you planned to fix the names by hand anyway.
Turkish has a dotted and a dotless i. The browser's default uppercase mapping ignores the difference, so Turkish place names come out misspelled.
A line opening with a year and a colon looks like a numbered item. With half the lines numbered, every match loses its prefix, the year included. A chip reading skipped means under half matched, so nothing changed.
Most emoji count as two characters. Chinese and Japanese characters count as one, though each takes two columns in a terminal. URLs longer than the width stay whole and overflow.
Text copied from a PDF often breaks mid-sentence at the end of every printed line. This formatter keeps those breaks. Join them first with Remove Line Breaks, then paste the result here.
Size. All nine steps on 5 MB of text, roughly 800,000 words, take about half a second on a mid-range laptop. Past 10 MB the paste itself makes the text box sluggish. A command-line tool such as sed or a script handles log files past 10 MB better.
Short answers on privacy, numbering and wrap widths.
No. Every step runs as JavaScript inside this tab. Nothing gets uploaded, logged or saved. Closing the tab discards the text.
Fewer than half of the non-empty lines start with a number or bullet. The step stops on purpose, so a paragraph opening with a year such as 2024: keeps its first word.
Press Renumber a list. Step 6 removes the old markers, whatever mix of 1. 2) and bullets they are, then step 8 numbers the lines again from 1 or from any start number you type.
Numbers get right-aligned, so line 9 reads " 9." next to "10." and the text column stays straight. Pick the 01 style for zero padding with no leading space.
Yes, wherever you aligned values with extra spaces. The Code or config preset keeps collapse off, keeps indentation, straightens curly quotes and drops trailing whitespace.
72 suits plain-text email and git commit bodies. 80 matches terminal windows and most code style guides. Go to 100 or 120 only if your linter allows long lines.