textscrubr
Home / Blog / Hidden characters

Does ChatGPT Add Hidden Watermarks to Text?

Hidden characters2 min readUpdated 2026-10-25
In the EU, yes: since October 2026 OpenAI adds an invisible watermark to ChatGPT and Codex text. It lives in word choice, not in hidden characters. The zero-width and non-breaking spaces you sometimes find in copied text are a separate, ordinary copy-paste artifact, and a text cleaner can remove those.

"Does ChatGPT watermark its text?" now has a different answer than it did a year ago. Two separate things get called a watermark, and they work very differently.

The statistical watermark (textGrain)

On October 5, 2026, OpenAI announced textGrain, a text watermark that is on by default for eligible ChatGPT and Codex output for users in the European Union, rolling out over the following weeks. API customers anywhere can opt in.

It works through word choice. When several next words are about equally likely, a secret key decides which one the model picks. Across a passage, those choices form a pattern that only someone with the key can test for. Nothing is added to the text: no hidden characters, no extra spaces. OpenAI also notes the limits: detection is weaker on short, heavily edited, mathematical or non-English text, and the absence of a detected watermark does not prove a human wrote something. Access to the detector is limited to approved researchers and organizations at first.

Anthropic uses a similar word-choice method for Claude, in place since August 2026.

Hidden characters in pasted text

The second thing people call a watermark is the invisible Unicode that sometimes rides along when you copy text: zero-width spaces, non-breaking spaces, byte-order marks. These come from how text is rendered, copied and pasted between apps. Word processors, web pages and PDFs add them too, so their presence is not evidence that AI wrote the text.

They are still worth removing, because they break search, URLs, code and data, and can show up as odd gaps for readers.

What a cleaner can and cannot do

A cleaner like textscrubr finds the invisible characters, removes the ones with no job in the text, keeps the ones that carry meaning (for example, joiners in Persian words and emoji), and flags bidirectional controls for review. It runs in your browser, so nothing is uploaded.

It does not remove a word-choice watermark, because there is nothing there to remove: every character is an ordinary one. Any tool that claims to strip textGrain or Claude's watermark by cleaning characters is overstating what it does.

A reasonable stance

If you use ChatGPT in the EU, assume your text carries a provenance mark, and follow whatever disclosure rules apply where you publish or submit. Clean the hidden characters for practical reasons: tidy text, working links and code, and no surprises when you paste.

See what is hidden in your text

textscrubr shows every invisible character, removes the ones with no job, and keeps your lists, headings, links and code intact. Em dash cleanup is one optional toggle. Free, and it runs entirely in your browser.

Inspect and clean my text free →

Work inside Claude or ChatGPT? The same engine is available there for a one-time $29.

Frequently asked questions

Does ChatGPT put a watermark in its text?

In the EU, yes. Since October 2026 OpenAI applies textGrain, a watermark carried in word choice, to ChatGPT and Codex text by default. API customers elsewhere can opt in.

Is the ChatGPT watermark made of hidden characters?

No. textGrain changes which words are chosen and adds no characters. The zero-width and non-breaking spaces sometimes found in copied text are a separate copy-paste artifact.

Can a text cleaner remove the ChatGPT watermark?

No. A cleaner removes invisible characters, but a word-choice watermark has no characters to remove. It does help with the hidden characters that break links, code and formatting.