Skip to main content

Guides

How to clean AI-generated text before you publish it

· 6 min read

Text out of a model reads fine and still looks generated the moment it lands somewhere a person is going to read it closely: an email, a report, a page on your own site. Most of what gives it away is not the argument. It is a handful of mechanical habits that survive copy and paste, and cleaning them is a checklist rather than a rewrite.

What actually needs fixing

What it looks likeFix
Em dashes used mid-sentence, in quantities no one types by handReplace with a plain hyphen, or a comma or colon where that reads better
Curly quotes and apostrophes mixed into straight-quote textStraighten them so the document is consistent
Non-breaking spaces and zero-width characters, invisible on screenDelete them; they break search and line wrapping later
Decorative bullet glyphs copied out of a chat interfaceTurn them into plain hyphens
Stray blank lines and trailing spacesCollapse them

Do it in this order

What the mechanical pass will not fix

Openings that announce what the text is about to do. Closings that summarise what was just said. Hedging adverbs attached to claims that did not need one. These are editorial, not typographic, and no cleaner can rewrite a sentence's judgment for you. What the mechanical pass does is remove the noise so those habits are easier to spot and fix by hand.

One caution before you run it on everything

Run the cleaner on a copy when the source is code or structured data rather than prose. A non-breaking space inside a code block can be load-bearing, and straightening a quote inside a string literal changes the string. For prose the pass is safe; for anything a machine is going to parse afterwards, check the diff first.

Doing this without sending a draft to a server

The text going through this pass is usually unpublished: a draft, a client email, internal documentation. The cleaner here runs in your browser tab, so the draft never leaves your machine, which you can check by disconnecting from the internet once the page has loaded and running it anyway.

Related: How to remove Markdown formatting from text

Related: How to remove citations like [1] from copied text

Frequently asked questions

Does this keep my text private?

Yes. All processing happens locally in your browser. The text is never sent to a server, which you can verify by going offline after the page loads and using it anyway.

Why does it change every em dash?

Models reach for the em dash far more than people typing on a normal keyboard, so a run of them is one of the fastest tells. Each one becomes a plain hyphen.

Will it remove Markdown formatting like ** or #?

No. This pass works on characters, not markup. For Markdown syntax, use a dedicated strip-markdown pass instead.

Does cleaning change what the text says?

No. Replacing an em dash with a hyphen, straightening a quote, or removing an invisible character changes the encoding, not the meaning.

Can it fix the phrasing that sounds generated?

No. Stock openings, summarising closings and unnecessary hedging are editorial choices a person has to make. The mechanical pass just clears the noise so those are easier to spot.