Best Free Invisible Character Detectors and Removers (2026): 6 Tools Compared
If you need to find invisible characters in a text, paste it into a detector that shows each hidden character with its Unicode code point (for example U+200B) and its position, then remove what you do not need. For a one-off check, an online inspector is enough. For files and code, an editor that highlights invisible Unicode (VS Code, Notepad++) or a regular expression is more reliable. If privacy matters, prefer tools that run entirely in your browser.
Invisible characters are real Unicode characters that take no visible space or look like an ordinary space: the zero width space U+200B, zero width joiner and non-joiner (U+200D, U+200C), the word joiner U+2060, the byte order mark U+FEFF, the soft hyphen U+00AD, the no-break space U+00A0 and narrow no-break space U+202F, bidirectional controls (U+202A–U+202E, U+2066–U+2069), "blank" letters such as the Hangul filler U+3164, and Unicode tag characters (U+E0000–U+E007F) that can carry hidden ASCII text. They break search, comparisons, CSV imports, usernames and code, and they travel with copy and paste.
How we compared
We used five criteria that matter in practice and can be checked on the tool’s own page:
- What it finds: only zero-width characters, or also unusual spaces, bidi controls, tag characters and homoglyphs (look-alike letters from another alphabet).
- Code point and position: does it show which character and where, or just a count.
- Removal: does it give you clean text, and can you choose what to keep (for example the joiner inside emoji).
- Where processing happens: in your browser, on the vendor’s server, or locally in an installed program.
- Limits and sign-up: only what the vendor publishes.
We did not rate "accuracy" with a score: all of these tools look at the same Unicode code points. The differences are in coverage, presentation and privacy.
Quick comparison (October 2026)
| Tool | What it finds | Code point and position | Removes | Processing | Limits / sign-up |
|---|---|---|---|---|---|
| PromoPilot Invisible Character Remover | ~50 listed characters, all Unicode format (Cf) characters, tag characters, homoglyphs | Yes: highlighted in the text, code in the tooltip, counts by type | Yes, with options | Browser | Up to 100,000 characters per run, no sign-up |
| invisible-characters.com decoder | Invisible and non-printable characters | Yes: highlighted, code point and name | Not stated (viewer) | Browser, judging by the page code | Not published |
| SoSci Survey "View non-printable characters" | Every character of the string | Yes: decimal and hex code for each character | No | Their server (form submit); page says nothing is stored | Not published |
| gizza.ai Zero-Width Character Cleaner | Zero-width, BOM, bidi controls, soft hyphen; unusual spaces optional | Via a replacement marker you choose | Yes | Browser (WebAssembly) | Not published; ads on the page |
| Visual Studio Code | Invisible and ASCII-confusable characters in the editor | Yes, highlighted in place | By hand or with regex replace | Local program | Free |
| Notepad++ (Windows) | A fixed list: NBSP, Unicode spaces, ZWSP/ZWJ/ZWNJ, bidi controls, BOM and more | Yes: a small box with the code point or abbreviation | By hand or with regex replace | Local program | Free |
The tools, by what they are best at
PromoPilot Invisible Character Remover — best for cleaning text from chatbots, Word and websites
Our Invisible Character Remover highlights every hidden character directly in your text, shows its code point and name on hover and counts them by type: zero-width, format/bidi, special spaces, line separators and homoglyphs. Then it gives you clean text to copy. Options let you replace no-break and narrow spaces with ordinary ones, fix mixed Cyrillic/Latin letters inside a word and, if you want, convert typographic quotes and dashes to ASCII. Two details we have not seen elsewhere: the joiner inside emoji sequences such as 👨👩👧 is kept, so emoji do not fall apart, and text hidden in Unicode tag characters is decoded and shown. Everything runs in your browser, up to 100,000 characters per run, with no account.
Two related pages use the same engine. The AI Text Cleaner also removes markdown, em dashes, emojis and extra blank lines, with a diff of every change. The Invisible Character page is for the opposite task (copying a blank character for a nickname), but it has a quick check field that lists which invisible characters a short text contains. If you would rather check a page by URL, the text watermark detector does it on our server.
invisible-characters.com — best for seeing names of characters at a glance
The decoder on invisible-characters.com highlights invisible and non-printable characters in the text you paste and shows their code points and names; you can click a character to learn more about it. The same site lists dozens of invisible characters with a copy button. The page does not describe a cleaning function, so use it to understand what is in the text and clean it elsewhere. Judging by the page code, the decoding runs in the browser; no limits are published.
SoSci Survey — best for a character-by-character dump
The SoSci Survey tool prints every character of your string in a row with its decimal and hexadecimal code, so a U+00A0 or U+FEFF stands out next to ordinary letters. This is handy for a short string such as a password field value, a username or a CSV header. The text is sent to their server through a form; the page says it does not store the text, cookies or IP addresses. It does not remove anything.
gizza.ai — best for a quick local clean with switches
The gizza.ai Zero-Width Character Cleaner removes zero-width characters, the BOM, bidirectional controls and soft hyphens, each with its own switch, and can optionally turn non-breaking and unusual spaces into ordinary ones. A replacement field lets you put a visible marker such as [zwsp] in place of each removed character, which is a simple way to see where they were. According to the page, it runs in the browser via WebAssembly and nothing is uploaded. The page itself warns that removing zero-width joiners splits emoji sequences, so turn that switch off if you need to keep them.
Visual Studio Code — best for source code and config files
Since version 1.63 VS Code highlights uncommon invisible characters and characters that can be confused with ASCII by default. The release notes mention the "Trojan Source" style of attack and are honest about the limits: detection of ambiguous characters is heuristic and does not catch every spoofing case. The highlighting can be tuned with the editor.unicodeHighlight.* settings. For bulk cleaning, use Find and Replace with a regular expression (see below).
Notepad++ — best for text files on Windows
In Notepad++, View → Show Symbol → Show Non-Printing Characters draws each such character as a small box with its code point or abbreviation, as described in the Notepad++ user manual. The manual’s table covers the no-break space, Unicode spaces, ZWSP, ZWNJ, ZWJ, LRM/RLM, bidi embeddings and isolates, the narrow no-break space, the word joiner and the BOM. The soft hyphen and tag characters are not in that list, so for text from the web a dedicated detector is still useful.
Regex: find invisible characters without any tool
In VS Code (Find with the regex button on) and in most programming languages you can search for a character class. This one covers the common zero-width characters, the soft hyphen, bidi controls and the BOM:
[\u200B-\u200F\u00AD\u2060\u202A-\u202E\u2066-\u2069\uFEFF]
Add \u00A0\u202F if you also want no-break spaces. With GNU grep the same search over files looks like this (macOS grep does not support -P):
grep -nP '[\x{200B}-\x{200F}\x{00AD}\x{2060}\x{FEFF}]' file.txt
A regex only finds what you list. It will not catch homoglyphs and will happily delete a joiner inside an emoji, so check the result.
About "AI watermarks" made of invisible characters
Many people search for this because they heard that ChatGPT hides invisible characters in its answers. There is no confirmed watermark of this kind. OpenAI has discussed statistical text watermarking in public but has not announced that ChatGPT marks text with hidden characters. Google’s SynthID Text, used for Gemini, is a statistical signal in word choice, not separate characters. Invisible characters in AI answers are best treated as formatting and copy-paste artifacts: they come from typography, web interfaces, Word or Google Docs. Removing them is worth doing before you publish, but it does not change a single word, so it has no effect on statistical watermarks or on AI detector scores. We cover this in detail in hidden watermarks and invisible characters in text.
How to choose
- One text from a chatbot, Word or a website: paste it into a browser-based remover and copy the clean result.
- You need to know exactly what is there (a support ticket, a bug report): use an inspector that shows each code point, such as SoSci Survey or invisible-characters.com.
- Code, configs, CSV: open the file in VS Code or Notepad++ and fix it there, so you do not paste sensitive data into a website.
- Many files: use a regex in your editor or a script.
- Confidential text: choose tools that run in the browser or locally; avoid forms that send text to a server.
What our tools do not do
- They do not make AI text "human" and do not change AI detector results: they remove characters, not wording. For style, see how to read an AI text check.
- They do not prove where a text came from. A text without invisible characters can still be AI-generated, and a human-written text can contain them.
- Homoglyph fixing covers Cyrillic/Latin (and some Greek) look-alikes inside one word; other scripts are only cleaned of invisible characters.
- The browser tools process up to 100,000 characters per run; longer texts are trimmed with a warning. There is no file upload or batch mode.
Related: hidden watermarks and invisible characters, how to remove a machine style from text and our review of ways to remove the Gemini watermark.