Invisible Character Detector
Reveal zero-width characters, non-breaking and unusual spaces, direction overrides, soft hyphens and control codes, then remove them.
This guide is not yet available in your language and is shown in English.
Tool guide
What this tool does
Invisible Character Detector shows every hidden or look-alike character in your text, with its Unicode code point, name, count and line numbers. It highlights where each one sits and produces a cleaned copy with unusual spaces normalised and the rest removed.
Some characters take up no visible space or look exactly like an ordinary space, yet they change how text behaves. A zero-width space copied from a website makes a password or coupon code fail, a non-breaking space stops a spreadsheet recognising a number, a byte-order mark breaks the first column of a CSV, and right-to-left override characters can disguise a file name or reorder source code, as in the 2021 “Trojan Source” research.
The detector walks through the text code point by code point and checks each against a list of more than 60 known invisible, spacing and formatting characters, plus all C0 and C1 control codes, variation selectors and Unicode tag characters. Joiners inside emoji such as the family sequence are recognised and ignored by default, since removing them would break the emoji. Each finding is listed with its U+ code and line numbers. Nothing leaves your browser.
How to use Invisible Character Detector
- Paste the suspicious text into “Text to inspect”, or click Sample to see typical culprits.
- Check the totals for hidden characters, zero-width characters, unusual spaces and direction controls.
- Read the “Characters found” table for each code point, its name, type, count and the lines it appears on.
- Look at “Where they are”, where every hidden character is shown as a red code tag; hover for its full name.
- Adjust Options to treat emoji joiners, variation selectors and tabs the way you need.
- Copy or download the cleaned text, in which unusual spaces become normal spaces and other hidden characters are removed.
Tips for better results
- If a code or password copied from an email is rejected, paste it here first; a zero-width space is the usual cause.
- Byte-order marks (U+FEFF) at the start of CSV files often show up as strange characters in the first column header.
- Non-breaking spaces are deliberate in French typography before “:” and “?”, so review before replacing them.
- Code reviewers can paste diffs here to catch bidirectional control characters hidden in comments or strings.
Common use cases
- Fixing a promo code, IBAN or password that looks right but fails validation.
- Cleaning text copied from PDFs, Word documents or web pages before importing it into a database.
- Checking source code for Trojan Source bidi characters before merging a contribution.
- Finding why two strings that look identical are not equal in a comparison or search.
Common mistakes to avoid
- Removing zero-width non-joiners from Persian or Hindi text, where they control how letters connect.
- Stripping variation selectors from emoji, which can turn a red heart into a black text-style symbol.
- Assuming the cleaned text is safe to execute; the tool removes hidden characters, not malicious code.
Frequently asked questions
What is a zero-width space?
U+200B is a character with no width that marks a place where a line may break. Websites and word processors insert it for layout, and it is copied along with the visible text, silently breaking searches, codes and comparisons.
Why is a non-breaking space a problem?
U+00A0 looks like a normal space but is a different character. Formulas, search functions and code that split on spaces do not treat it as a separator, so “25 000” may not be read as a number.
What are bidirectional override characters?
Characters such as U+202E force text to display right to left. Attackers use them to make “photo_gpj.exe” look like “photo_exe.jpg”, or to make source code appear different from what the compiler sees.
Will cleaning break emoji?
Not with the default options. Zero-width joiners between emoji and variation selectors after them are kept, so sequences such as 👨👩👧 and ❤️ display correctly after cleaning.
Feedback & suggestions
Help us improve Invisible Character Detector. We read every message.