ChatGPT output often carries narrow no-break spaces (U+202F) and other characters no human types. Check your text for them — and wash them out — in seconds.
🔒 100% private — your text never leaves this browser tabOpenAI has experimented with formal watermarking, but what users actually encounter today is subtler: ChatGPT output frequently contains special Unicode characters that ordinary typing never produces — most famously the narrow no-break space (U+202F), which it inserts before units and percent signs, plus curly quotes, em dashes, real ellipsis characters and occasional zero-width characters. Whether or not you call these an intentional watermark, they function as one: they're invisible or near-invisible, they survive copy-paste, and detectors and sharp-eyed readers know to look for them.
Paste your text above. The fingerprint report counts every suspicious character by name and code point, and the x-ray view shows exactly where each one sits in your text. Red chips are invisible characters, amber highlights are typographic tells, and blue flags are AI cliché phrases like "delve" and "a testament to".
Click Wash it. Invisible and watermark characters are deleted, exotic spaces become normal spaces, smart punctuation becomes plain keyboard punctuation — and the style clichés stay flagged for you to rewrite yourself, because your voice is the one fingerprint worth keeping. Nothing is uploaded; the entire check runs in your browser.
U+202F is the narrow no-break space, a thin space that keeps numbers and units together in professional typesetting. ChatGPT inserts it frequently (for example between a number and %), while virtually no human types it — which makes it one of the strongest single-character indicators of AI-generated text.
It removes the technical fingerprints detectors can key on — hidden characters and machine typography. Statistical detectors also analyze writing style, which no character-level tool can change, so TextWash flags stylistic AI clichés for you to rewrite yourself.
Completely. The page is static JavaScript with no backend: your text is analyzed in your browser and never transmitted anywhere.