The invisible label on your content

A watermark is a signal placed in content so that its origin can be checked later. In images it can be a pattern in the pixels. In text there are no pixels to hide things in, so there are only two places a mark can live: in characters you can't see, or in the choice of words.

Kind one: invisible characters

Unicode contains characters that take up no visible space or look identical to ordinary ones: zero-width spaces, narrow no-break spaces, non-standard quotation marks. Text containing them looks normal and behaves strangely in code, spreadsheets and plagiarism checkers.

In 2025 users noticed that some ChatGPT models were producing narrow no-break spaces in longer answers and wondered whether it was a hidden watermark. OpenAI said it was not: it described the characters as a quirk of training, not a tracking feature. Either way, the characters were real, and they are easy to find and remove.

Kind two: statistical watermarks

The serious approach hides the signal in word choice. A language model picks each next word from many plausible options. A watermarking scheme nudges those picks using a secret key, so that across a few hundred words the text carries a pattern that is invisible to a reader but measurable by anyone holding the key.

Google DeepMind's SynthID Text works this way. It was described in a scientific paper in 2024, released as open source, and is used with Gemini. OpenAI has said it built a text watermarking method as well and held back from releasing it.

Who watermarks text

The picture is uneven and changes quickly. Some large providers apply statistical watermarks to at least part of their output. Many models, including most open-weight models that you can download and run, apply none. Transparency rules are tightening: the EU's AI Act includes obligations to mark AI-generated content in a machine-readable way.

Treat any table of "who watermarks what" as out of date by the time you read it, including the ones in articles like this.

How to check your text

  • Invisible characters: paste the text into a tool that reveals hidden Unicode, or search for characters such as U+200B, U+200C, U+200D, U+202F and U+FEFF in a code editor.
  • Statistical watermarks: you can't check these yourself. Detection needs the provider's key or the provider's own detector.
  • AI detectors are a different thing. They guess from writing style, they are often wrong, and they flag fluent non-native writers unfairly. A detector score is not proof of anything.

Cleaning invisible characters

Removing stray characters is ordinary text hygiene, the same as fixing curly quotes before pasting into code.

  • Paste as plain text, then run a find-and-replace for the hidden characters listed above.
  • Normalise the text (NFKC normalisation in most programming languages) and collapse unusual spaces to normal ones.
  • Check the result in a hidden-character viewer before publishing.

What about statistical watermarks?

They weaken when text is heavily edited, paraphrased or translated, because the pattern depends on the exact words. Short passages carry too little signal to detect at all. That is a known limit of the technology, and it is why providers describe watermarks as one signal among several.

The better reason to rewrite AI text is quality. A draft you have restructured, cut and filled with your own facts is better writing, and it is honestly yours.

The part cleaning doesn't change

If your school, employer, publisher or client requires you to disclose AI use, that duty exists whether or not the text carries a mark. Removing a watermark to pass off AI work where disclosure is required is dishonest, and it is the kind of thing that ends badly when the drafts are requested.

Where UncutGPT fits

UncutGPT gives you 220+ models from many providers in one place. Whether a given model's output is watermarked is decided by that model's provider, and we can't verify it for each one. If hidden characters matter for your workflow, run the cleaning steps above on any AI text, from any tool.