The characters to remove
Dashes and quotes first. Em dashes and en dashes become plain hyphens. Curly quotes and curly apostrophes become straight ASCII marks, or come out entirely. The ellipsis glyph becomes three periods. Those four cover most of what a reader notices.
Then the structure. Markdown written for a chat window arrives flattened in a plain field. You get leftover asterisks around bold text, stray heading marks, and bullet or numbered list markers sitting mid-paragraph. Remove them too, or the paste reads as a broken outline.
Then the ones you cannot see. Zero-width space, zero-width joiner, word joiner, soft hyphen, byte-order mark, non-breaking space and the narrow no-break space. NFKC normalisation folds fullwidth and ligature glyphs back to plain letters. Cyrillic and Greek lookalike letters need converting to their Latin twins.
Order matters more than the list. A literal \n from a chat or code copy is turned back into a real line break before any other rule runs, so text that arrived as one escaped line becomes paragraphs first.
Your wording never changes. Only typography, structure and hidden characters move, so the cleaned paste says exactly what the model said.
It will not get you past an AI detector
Character cleanup does not defeat detection, and plenty of pages imply otherwise. Detectors score the statistical properties of your words: word choice, sentence rhythm, perplexity and burstiness. Punctuation sits outside that measurement. Originality.AI tested the question directly and found that adding or removing hidden characters left detectability unchanged.
The second trap is autocorrect. Word and Google Docs re-curl straight quotes and put no-break spaces back after you paste. Turn off smart quotes in their autocorrect settings, or you clean the text and the app dirties it again in front of you.
What I use
For one message, use a web page. Try it free in your browser, with no install and no account, and the cleanup runs client-side so nothing is uploaded.
The round trip is what wore me down. Copy out of ChatGPT, open a tab, paste, clean, copy again, paste for real, then repeat on the next message. Klipto's Anti-LLM transform runs the same pass at the moment I press ⌘V, in any Mac app, offline. One tap on the chip in the paste preview, or automatic on every paste.