Em Dash Remover
Paste a draft and strip em dashes and smart quotes. It also swaps the words a model leans on. Each change is a checkbox. You can undo one hit. Nothing leaves this tab.
Paste a draft. The cleaned column updates as you type.
The draft stays in this browser
I built this because the other cleaners are a mystery box. You paste a letter, you press one button, and a new blob comes back. You cannot see which dash moved. You cannot put one back.
This page never uploads the draft. The rules run in this tab. Refresh and the boxes you turned off are still off, on this machine. The text itself is not saved. Close the tab and the paste is gone. That is the point. A client letter should not sit in site data overnight.
A checkbox per class, not one blob
ConvertCase and the Chrome add-ons do one pass and dump the result. That is fine until the pass is wrong. An en dash in 2019 to 2021 is a year range. An em dash in the middle of a sentence is the tell people are hunting. Those are not the same mark. They should not share a button.
Each class has a count. Each hit is a row you can undo. The cleaned column updates as you type. There is no Run button, because the work is a list of replacements, not a job you send away.
The rules are a list, not a model
I already have two editing checklists I run on my own posts. One catches generic machine tells. The other is the house voice: no long dash, no curly quotes, short words where a fancy one snuck in. This page is those lists, written as code. It will swap utilize for use. It will cut in order to down to to. It will drop I hope this helps. It will not rewrite a paragraph to sound like me. That takes a person.
If a swap is wrong, undo that row. If a whole class is wrong for this draft, clear the box. Technical words stay. React stays React. A leverage ratio in a finance note can stay if you undo it. The page does not guess. It shows the hit.
Word and Docs hide the marks in HTML
Paste from Word or Google Docs and the curly quotes often arrive as HTML entities, not as the characters you see. A plain textarea would miss them, or keep a non-breaking space you cannot see. This page reads the HTML on the clipboard first, flattens it to text, then runs the same rules. The smart quote box lights up because the mark is actually there.
Eighty thousand characters is the cap. That is a long chapter. Past that the tab starts to hitch, so the paste is cut and the rest is dropped. Split the file if you have more.
What this page will not do
It will not score the text as human or machine. Those scores flip on a comma and they need a model. It will not rewrite a forced list of three ideas. That needs a reader. It will not send the draft to an API. That would break the promise on this page.
If you want a count against a limit, use the word and character counter. If the paste is JSON, use the JSON formatter. If you want a PDF of the cleaned draft, paste it into Markdown to PDF. If you want the longer version of why a one-button cleaner hid the year range I wanted to keep, I wrote it up in I Could Not Put One Dash Back.
Common questions
Does my draft leave this tab?
No. The cleaner runs in JavaScript here. After the page has loaded you can unplug the cable and still strip a dash. Mixpanel and Google Analytics load with Softery.io. They see that someone opened the tool. They do not get the draft. They get a size bucket, and that a copy happened.
Is this a model that rewrites the page?
No. There is no model on this page. The checkboxes are a fixed list of marks and words. The same list I use when I edit my own posts. A sentence that needs a real rewrite still needs you. The page will not invent a new one.
What do the checkboxes do?
Each box is one class of change: em dashes, smart quotes, extra spaces, filler phrases, and the short-word swaps. Turn a box off and that class stays in the draft. Click Undo on one row and only that hit comes back. The rest stay cleaned.
Can I paste from Word or Google Docs?
Yes. Those apps put curly quotes and em dashes inside HTML. The page reads the HTML off the clipboard, turns it into text, then runs the same rules. You see the marks. You can put any one of them back.