Learn · Cleanup
The characters
you cannot see.
Updated 24 August 2026
Zero-width spaces, soft hyphens, and other invisible characters travel inside copied text. Where they come from, what they break, and how to clean them safely.
What counts as invisible
Unicode contains a family of code points that render as nothing, or nearly nothing, yet travel inside text like any other character:
- Zero-width space (U+200B) — an invisible word-break opportunity.
- Zero-width non-joiner and joiner (U+200C, U+200D) — control how neighbouring characters connect.
- Word joiner (U+2060) and the legacy byte-order mark (U+FEFF) — invisible glue.
- Soft hyphen (U+00AD) — shows up only when a word breaks across lines.
- Directional marks (U+200E, U+200F) — steer left-to-right and right-to-left rendering.
- Non-breaking space (U+00A0) — looks like a space, behaves differently.
Related but visible artefacts often travel with them: curly “smart” quotes, en and em dashes, and ellipsis characters substituted by word processors.
Where they come from
Most invisible characters arrive by accident. Word processors substitute them during autocorrect, websites embed them in templates and copy buttons, and they hitch a ride every time text is copied between applications. Some older marking tools also inserted them deliberately as a lightweight fingerprint — which is why a character-level inspection is a standard first step when examining a text’s history.
One thing they are not: Claude’s watermark. Anthropic explicitly states its announced watermark is carried by word-choice patterns and uses no hidden characters. If you find zero-width characters in a Claude draft, they came from somewhere else in the copy chain. The two concerns are separate, which is why our workspace treats them as separate tools.
What they break
Invisible characters are mostly harmless in prose but cause real failures elsewhere. They break exact-match search and deduplication, corrupt diffs and version control, make identical-looking strings compare as different in code and spreadsheets, invalidate URLs and identifiers, and trip form validation. A zero-width space inside a variable name is a genuinely miserable bug to find.
How to find them
Three reliable options, in increasing order of effort: paste the text into our Character cleanup, which counts and removes them in one pass without an LLM; switch on invisible-character rendering in an editor such as VS Code, which highlights suspicious code points inline; or search programmatically for the specific code points listed above.
How to remove them safely
Targeted removal beats blanket stripping. Delete the genuinely problematic characters — zero-width spaces, joiners, byte-order marks, directional marks that serve no purpose — while being deliberate about the rest. Non-breaking spaces are correct typography in some languages, soft hyphens may be intentional in long technical words, and joiners are meaningful in scripts such as Arabic and in emoji sequences.
For prose, a cleanup pass is safe and the visible text is unchanged. For code and URLs, review the diff before accepting changes — that is why the workspace reports the number of characters adjusted rather than silently rewriting.
Quick answers
Are zero-width characters a sign of AI text?
Not by themselves. They appear in ordinary human writing through copy-paste, word processors, and web templates. Some older tools did deliberately insert them as a fingerprint, which is why inspecting for them is still worthwhile — but their presence proves contact with software, not authorship by a model.
Does Claude add invisible characters to its output?
No. Anthropic explicitly states that Claude's announced watermark is carried by word-choice patterns and does not use hidden characters. Cleaning invisible characters and dealing with Claude's watermark are two separate tasks.
Does removing invisible characters change the meaning of text?
The visible text stays identical for prose. Be more careful with code, URLs, and non-English typography: a non-breaking space can be intentional in French punctuation, and stripping characters inside source code or links can change behaviour.
What is the fastest way to clean a draft?
Paste it into the Character cleanup tool in our workspace. It runs without an LLM, removes the problematic code points, and reports exactly how many characters were adjusted so you can verify what changed.
Working on a draft now? The workspace combines character cleanup, semantic rewrite, and humanize. It is free to try without an account, and it does not promise a particular detector outcome.
Open the text workspace →Sources
- Unicode Standard — The Unicode Consortium · current version and code charts
- Unicode chart — General Punctuation U+2000–U+206F, including zero-width and directional characters
- Anthropic announcement — How Claude’s text watermark works · August 14, 2026