The·quick[ZWSP U+200B]·brown·fox[Word Joiner U+2060]·jumps·over·the·lazy·dog.¶ Invisible·characters·survive[Soft Hyphen U+00AD]·copy·and·paste[VS16 U+FE0F],·which·is·why¶ a·JSON·key·like·[ZWJ U+200D]"id"[ZWJ U+200D]·stops·matching·the·one·in·your·database.¶ This·line·ends·with·a·non·breaking·space·and·a·soft[Soft Hyphen U+00AD]·hyphen.
Hover any character for its codepoint, category and name. 231 characters.
| Codepoint | Class | Count | First positions |
|---|---|---|---|
| U+200D | Zero-width characters | 2 | 123, 128 |
| U+200B | Zero-width characters | 1 | 9 |
| U+2060 | Zero-width characters | 1 | 20 |
| U+FE0F | Variation selectors | 1 | 91 |
| U+00AD | Other formatting marks | 2 | 75, 222 |

A Claude watermark remover strips invisible Unicode characters out of text so what you paste is exactly what you see. Invisible characters are real codepoints that occupy no width on screen: zero-width joiners, the 256 variation selectors, bidirectional controls, tag characters, and private-use codepoints. They survive copy and paste, they travel through email and CMS fields, and they are counted by every program that measures a string, which is why a JSON key stops matching, a password comparison fails, or a diff shows two identical-looking lines as different.
This tool does two jobs. The detector scans your text and reports every invisible character it finds, grouped by class, with its exact codepoint and how many times it occurs, so you can see what is in there before you change anything. The remover then strips whichever classes you choose and hands back clean text. Both run entirely in your browser - nothing is uploaded, logged, or stored, which matters when the text you are cleaning is an unpublished draft, a contract, or a customer record.
One thing worth being precise about, because most pages on this topic are not. Claude's official text watermark, introduced in August 2026, is not made of invisible characters. It is a statistical watermark: token choices are nudged according to a key Anthropic holds, and the signal is spread across hundreds of words rather than stored in any single character. That means no client-side tool can remove it by deleting characters, and no client-side checker can confirm its presence or absence without that key. Anyone claiming otherwise is describing something else.
What this tool removes is the invisible Unicode that genuinely does appear in AI output, in text pasted from documents and PDFs, and in anything that has passed through a rich-text editor. That is a real and separate problem, and it is the one that breaks your code. The same scan works on output from Claude, ChatGPT, Gemini, and any other model, because invisible characters are a property of the text, not of the model that produced it.
Use it to clean your own drafts before they go into a database, to sanitise text before a string comparison, to check why a JSON payload will not parse, or to audit content you have been handed and cannot vouch for. The findings table doubles as an explanation: each class says what those characters do and why their presence matters.
Drop in any text - an AI response, a document excerpt, a JSON payload. It stays in your browser; nothing is sent to a server.
The detector lists every invisible character by class and codepoint, with a count. An empty table means the text is clean.
Every class is on by default. Turn one off to keep it - variation selectors, for example, are load-bearing in emoji sequences.
Copy the result and re-scan it if you want proof. A cleaned string reports zero invisible characters.
Zero-width joiners, variation selectors (both blocks), tag characters, bidi controls, invisible math operators, formatting marks, and all three private-use areas.
Each finding names the exact codepoint in U+ notation with an occurrence count, so you can verify against the Unicode standard rather than trust a total.
Strip classes independently. Emoji sequences depend on zero-width joiners and variation selectors, so deleting everything is not always right.
Non-breaking and typographic spaces are replaced with a plain space rather than deleted, because removing them would join two words.
Rewrite the habits that make prose read as machine-written - inflated vocabulary, hedge phrases, em dashes, and connective filler.
Measure the patterns that make text read as machine-written: sentence-length variation, overused vocabulary, hedging and em dash density.
Escape and unescape strings for JSON online - handles quotes, backslashes, newlines, tabs, control characters, and \uXXXX Unicode, with optional quote wrapping
Reverse any text string instantly. Supports file upload and URL loading with auto-reverse option.
0 comments
No comments yet. Be the first to share your thoughts!