
There is no watermark in ChatGPT's text to remove. OpenAI has said it built a text watermarking method and has not deployed it, so what a "ChatGPT watermark remover" actually strips are ordinary formatting artefacts: zero-width spaces, non-breaking spaces, variation selectors, em dashes and leftover Markdown. Those are real, and they do give a paste away. They are just not a mark anyone embedded on purpose.
That distinction changes what you should expect from one of these tools. We counted the hidden characters our own cleaner removes, which came to 45, then measured what happens to a piece of ChatGPT text once they're all gone. The AI-style score fell from 68 to 40. It did not fall to zero, and the reason it can't is the useful part of this article.

Is ChatGPT leaving watermarks in text?
No, not in the text it types. OpenAI has been open about having built a text watermarking method and choosing not to release it, and the reasoning it gave is worth knowing: a mark only one provider applies just pushes anyone determined to avoid it toward a provider that doesn't apply one. It also survives translation and model-to-model rewriting poorly, and it risks flagging people who write English as a second language.
Watermarking does exist elsewhere in the same product. Images from ChatGPT carry Google DeepMind's SynthID signal alongside C2PA content credentials, and that coverage reached ChatGPT's voice output on 31 July 2026. Typed text is the gap. If you want the mechanism itself explained, including how SynthID and C2PA differ, we have a separate piece on that.
The short version: an embedded watermark is a deliberate signal a matching tool can read back. A stray zero-width space is not. For the full explanation of how the embedded kind works, see what an AI watermark detector actually is.
One caveat on the date, because this answer has a shelf life. Other labs have moved. Newer Claude models picked up watermarking during August 2026, and OpenAI has put its name to the EU code of practice that sits under Article 50(2) of the AI Act, so the regulatory pressure all points one way. None of that has changed ChatGPT's text yet. Checked on 21 September 2026 there is no deployed text watermark, and that is the sort of sentence worth re-checking before you lean on it a year from now.
How can I remove the ChatGPT watermark?
You remove the characters people mean when they say watermark. There are three families of them, and they behave differently.
- Zero-width and formatting characters. Your cursor walks straight over these, because they take up no width when drawn. U+200B is the one that ends up in screenshots captioned as a watermark. Soft hyphens, word joiners and the byte order mark are its relatives.
- Variation selectors, U+FE00 through U+FE0F. Each latches onto whatever character came before it and changes how that character is drawn. A run of them can carry hidden payload through text that looks entirely ordinary, so our cleaner deletes them rather than trying to guess intent.
- Non-breaking spaces, U+00A0 plus two lookalikes. These cause the most trouble precisely because they pass for ordinary spaces. Drop one into code or a validated form field and you get a failure with no visible cause.
None of that needs a paid tool. A plain text editor will strip some of it, at the cost of flattening your line breaks, and it leaves the non-breaking spaces behind. That combination is usually what sends people looking for something purpose-built.
Our own cleaner is free, needs no account, and runs entirely in your browser, which means nothing you paste is uploaded anywhere: the AI text cleaner. If the only thing bothering you is punctuation rather than invisible characters, the em dash remover is the narrower tool for that job.
That one is here: the em dash remover. It converts em dashes to commas, periods or parentheses and leaves the rest of your text alone.

What are the hidden characters in ChatGPT text, exactly?
Forty-five of them, if you go by what our cleaner is built to catch. We counted them out of the source file rather than estimating: 26 zero-width and formatting characters, 16 variation selectors, and 3 non-breaking spaces. The full ranges are in the diagram above, and the file is src/lib/text-cleaner.ts if you'd rather read the code than trust a summary.
Then we tested it properly instead of assuming. We built a string containing one of each of the 45 characters, wrapped in the words Start and End, and ran it through the cleaner. The string went in at 53 characters and came out at 11, which is exactly the length of Start plus End. Survivors: none. The cleaner reported 45 hidden characters removed, which matches the count taken from the source.
Where do they come from? Rendering and the copy path, mostly. Word wrapping logic, the way a browser serialises what you selected, and tokenisation artefacts in how the model handles text. Plenty of other editors produce them too. Word, Google Docs and most CMS editors will hand you non-breaking spaces without being asked, which is the single best reason not to treat finding one as evidence of anything.
Is there a free tool that can remove watermarks from ChatGPT content?
Yes, and you should be suspicious of any that isn't. Stripping a fixed list of Unicode codepoints is a find-and-replace operation. It is not hard, it costs nothing to run, and it does not need your text on a server. Ours doesn't touch a server at all.
What separates the tools on this query is not capability, it's honesty about scope. Most of page one implies that cleaning the characters gets you past an AI detector. That claim is testable, so we tested it.

