ChatGPT watermark checker & detector
ChatGPT Hidden Characters & AI Watermark Checker
Use this free ChatGPT watermark checker and AI watermark checker to run watermark checks on text pasted from ChatGPT, Claude, Gemini, or Copilot. Acts as a ChatGPT watermark detector and AI watermark detector for invisible Unicode — zero-width spaces, BOM, bidi marks — then lets you remove them without changing a single visible word.
What the hidden characters actually are
When you copy text from a ChatGPT reply or a Claude response, the clipboard can include Unicode codepoints that are invisible in most applications but very real in the underlying byte stream. The most common ones:
| Codepoint | Name | Effect |
|---|---|---|
U+200B | Zero-width space (ZWSP) | Invisible word-break opportunity; breaks byte comparisons |
U+200C | Zero-width non-joiner (ZWNJ) | Affects rendering in Arabic/Persian; invisible in Latin text |
U+200D | Zero-width joiner (ZWJ) | Used in emoji sequences; stray copies break string matching |
U+FEFF | Byte-order mark (BOM) | Causes "command not found" errors at the start of pasted shell commands |
U+202A–U+202E | Bidi embedding controls | Can flip RTL/LTR rendering; used in "Trojan Source" code attacks |
U+00A0 | Non-breaking space (NBSP) | Looks like a space; breaks word-wrap rules and string splits |
Which AI models produce them — and why
These characters are not a deliberate watermarking scheme from any of the major labs. They appear because:
- Markdown rendering — chat interfaces render model output as HTML. When you copy the rendered text, the browser clipboard serialises formatting artifacts that were never in the raw model output.
- Tokeniser edge effects — some tokenisers use zero-width joiners to represent multi-byte sequences or emoji; these occasionally leak into the output text.
- Code blocks — syntax-highlighted code blocks sometimes prepend a BOM or embed invisible characters for copy-to-clipboard functionality.
ChatGPT, Claude, Gemini, Copilot, and most other web-based AI chat tools can all produce output that carries these characters on copy. The frequency varies by interface version and operating system clipboard behaviour.
Why hidden characters cause real problems
Invisible Unicode breaks things that look identical to the human eye:
- Code fails in the terminal — a zero-width space before the first letter
of a shell command produces
command not foundeven when the command looks correct. A BOM at the top of a Python file can break the shebang line. - Git diffs show phantom changes — two lines that look identical can produce a diff because one side has an extra U+200B. Reviewers waste time chasing invisible noise.
- Search engines and CMSes see different content — two strings that render identically will not match in a byte-level uniqueness check, a translation memory, or a full-text search index.
- Database uniqueness constraints fire unexpectedly — an invisible character in a username or slug makes it "unique" even when it visually duplicates an existing entry.
- RTL layout corruption — stray bidi embedding controls can flip text direction in mixed-language UIs.
Why this is not really a "ChatGPT watermark" — but why it still matters
People searching for a ChatGPT watermark checker or ChatGPT watermark remover often have one of two things in mind:
- Invisible characters from copy-paste — the problem described on this page. Deterministic, verifiable, fixable.
- Statistical / SynthID-class watermarks — a signal hidden in which tokens were sampled, spread across the wording of the entire text. Not detectable by character inspection; not fixable without rewriting the prose.
OpenAI, Google, and others have not publicly released keys or detectors for statistical watermarks in their production APIs. A tool that claims to "remove the ChatGPT watermark" by paraphrasing is guessing, not detecting. This tool only addresses the first class — invisible Unicode codepoints — because those are verifiable and losslessly removable.
How to check for hidden characters
- Go to the Text tab on AI Watermark Remover
- Paste your ChatGPT, Claude, or Gemini output
- Click Check
-
The result card shows:
- A count of each invisible codepoint type found
- The exact character offsets so you can pinpoint the location
- Whether any C2PA or AI metadata is also present (for file uploads)
- If hidden characters are found, the Clean it button becomes active. If none are found, the button stays disabled — the text is already clean.
How to remove ChatGPT hidden characters
After Check reports invisible characters, click Clean it. The cleaner:
- Removes all listed invisible codepoints (ZWSP, ZWNJ, ZWJ, BOM, bidi controls, tag characters)
- Optionally maps non-breaking spaces and other exotic space variants back to a standard space (U+0020)
- Optionally applies NFKC normalization and Latin/Cyrillic homoglyph mapping
- Does not rewrite, paraphrase, or change any visible word — the text content is identical after cleaning, only the byte-level format characters are gone
You can immediately re-run Check on the cleaned output to confirm the count of invisible characters drops to zero. The operation is fully transparent and reversible (you still have the original).
Will removing hidden characters fool AI detectors like GPTZero?
No. Style-based AI detectors (GPTZero, Originality.ai, Turnitin) analyse the wording — sentence structure, perplexity, burstiness — not the invisible byte layer. Removing zero-width spaces does not change a single word, so the detector score will be essentially unchanged.
Cleaning invisible characters is text hygiene, not evasion. It fixes real engineering problems (broken diffs, failed searches) and cleans up formatting artifacts. It is not a way to make AI-generated writing "pass" as human.
FAQ
Does ChatGPT add a hidden watermark to text?
ChatGPT does not embed a deliberate tracking watermark in plain text output (as of the current public API). Copy-paste can introduce invisible Unicode characters as a side effect of clipboard serialisation. These are a formatting artifact, not a cryptographic mark.
How do I check my text for ChatGPT hidden characters?
Paste into the Text tab on this tool and click Check. The detector lists each invisible codepoint type and count. If any are found, the Clean button activates.
What are zero-width spaces and why do they matter?
Zero-width spaces (U+200B) are real Unicode codepoints invisible in most editors. They break byte-level comparisons, cause diffs to show phantom changes, and can make shell commands fail.
Will cleaning the text change any visible words?
No. Only invisible format characters are removed. Every visible letter, number, and punctuation mark stays in place.
Does removing them fool AI detectors?
No. Style detectors analyse wording, not invisible byte characters. Cleaning zero-width spaces has no effect on a GPTZero or Turnitin score.
Does this work for Claude, Gemini, and Copilot too?
Yes. The invisible character problem is not specific to ChatGPT — it can occur when copy-pasting from any web-based AI chat interface. The checker and cleaner work the same way regardless of the source model.