ChatGPT Watermark Detector & Hidden Character Checker

Paste text to find zero-width spaces, invisible Unicode, look-alike letters and odd spacing, then copy a clean version.

Enter a page URL — text will be automatically extracted for analysis

Want to clean the text right away, with every hidden character highlighted? Clean text →

ChatGPT watermark checker for hidden characters

Check text for hidden characters that ChatGPT output, web pages or PDFs can carry: zero-width spaces, invisible Unicode format characters, look-alike letters from another alphabet and odd spacing. The report lists each type with counts, and the clean copy is one click away.

Zero width space detector: U+200B–U+200F, U+2060, U+FEFF, soft hyphen U+00AD
Homoglyphs: Cyrillic letters hidden in English words, fullwidth and Greek look-alikes
Other invisible Unicode format characters, including bidi controls
Suspicious spacing: runs of double spaces and trailing spaces
Clean copy: invisible characters removed, look-alikes replaced, spacing normalised
Paste text or a page URL, no sign-up

How to Use

  1. Paste the text (or a page URL) and pick the text language.
  2. Read the finding types and the detail lines under them.
  3. Copy the clean text after checking nothing you need was stripped.

Use Cases

  • Scan AI-assisted drafts before publishing guest posts.
  • Detect hidden characters in UGC and comments.

Limitations

  • Analyzes plain text input, not binary DOC/PDF files.
  • Heuristic detection: suspicious symbols are not always malicious.

Example Input / Output

Example Input
A paragraph pasted from an AI chat with two U+200B and a Cyrillic "о" inside "document".
Example Output
Found: zero_width_characters, homoglyph_substitution; hidden characters: 3; clean version ready to copy.

FAQ

A mark you cannot see while reading: zero-width characters, look-alike letters (a Cyrillic "а" in place of a Latin "a"), unusual spaces. They are used to tag copies of a document and trace leaks. Statistical watermarks of AI text generators are a different class: they live in word choice, and only the key holder can check them.

OpenAI has not announced a text watermark in ChatGPT: in 2024 it said it had built one but held it back. Stray invisible characters do show up in answers, as quirks of model output or copy-paste. This checker finds those characters; it does not prove a text is AI-written.

They break Ctrl+F and site search, word counts, spell checking, promo codes, links and code pasted from a chat. A look-alike letter turns a word into a different word for search. And they give away that the text was copied.

ChatGPT watermark detector: what can actually be found in a text

People search for a ChatGPT watermark detector expecting a hidden signature that proves a text came from an AI. Here is what is real. OpenAI has said it built a text watermarking method and decided not to ship it, partly because rewording, translation or a second model wipes it out. Google does watermark Gemini output with SynthID Text, but that mark lives in the choice of words, and only Google's own tools can check it. Neither of these can be read by an independent checker, including this one.

What a checker can find is everything that sits in the text as characters: zero-width spaces, invisible format characters, look-alike letters from another alphabet and unusual spacing. These come from AI chat interfaces, from copying web pages and PDFs, and sometimes from people who tag copies on purpose. Paste the text, and the report lists each type it found, with a detail line under the badges, for example Found 2 zero-width/invisible characters.

Does ChatGPT add hidden characters?

Sometimes, but not as a declared watermark. In April 2025 users noticed narrow no-break spaces (U+202F) in answers from newer ChatGPT models and called them a watermark. OpenAI did not confirm that, and the character appears in ordinary typography too (French punctuation, numbers like 10 000). Zero-width spaces and soft hyphens in a pasted answer can also come from the app or page you copied it from, so the character alone does not tell you its origin.

Two practical conclusions:

  • Finding an invisible character does not prove the text is AI-written. Not finding one does not prove the opposite.
  • If you care about U+202F specifically, check it with the command below: this detector treats U+202F as a normal space and does not flag it.

For a judgement about authorship, use a style-based tool such as the AI text detector, and treat its score as a hint, not a verdict.

How to read the report

The badges are the finding types. Each one means a specific rule fired:

BadgeWhat triggered itCommon innocent cause
zero_width_charactersAny of U+200B–U+200F, U+2060–U+2064, U+FEFF, U+00AD and a few othersCopying from web pages, soft hyphens from Word, BOM at the start of a file, emoji sequences
homoglyph_substitutionA Cyrillic letter next to Latin ones (in English mode), fullwidth or Greek look-alikesMixed-language keyboards, brand names typed with the wrong layout
invisible_unicodeOther Unicode format characters (category Cf), e.g. bidi controls U+202A–U+202EText copied from Arabic or Hebrew interfaces, messengers
spacing_steganographyMore than 5 runs of two or more spacesManual alignment, PDF extraction
trailing_space_steganographyMore than 3 lines ending in spacesCode editors, email clients
statistical_biasOne two-letter word ending appears in over 15% of wordsLists and repetitive text; this is a rough heuristic, not an AI watermark test
metadata_markersStrings like c2pa:, xmp:, the phrases "AI-generated" or "Generative AI", UUIDs, long base64 blobsAn article that simply talks about generative AI, IDs in URLs

