Free writing tool
Text cleaner for AI drafts and pasted copy
Text from a model, a word processor, or a PDF carries characters that look ordinary and are not. This removes them, and tells you exactly how many it touched.
Cleaned
Here's the thing, most drafts don't need a rewrite. They need the invisible junk removed... and the **formatting** that feeds show literally. Paste yours and see what comes out.
6 replacements
Rules
Everything runs in your browser and nothing is uploaded. Read the result before posting: replacing dashes changes punctuation, and a rule cannot tell an em dash you meant from one a model added.
The characters that give a pasted draft away
Copying text out of a chat model or a word processor brings more than the words. Curly quotes, em dashes, non-breaking spaces, and zero-width joiners left over from emoji sequences all travel with it, and every one of them is invisible in a compose box.
Most of the time nothing happens. Occasionally a client renders a non-breaking space as a stray symbol, a CSV import splits on a character nobody can see, or a search fails to match a word that looks identical to the one being searched for. The em dash is the most visible of them: it is the single most recognisable sign that a paragraph came out of a model and went straight to publish.
None of this makes the text wrong. It makes it someone else's formatting, carried into your post without you choosing it.
Why every rule reports a count
A cleaner that silently rewrites everything cannot be trusted with a draft that matters, because you cannot tell whether it changed three characters or reflowed the whole post. Each rule above reports how many replacements it made, so you can see the scale of the edit before you copy the result.
The order is fixed rather than configurable. Character substitutions run before whitespace collapsing, because turning an em dash into a comma can leave a double space behind, and the later rule is there to clean it up. Reversing them would leave the gap in place.
What a cleaner cannot decide for you
- It cannot tell an em dash you wrote from one a model added. If you use them deliberately, turn that rule off rather than fixing the output afterwards.
- Markdown removal is off by default because it is the one rule that can change meaning, not just characters. A stripped asterisk in a code sample is a bug.
- Straightening quotes is right for a feed and wrong for typeset prose. A post is not a book.
- None of this makes a draft honest. It removes the formatting tell, not the invented statistic underneath it, and the second one is the one that costs you.