Type 1 — Zero-width Unicode characters
The most prevalent type in current AI web applications. These are Unicode code points that have no visible glyph and zero advance width: the cursor moves right by exactly zero pixels. They survive copy-paste from browser to document without any visual trace. Common examples include:
- U+200B — Zero-width space
- The most common AI watermark character. Inserted between words or letters.
- U+200C — Zero-width non-joiner
- Legitimate in Arabic/Farsi text to suppress ligatures. Anomalous in Latin-script documents.
- U+200D — Zero-width joiner
- Used in emoji sequences. Present in plain text without emoji it is always an artefact.
- U+2060 — Word joiner
- Functionally equivalent to a zero-width no-break space. Sometimes substituted for U+200B in newer models.
- U+FEFF — Byte-order mark
- The UTF-8 BOM. Legitimate only at the start of a file; mid-text placement is always an insertion artefact.
Type 2 — Punctuation substitutions
AI models are trained on typographically rich corpora and default to curly ('smart') quotation marks and em dashes instead of their ASCII equivalents. While these are valid Unicode and cause no encoding errors, they are out of place in code, APIs, databases, and CMS fields that expect straight ASCII punctuation. Claude is particularly associated with em-dash substitution.
- U+2013 En dash / U+2014 Em dash
- Used instead of a simple ASCII hyphen. A reliable predictor of Claude and GPT-4 authorship in detector training sets.
- U+00AD — Soft hyphen
- Invisible in normal rendering, visible at line breaks. Used as a positional marker, not a real hyphen.
- U+2018–U+201D — Curly quotes
- Typographically correct but break SQL queries, JSON strings, and many CLI tools that expect straight quotes.
Type 3 — Non-breaking and special spaces
Several space characters outside U+0020 appear in AI text. Non-breaking spaces (U+00A0) prevent line breaks and cause layout issues in responsive HTML. Narrow no-break spaces (U+202F) appear around certain punctuation in French-locale models. Ideographic spaces (U+3000) appear in CJK model outputs mixed with western text. All are harmless semantically but disruptive in structured contexts.
Type 4 — HTML and data-attribute fingerprints
When you export or copy from ChatGPT's web interface, the clipboard payload includes HTML tags with proprietary data attributes: data-message-id, data-start, data-end, and data-scroll-id. These attributes uniquely identify the conversation and the position of each token within it. Pasting into a rich-text editor or CMS that accepts HTML input will silently embed these fingerprints in your document's source code.
Type 5 — Statistical token-probability watermarks
Implemented at the model level, statistical watermarks work by partitioning the model's vocabulary into a 'green list' and a 'red list' at each generation step. The model's logits are shifted to favour green-list tokens. The bias is small enough that output quality is unaffected, but across a whole document the green-token surplus is statistically detectable with high confidence. Google SynthID for text uses this approach. No character scanner can detect or remove these watermarks.
Type 6 — Semantic and paraphrase-resistant watermarks
Research prototypes embed watermarks by choosing between synonyms or sentence restructurings that preserve meaning but carry a hidden bit. Because the watermark is in the semantics rather than the surface form, it survives paraphrasing. These watermarks are not yet deployed in consumer AI products but are the subject of active standardisation efforts under the EU AI Act's provenance-transparency provisions.