AI text cleanup

Remove Invisible Characters from AI Text

An AI invisible text detector and remover in one. Remove invisible characters from ChatGPT text, Claude and Gemini output — the characters break code, produce phantom diffs and corrupt CMS spacing. Paste it, see what is there, clean it in one click.

0 characters

0 bytes

0 hidden found

Remove

Scanning runs entirely in your browser. Nothing is uploaded.

Which invisible text AI models leave behind

Six characters account for nearly all of them, and U+202F is the signature. Newer ChatGPT models emit Narrow No-Break Space in place of an ordinary space, which is why the text looks normal and behaves oddly.

  • U+202F Narrow No-Break Space — the most common, substituted for U+0020
  • U+200B Zero-Width Space — splits words invisibly
  • U+00A0 No-Break Space — also arrives via web and PDF pastes
  • U+2003 Em Space — a wide space where a normal one belongs
  • U+2060 Word Joiner — zero-width, prevents line breaks
  • U+00AD Soft Hyphen — invisible until the line wraps

U+202F and U+00A0 both have the Unicode property White_Space=Yes, sotrim() removes them at the edges of a string and leaves every one in the middle. A trim pass therefore looks like it worked and fixes almost nothing.

These characters are not a watermark

No, ChatGPT does not watermark text with invisible characters. The characters are real and the explanation attached to them is wrong, and nearly every competing tool sells the wrong one.

OpenAI has described the behaviour as a quirk of large-scale reinforcement learning — a training artifact rather than an inserted mark. Independent forensic analysis reached the same conclusion.

OpenAI did build text watermarking and decided not to deploy it in ChatGPT, reportedly because a large share of surveyed users said they would use the product less if it shipped. The technology exists and is not in the product.

The mechanism argues against it too. A watermark that a find-and-replace removes in one second provides no attribution, and a real watermarking scheme encodes the signal in token selection, where it survives copy-editing and reformatting.

Does removing them defeat an AI detector?

No. AI detectors score statistical properties of word choice — token predictability, sentence-length distribution and vocabulary spread. An invisible character carries none of that signal.

Stripping the characters changes the byte sequence and leaves every measured feature identical. A classifier scores the cleaned text exactly as it scored the original.

Cleaning is a formatting fix. It makes the text behave correctly in code, in version control and in a CMS, and it has no effect on whether a detector flags the writing.

What the characters actually break

Four failures, all of them downstream of the paste. None appears while you are reading the output, which is why they surface late.

  • Code. A U+202F inside a variable name produces an identifier that looks right and does not resolve. The error names a symbol that appears to exist. Pasted indentation containing U+00A0 breaks Python, where indentation is syntax.
  • Version control. A file re-saved through an AI-assisted edit shows every touched line as changed, because the space characters differ. Review becomes impossible when the diff is entirely whitespace.
  • Content systems. A CMS renders U+202F at a different width from U+0020, so published spacing does not match the draft. Justified text shows uneven gaps.
  • Data and search. A U+00A0 in a numeric column makes the value parse as text, so a sum silently skips it. Exact-match search fails against text that reads correctly.

How to clean AI text hidden characters safely

To clean AI output, remove the Cf category and fold the Zs category to a plain space. Removing both outright deletes the spacing the text depends on.

Two characters need protecting. U+200D Zero-Width Joiner binds multi-person emoji into a single glyph, so stripping it splits one family emoji into four people — the scanner keeps it between pictographic characters by default. U+200C Zero-Width Non-Joiner is orthographically required in Persian, Hindi and Bengali, where removing it changes the word.

In a build pipeline, match by category rather than by codepoint, so the rule survives Unicode releases. For text from sources other than a language model — PDFs, spreadsheets, web pages — the character mix is wider; use the invisible text detector instead.

Frequently asked questions

01

Does ChatGPT watermark its text with invisible characters?

No. OpenAI has described the characters as a quirk of large-scale reinforcement learning rather than a deliberate mark. OpenAI did develop text watermarking and chose not to deploy it in ChatGPT. Forensic analysis points to training artifacts, and a watermark that any find-and-replace removes would not function as one.

02

Do AI models really insert invisible characters?

Yes. Newer ChatGPT models emit U+202F Narrow No-Break Space in place of ordinary spaces, along with U+200B Zero-Width Space and U+2003 Em Space. The characters are real; the watermark explanation for them is not.

03

Does removing invisible characters bypass AI detectors?

No. AI detectors score token-level statistical patterns — word choice, sentence-length distribution and predictability. None of that changes when you strip a codepoint that carries no information. Cleaning the text fixes formatting and does nothing to a classifier.

04

Is this the same as the Originality AI invisible text detector?

It does the same job. The Originality AI invisible text remover and this one both scan locally in the browser and strip the same Unicode categories. This one also shows each character's category and byte cost, and keeps emoji joiners intact.

05

Does removing invisible characters make AI text undetectable?

No. Invisible text bypass claims do not hold up. Detectors score token-level statistics — word choice and sentence-length distribution — and stripping a codepoint that carries no information leaves every one of those features unchanged. The claim that invisible text undetectable tricks exist is the premise most competing tools are sold on, and it is wrong.

06

Which characters does AI-generated text contain?

Six account for nearly all of them: U+202F Narrow No-Break Space, U+200B Zero-Width Space, U+00A0 No-Break Space, U+2003 Em Space, U+2060 Word Joiner and U+00AD Soft Hyphen. The remover targets these categories by default.

07

Why clean AI text at all?

Because the characters break things downstream. They corrupt code identifiers, produce phantom diffs in version control, defeat exact-match search, and make a CMS render spacing that does not match the draft.

08

How can I see the characters in Word?

Press Ctrl+Shift+8 in Word to show formatting marks. Ordinary spaces appear as a middle dot and U+202F Narrow No-Break Space appears as a small circle. Word does not reveal zero-width characters, because it renders them as nothing.

09

Is my text uploaded anywhere?

No. Scanning and cleaning both run in your browser. The text never leaves your device and nothing is stored.

10

Do all AI models do this?

No, and the mix differs by model. The behaviour was first noticed at scale in OpenAI's o3 and o4-mini outputs. Paste output from whichever model you use into the scanner — it reports what is actually present rather than what is expected.

Written by , developer and writer.

Last reviewed