Text toolsInvisible character remover

Invisible character remover

Detect zero-width spaces, byte-order marks, soft hyphens, word joiners, and non-breaking spaces that can break forms or code.

Ready to clean
Your text never leaves this device
0 characters · 0 words
0 characters · 0 words
A focused cleanup

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.

  1. 1
    Paste 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.

  2. 2
    Decide 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.

  3. 3
    Clean 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

Fixing rejected form input
Cleaning copied code
Normalizing imported data

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.

What invisible Unicode characters are and why they break thingsRead the guide · 7 min read
Good to know

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.