The confidence percentage is not a probability that the text is AI-generated. It is a formula that grows with the number of finding types and characters found: one zero-width character gives about 46%, several types quickly reach 100%. Read the detail lines, not the number.

Zero width space detector: the characters, one by one

CodeNameFlagged?Where it is legitimate
U+200BZero width spaceYesLine-break hints in long URLs and Thai, Khmer text
U+200CZero width non-joinerYesPersian, Hindi and other scripts: removing it changes spelling
U+200DZero width joinerYesEmoji sequences like family or profession emoji: removing it splits them
U+200E / U+200FLeft-to-right / right-to-left markYesMixed English and Arabic or Hebrew text
U+2060Word joinerYesRare; prevents a line break
U+FEFFByte order markYesStart of a UTF-8 file saved by some Windows editors
U+00ADSoft hyphenYesOptional hyphens from Word and hyphenated web pages
U+00A0No-break spaceNo, normalised in the clean copyNormal typography: 10 km, Mr. Smith
U+202FNarrow no-break spaceNoFrench typography, thousands separators

Check text for hidden characters without uploading it

If the text is confidential, check it locally.

Microsoft Word

Show/Hide ¶ (Ctrl+Shift+8) reveals spaces, no-break spaces and optional hyphens, but not zero-width spaces. To find those, open Find and type ^u8203 (the decimal code of U+200B); ^u8204, ^u8205 and ^u65279 find ZWNJ, ZWJ and BOM. Replace with nothing to remove them.

Google Docs

Docs has no mode that shows zero-width characters. Paste the text into this checker or into a code editor, clean it there and paste it back.

VS Code and other code editors

VS Code highlights invisible Unicode characters by default (setting editor.unicodeHighlight.invisibleCharacters), so hidden characters show up as boxes.

Command line

This prints every line that contains a zero-width character, BOM, soft hyphen or U+202F, and works on macOS and Linux:

perl -CSD -ne 'print "$.: $_" if /[\x{200B}-\x{200F}\x{2060}-\x{2064}\x{FEFF}\x{00AD}\x{202F}]/' text.txt

And this lists each suspicious character with its position and Unicode name:

python3 -c "import sys,unicodedata as u
t=open(sys.argv[1],encoding='utf-8').read()
[print(i,hex(ord(c)),u.name(c,'?')) for i,c in enumerate(t) if u.category(c)=='Cf' or c in '  ­']" text.txt

Where hidden characters actually cause damage

  • URLs and slugs. A zero-width space pasted into a link or a CMS slug produces an address that looks right and returns 404.
  • Codes and logins. Promo codes, API keys and usernames copied from a chat fail validation with no visible reason.
  • Source files. A BOM before <?php sends output before headers and triggers "headers already sent"; some JSON and CSV parsers choke on it or read it into the first column name.
  • Search and counts. A word with a hidden character or a Cyrillic letter inside is a different word for Ctrl+F, site search and spell checkers, and word counters disagree.
  • Titles and snippets. A soft hyphen in a title or meta description can surface as a visible hyphen when the text is reflowed elsewhere.

Removing hidden characters safely

The clean copy does more than delete zero-width characters. Know what changes before you publish it:

  • Zero-width and format characters are removed, including the joiners inside emoji sequences and the non-joiners that Persian or Hindi spelling needs.
  • Look-alike letters are replaced with the expected alphabet. A mixed word such as a Latin brand name with a Cyrillic suffix will be changed too.
  • Runs of spaces collapse to one, and trailing spaces are trimmed.
  • Strings caught as metadata_markers are deleted, including the phrases "AI-generated" and "Generative AI", UUIDs and long base64 strings. If your text discusses AI or contains IDs, restore them by hand.
  • Em and en dashes become hyphens, curly quotes become straight quotes and no-break spaces become ordinary spaces. This happens silently and is not counted as a finding.

If you only want to strip invisible characters and keep typography, use the Word replace method or the Perl command with s///g instead.

What a clean result does not prove

"No watermarks detected" means none of the rules above fired. It does not mean the text is human-written, and it says nothing about statistical watermarks such as SynthID Text. Retyping, translating or paraphrasing a text removes character-level marks completely, which is exactly why providers moved to statistical ones.

Images, video and audio carry provenance differently, in file metadata such as C2PA manifests. For those, use the image watermark detector, the video watermark detector and the audio watermark detector.

RankBotAI — AI SEO Optimization for WordPress

RankBotAI AI plugin automatically finds and fixes SEO issues in WordPress products and posts — no manual editing.

Products & Posts Automatic Optimization Free Trial
Cascading link building Bonus $30Backlinks 5→50→5000 on 100+ platforms. Starting from $30, $30 bonus for newcomers.

Why check text for hidden characters?

Invisible characters slip into text when you copy from AI chats, web pages, PDFs and messengers, and look-alike letters are sometimes planted on purpose to tag a copy. The detector shows exactly what it found and gives you a clean version. It does not tell whether a text was written by AI, and it cannot see statistical watermarks that only their owner can verify with a private key.