Does removing hidden characters make AI text undetectable?
No, and here's the measurement. We took a 55-word paste shaped the way ChatGPT output usually is: a "Certainly! Here's a breakdown" opener, a Markdown heading, three bullets, an em dash, one zero-width space, one non-breaking space, and a "Let me know if you have any other questions" sign-off. Our analyser scored it 68 out of 100 for AI style.
Then we cleaned it. Ten changes landed: 2 hidden characters removed, 1 sign-off line dropped, 5 Markdown marks stripped, 1 dash replaced, whitespace tidied. Score afterwards: 40.
So cleaning bought 28 points and stopped there. What it could not touch was the 10 AI-associated words and phrases still sitting in the text, things like delve, tapestry and multifaceted, or the fact that every sentence was roughly the same length. Those are what a detector measures. A character remover works on characters; it has no opinion about your vocabulary or your rhythm.
This is the same conclusion our longer piece on the category reaches from a different direction, and it's worth reading if you came here hoping for a one-click fix: why AI humanizers don't work the way people think.
If your actual goal is text that reads as yours rather than text with the invisible characters taken out, that's a rewriting job, not a cleaning one. Our humanizer does that, and you can check the result against a second opinion afterwards.
The second opinion lives here: our AI detector. Run the cleaned version and the rewritten version through it and compare, rather than trusting either of us on the point.
Can I ask AI to remove a watermark?
You can ask ChatGPT to rewrite a passage, and it will produce new text without the artefacts the old text had. That works, in the narrow sense that the invisible characters won't be there. Two catches, though.
The first is that the new text is still ChatGPT text, so the vocabulary and sentence rhythm a detector scores are still model-shaped. You've swapped one paste for another. The second is that a model is a poor find-and-replace tool. It will rewrite your sentences while it's at it, and you'll lose wording you wanted to keep.
For stripping characters, use something deterministic. For rewriting, a rewrite is the right tool. Mixing the two means you get a worse version of both.
Should you use a watermark remover at all?
For a practical reason, often yes. If you're pasting into a code editor, a form with strict validation, a CMS field, or a document that another person will edit, invisible characters cause genuine problems: failed string comparisons, search that doesn't match, broken line wrapping, and diffs full of changes nobody made. Cleaning that up is just hygiene.
For the reason most people arrive here, no. If the goal is to pass a detector, the characters were never what flagged you. Turnitin, GPTZero and the rest score how predictable your prose is, not what codepoints it contains. Removing a zero-width space and expecting a different verdict is fixing something that was never being read.
And if you're worried about the reverse case, that a stray zero-width space in your own writing makes you look guilty, the honest answer is that it shouldn't and mostly doesn't. Detectors don't read them. A human might notice one in a diff, but Word and Google Docs produce these characters unprompted, so their presence says a document passed through a rendered surface, not who wrote it. Cleaning them is still reasonable if it stops you worrying.
How this was made: the two measurements in this post were taken against this repository's own source on 21 September 2026 and anyone with the file can repeat them. The count of 45 hidden characters comes from reading the INVISIBLE, VARIATION_SELECTORS and NBSP character classes in src/lib/text-cleaner.ts and adding up the ranges, giving 26 plus 16 plus 3. The zero-survivors result comes from building a probe string with one instance of each of those 45 codepoints, running cleanText() over it, and filtering the output for any that remained. The 68 and 40 scores come from running analyzeText() over a 55-word sample we wrote to be ChatGPT-shaped, before and after cleaning; that sample was constructed by us, so it demonstrates the mechanism rather than proving a population-level figure, and a different sample would produce different numbers. The statements about OpenAI's watermarking position and the SynthID and C2PA coverage of images and voice output were checked on 21 September 2026 and are dated in the body for that reason. We have not tested any third-party watermark remover and make no claim about how any of them performs. No detector bypass rate appears anywhere in this post because we have not measured one. Drafting is AI-assisted, with a person verifying each claim against its source, and this post was itself run through the analyser described above before publishing: it scored 11 out of 100, against 68 for the ChatGPT-shaped sample, with the only flagged vocabulary being the words quoted here as examples. That is the same instrument, pointed at our own writing, and you are welcome to check it.
Frequently asked questions
Does ChatGPT watermark its text?
No. Checked on 21 September 2026, OpenAI has built a text watermarking method and has not deployed it. Images generated by ChatGPT do carry SynthID and C2PA content credentials, and voice output has since 31 July 2026, but text typed out in a conversation carries no embedded mark. Anything you find in a paste is a formatting artefact.
What is the ChatGPT watermark people talk about?
Almost always the zero-width space, U+200B, an invisible Unicode character that sometimes appears in text copied out of a browser. It is a rendering and copy-path artefact, not a signal anyone embedded deliberately, and word processors produce similar characters without any AI involved. Finding one tells you text passed through a rendered surface, not who or what wrote it.
How do I remove hidden characters from ChatGPT text for free?
Paste it into a cleaner that strips the relevant Unicode ranges. The free AI text cleaner at aihumaniser.pro runs in your browser with no account and no upload, and removes 45 hidden codepoints covering zero-width characters, variation selectors and non-breaking spaces. Pasting into a plain text editor also works for some of them, but it destroys your formatting and misses non-breaking spaces.
Will removing the ChatGPT watermark stop AI detectors flagging my text?
No. In our own test on 21 September 2026, cleaning every artefact out of a 55-word ChatGPT-shaped sample moved our AI-style score from 68 to 40 out of 100, not to zero. Detectors score how predictable the prose is, mainly through vocabulary and sentence-length variation, and a character remover changes neither. The words and the rhythm survive the clean untouched.
Can I ask ChatGPT to remove its own watermark?
You can ask it to rewrite the passage, which produces text without the old artefacts, but that is a rewrite rather than a removal. The output is still model-generated, so the vocabulary and rhythm a detector measures are unchanged in character, and the model will alter wording you may have wanted to keep. For stripping characters a deterministic tool is more reliable and more precise.
Are invisible characters in my document proof that AI wrote it?
No. Microsoft Word, Google Docs, most CMS editors and ordinary browser copy-paste all introduce non-breaking spaces and zero-width characters without any AI involved. No mainstream AI detector reads these characters at all. Their presence indicates the text moved through a rendered surface at some point, which is true of almost everything written in the last twenty years.
Is a watermark remover the same as an AI humanizer?
No, and the difference is the whole point. A remover deletes specific characters and leaves your words alone. A humanizer rewrites the words, which is what changes the statistical properties detectors actually score. If your text needs to read as yours rather than merely paste cleanly, cleaning it is not the operation you want.
Does removing em dashes help?
It helps with how the text reads to a person, since readers have started treating heavy em dash use as a tell, and it is worth doing for that reason alone. On its own it moves a detector score very little. In the test above, the em dash was one of ten changes that together bought 28 points, and the text still scored 40 afterwards.


