About this tool
Text can carry characters that take up no space on screen and still change what it means: a zero-width space that breaks a search, a right-to-left override that makes code read differently from how it compiles, a run of Unicode tag characters spelling out an instruction only a language model will read, or a Cyrillic а inside a Latin word so that a link goes somewhere else. Paste text here, or drop a text file of up to 20 MiB — the encoding is detected automatically — and every suspicious character is shown in place as a badge such as ZWSP, RLO or TAG a, with its code point, Unicode name and category. Nothing is uploaded; the analysis runs in this tab.
What is flagged
Bidirectional controls — U+202A to U+202E, U+2066 to U+2069, and the LRM, RLM and ALM marks — the mechanism behind Trojan Source attacks, where source code reviewed on screen is not the code the compiler sees. Zero-width characters: U+200B ZWSP, U+200C ZWNJ, U+200D ZWJ, U+2060 WJ and U+FEFF. Unicode tag characters U+E0000 to U+E007F, decoded back to the ASCII they hide — a known way to smuggle instructions to an LLM in a prompt injection. Unusual spaces: NBSP, thin and narrow spaces, the ideographic space U+3000. Variation selectors, where many in a row may carry hidden data. Other format characters such as the soft hyphen, control characters, and private-use code points. Look-alike letters: Cyrillic or Greek letters mixed into a Latin word — paypal spelled with a Cyrillic р and а, for instance — found as mixed-script words using the Unicode UTS #39 confusables data. Three modes, prose, code and URL-or-username, change only the severity shown, not what is detected.
What is recognised as legitimate
Not every zero-width character is an attack. Emoji ZWJ sequences (the family and profession emoji), flag tag sequences, emoji presentation selectors, ZWNJ and ZWJ inside Persian and Indic scripts, the ideographic space in Chinese and Japanese text, and a leading BOM are all shown as information rather than warnings. Clean removes the bidi, tag and zero-width characters by default and leaves those legitimate uses alone; look-alike letters are replaced only in the words you confirm one by one, because a Greek word in a Greek sentence is not a fake. Copy the result or download it as a file.
Limits
Finding these characters does not mean the text was written by AI; finding none does not mean it was not. Many “ChatGPT watermark characters” claims are ordinary typography — a non-breaking space, a narrow space, an em dash — that word processors and web pages have inserted for decades. The look-alike check only sees mixed scripts: a word spelled entirely in Cyrillic is a valid Cyrillic word to it. The legitimate-use judgement can be wrong in either direction. And confusion that happens at the font level, such as a lower-case l and an upper-case I that look identical in some fonts, is not a Unicode matter and is not detected.