"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.