Invisible character remover
Detect zero-width spaces, byte-order marks, soft hyphens, word joiners, and non-breaking spaces that can break forms or code.
How to use invisible character remover
When text looks right and behaves wrong — a rejected email address, a search that misses, two "identical" strings that compare as different — the cause is usually a character that paints nothing. This tool counts them first, then removes them.
- 1Paste the suspicious text
The detection note under the editor immediately reports how many hidden characters are present — zero-width marks, byte-order marks, soft hyphens, and non-breaking spaces. A count of zero is an answer too: the problem lies elsewhere, and that alone can save a debugging detour.
- 2Decide what happens to non-breaking spaces
Convert non-breaking spaces, on by default, turns each one into an ordinary space — deleting them would run the neighbouring words together. Untick it if the destination genuinely needs them, and only the truly invisible characters will go.
- 3Clean and re-test whatever failed
Select Clean text, copy the result, and retry the thing that was failing — the form field, the search, the comparison. The visible text is identical; only the invisible payload is gone.
When this tool is useful
What it removes, and the one conversion it makes instead
Removed outright: zero-width spaces (U+200B), stray zero-width joiners and non-joiners, word joiners (U+2060), byte-order marks (U+FEFF), and soft hyphens (U+00AD). All render as nothing, all arrive by copying — from web pages, chat windows, PDFs, and word processors — and all break exact matching, because software compares characters rather than appearances.
The non-breaking space is handled differently because it is not invisible — it renders exactly like a space, which is what makes it treacherous. It is converted to an ordinary space rather than deleted, so the words around it stay separated. This one conversion resolves most "looks identical, compares different" mysteries in text copied from the web, where every became one.
Joiners are the one exception, because they are sometimes load-bearing. A family emoji is several emoji held together by zero-width joiners, and in Persian, Hindi, and other scripts a joiner or non-joiner changes how letters connect. A joiner is kept when it sits between emoji or non-Latin letters; between Latin letters, or beside a space, it is a stray and goes.
Invisible character remover questions
A hidden character is probably inside it — a zero-width space or a non-breaking space picked up when the text was copied. The validator compares the actual characters, not what you can see, so an address that reads perfectly can still fail.
Paste it here: the counter under the editor reports the number found before you clean anything. Zero means the problem is something visible-but-different instead, such as a curly quote or a doubled inner space.
Deleting one removes the separation and runs the two neighbouring words together. Converting it to an ordinary space preserves what you see while fixing what compares.
No. Composed emoji keep the zero-width joiners that hold them together, and joiners inside Persian, Arabic, or Indic words are kept too. This tool does not touch directional marks at all.
Copying, almost never typing. Web pages contribute non-breaking spaces via , chat and AI interfaces leak zero-width marks from their rendering, PDFs leave soft hyphens at former line endings, and files that crossed between systems can carry a byte-order mark inward.