Hidden character cleaner

Invisible character & watermark remover

Find and strip the zero-width spaces, soft hyphens and other hidden characters that travel with text copied from ChatGPT, PDFs and documents.

Scan my text

How it works

Paste, detect, clean.

1

Paste the copied text

Anything copied from a chat window, a PDF, a Word file or a web page. The word counter shows your plan limit.

2

Detect

The hidden-character scan runs in your browser and lists every type it found with a count. The style scan scores em-dash density, hedging, stock transitions and uniform sentence length.

3

Remove and copy

Switch to Remove to get a cleaned version with the hidden characters stripped and, when the style scan flagged the text, a rewrite of the flagged patterns.

What hidden characters are, and why copied text carries them

Unicode has dozens of characters that render as nothing at all. They exist for good reasons: a zero-width joiner tells a font how to connect two glyphs, a soft hyphen marks where a long word may break, a byte order mark tells a program how a file is encoded. The trouble starts when they leave the context they were meant for. Copy a paragraph out of a chat window, a PDF or a Word document and the invisible characters come along with the words.

Once they are in your text they cause quiet problems. Find-and-replace stops matching words that look identical. Character counts and word counts drift. Forms reject input that looks fine. Source code fails to compile on a line that looks correct. Plagiarism and similarity tools flag "hidden text". And because some services deliberately seed pasted text with zero-width characters to fingerprint where it came from, a cluster of them is a small tell that the text was copied rather than typed.

The "ChatGPT watermark" story started this way. In 2025 people noticed narrow no-break spaces (U+202F) inside text copied from ChatGPT and read it as a covert watermark. It behaved like a formatting quirk rather than a signal, and it stopped appearing, but the lesson stuck: when text comes out of a model interface, check it for characters you cannot see.

What this tool detects and removes

Code pointCharacterWhy it matters
U+200BZero-width spaceThe classic hidden character; used to break words invisibly and to fingerprint copied text.
U+200C / U+200DZero-width non-joiner and joinerControl how letters connect. Harmless inside emoji sequences, meaningless inside English prose.
U+2060 / U+FEFFWord joiner and byte order markPrevent line breaks; a BOM at the start of a file often survives copy and paste.
U+00ADSoft hyphenMarks where a word may break. Invisible until the line wraps, then a hyphen appears out of nowhere.
U+00A0 / U+202FNo-break and narrow no-break spacesLook like spaces, are not spaces. The narrow one is the character behind the 2025 "ChatGPT watermark" story.
U+200E / U+200F, U+202A-202EDirectional marks and overridesBidi controls that can reorder how text displays; a known trick for hiding content in code and links.
U+E0000-E007FUnicode tag charactersInvisible letters that can spell out hidden messages after an emoji.

The hidden-character scan runs in your browser; the text is not sent anywhere for that part. On the Remove tab the zero-width and formatting characters are deleted, no-break spaces become normal spaces, soft hyphens are dropped and line separators are normalised. Joiners and variation selectors inside emoji sequences are left alone so your emoji keep rendering.

The second pass is a style read. It scores the tells detectors key on: em-dashes in a high share of sentences, hedging words, stock transitions such as furthermore and moreover, sentences of nearly identical length, repeated sentence openers and a shortlist of phrases such as it is important to note. If that scan comes back strong, Remove also offers a rewrite that trims those patterns while keeping the meaning. The score is a heuristic about style, not a watermark reading; treat it that way.

What it does not do: statistical watermarks

A statistical watermark is not made of characters. The model is nudged, at each step, to prefer some words over near-synonyms according to a secret key, and the owner of the key can later test a passage and see whether the preferred words show up more often than chance. Nothing is hidden in the text itself; the signal is spread across ordinary word choices, so no character cleaner can find it or remove it.

This now matters in practice. Claude models released after 2 August 2026 carry an invisible statistical word-choice watermark, announced by Anthropic in Claude text watermark. There is no public detector, which means nobody outside Anthropic can tell you whether a passage still carries it, and this tool does not try. Google's SynthID Text watermarks Gemini output the same way. Heavy paraphrasing weakens these signals, but weakening is not the same as removing, and we will not claim otherwise.

ChatGPT is the odd one out: OpenAI has researched text watermarking but has not shipped a public, checkable one. What ChatGPT text carries is a style that detectors have learned. To see how a passage scores, run it through the AI detector; to rework the style, use the humanizer, which re-checks its own output. Background reading: does Claude have a watermark?, how AI text watermarks work and AI watermark removal tools compared.

When to run it

  • Before pasting copied text into a CMS, a learning platform, a form or a code editor.
  • Before running an AI detector or a word counter, so hidden characters do not skew the tokens.
  • When find-and-replace misses words that are clearly there, or a line of code refuses to compile.
  • When a similarity checker reports hidden or white text you never added.

FAQ

Watermark questions, answered.

Does ChatGPT watermark its text?
Not with a public, checkable watermark. OpenAI has researched statistical text watermarking but has not shipped one users or teachers can verify as of 2026. What ChatGPT output does carry is a recognisable style, and at times chat interfaces have inserted odd characters such as narrow no-break spaces into copied text. This tool finds and strips those characters and scores the style tells.
What are zero-width and other invisible characters, and why are they in my text?
They are Unicode characters that render as nothing: zero-width spaces and joiners, word joiners, byte order marks, soft hyphens, directional marks and tag characters. Chat windows, PDFs, Word documents and web pages leave them behind when you copy. They break search-and-replace, inflate character counts, trip form validation and can look like hidden text to plagiarism software.
Does this remove the Claude watermark?
No, and no character cleaner can. Claude models released after 2 August 2026 carry an invisible statistical watermark in their word choices, announced by Anthropic, with no public detector. It is not made of characters, so stripping characters leaves it untouched. Heavy rewriting weakens it, but nobody outside Anthropic can confirm whether it is gone.
Does it remove Gemini SynthID watermarks?
No. Google SynthID Text watermarks Gemini output the same way, by biasing which words the model picks. That signal lives in the wording, not in hidden characters, so it survives any cleaner. We do not claim to handle it.
Will cleaning hidden characters make the text pass an AI detector?
No. Detectors score word choice, rhythm and predictability, not invisible characters. Cleaning removes a distraction that can skew word counts and tokenisation; it does not change how the prose reads. To see how the text scores, run it through the AI detector, and if you want to rework the style, use the humanizer.
Is the tool free?
You need a free account, and each run uses one daily credit. Pro accounts run it without the daily cap and with a higher word limit. The counter under the input box shows the limit for your plan.
What does the Remove tab actually change?
It deletes zero-width and formatting characters, turns no-break spaces into normal spaces, drops soft hyphens and normalises line separators. If the style scan flagged strong AI-style tells, it also offers a rewrite that trims em-dashes, hedging and stock transitions while keeping the meaning. Emoji sequences that legitimately use joiners are left alone.

Plain statement of scope: this page cleans invisible characters and flags AI-style tells. It does not detect or remove the statistical watermarks in Claude or Gemini text, and it does not make text pass AI detectors.