Invisible Character Detector
Find and remove zero-width spaces, non-breaking spaces, BOMs, bidi overrides, soft hyphens and hidden Unicode tag characters. Paste text below to see every invisible character highlighted with its code point and position — it all runs in your browser.
Input text
Highlighted text
Each invisible character is shown as a coloured ⟦badge⟧ — hover it for the code point, name and position. Bidi controls are neutralised here so you see the logical order.
Findings
Clean the text
Remove these categories
Normalize
Cleaned text (69 code points removed)
Copy an invisible character
Need a blank character for a username, a test fixture or to stop a line from breaking? Copy one of these.
Zero width space (ZWSP) U+200B
Allows a line break without a visible space
Zero width non-joiner (ZWNJ) U+200C
Prevents ligatures / joining
Zero width joiner (ZWJ) U+200D
Joins emoji sequences
Word joiner (WJ) U+2060
Zero-width, prevents line breaks
Hangul filler U+3164
Blank but has width — common for blank usernames
Braille pattern blank U+2800
Blank glyph that survives most trimming
Why invisible characters end up in your text
- Copy-paste from Word, Google Docs, Slack, Notion or web pages. Rich editors insert non-breaking spaces, soft hyphens and zero-width spaces for layout; they travel along when you paste into code, a terminal or a spreadsheet.
- File encodings. Windows tools often save UTF-8 with a byte order mark (U+FEFF). It breaks JSON parsers, CSV headers (
"\uFEFFid"≠"id") and shell shebangs. - Code that silently breaks. A zero-width space inside an identifier, URL or API key makes two strings that look identical compare as different, and causes "unexpected token" errors that are impossible to spot by eye.
- Trojan Source (CVE-2021-42574). Bidirectional override and isolate characters (U+202A–U+202E, U+2066–U+2069) can make source code display differently from how the compiler reads it, hiding malicious logic in code review.
- ASCII smuggling / hidden prompts. Unicode tag characters (U+E0020–U+E007E) mirror ASCII but are invisible. Attackers use them to hide prompt-injection instructions in web pages, emails or documents that an LLM will read but a human reviewer will not see. This tool decodes them for you.
- "AI watermarks". There are claims that ChatGPT and other models embed zero-width characters as a watermark. Mainstream models do not do this systematically; stray NBSPs or narrow no-break spaces in AI output usually come from training data and formatting. Still, it is worth cleaning text before publishing it.
Remove vs replace vs normalize
Remove deletes the selected categories. Replace unusual spaces turns NBSP, thin, em and ideographic spaces into a regular space (and Unicode line/paragraph separators into a newline) so words don't get glued together. NFKC normalization additionally folds compatibility characters such as ligatures (fi → fi) and full-width letters; use NFC if you only want to merge combining accents. For trailing whitespace and tab/space mixing, use the whitespace inspection in the Text Toolbox; to count characters and bytes, use the String Length Calculator.