Invisible Character Remover

Find and remove zero-width spaces, BOM, soft hyphens, bidi control characters and non-breaking spaces. Shows a table of what was removed. Private.

Options

Runs entirely in your browser. Your data is never uploaded.

What is Invisible Character Remover?

Detects and removes characters you cannot see but that break code, searches, URLs and data imports: zero-width spaces and joiners, the byte-order mark (BOM), soft hyphens, bidirectional control characters (including the RLO used in "Trojan Source" tricks) and other Unicode format characters. Special spaces such as NBSP can be turned into normal spaces, and a table lists every character removed with its code point and count.

How to use Invisible Character Remover

  1. Paste the suspicious text into the Input box.
  2. Check the options: replace special spaces, keep joiners inside emoji, remove control characters.
  3. Copy the clean text from Output.
  4. Review the table to see which hidden characters were found.

Example

Input
a​b c
Output
ab c

Removed: U+00A0 NO-BREAK SPACE (replaced by a space), U+200B ZERO WIDTH SPACE, U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM)

When to use Invisible Character Remover

Use it when code fails with "unexpected character", when two seemingly identical strings do not match, when CSV headers have a BOM, or when copied text contains hidden tracking characters. Removing ZWJ/ZWNJ can change the rendering of scripts such as Persian, Hindi or Malayalam that use them intentionally, so review the table before using the result for those languages.

How Invisible Character Remover works

Every code point is checked against a list of known invisible characters (U+200B–U+200F, U+202A–U+202E, U+2060–U+2064, U+2066–U+206F, U+FEFF, U+00AD, U+180E, Hangul fillers and others) and against the Unicode category Cf (format characters). Matches are removed and counted. Special spaces (U+00A0, U+2000–U+200A, U+202F, U+205F, U+3000) are replaced by U+0020 when that option is on. With "Keep joiners inside emoji" a U+200D between two pictographs and emoji tag characters are kept, so sequences like 👩‍💻 do not fall apart. Control characters other than tab, line feed and carriage return can also be removed.

Common Use Cases

  • Fixing code or JSON that fails because of a pasted zero-width space
  • Removing a BOM from the first CSV header
  • Detecting bidi override characters in source code reviews
  • Cleaning text copied from websites, PDFs or chat apps
  • Normalising non-breaking spaces before comparing strings

Security Note

Hidden bidi and zero-width characters are used in homograph and "Trojan Source" attacks to make code or links look different from what they are. The removal table helps you see them; processing happens only in your browser.

FAQs

What is a zero-width space?

U+200B is a character with no width that marks a possible line break. It is invisible but makes strings unequal and can break code and URLs.

Will this break my emoji?

Not with Keep joiners inside emoji on (the default). Emoji such as 👩‍💻 and flag sequences rely on hidden joiners and tag characters, which are kept.

What are bidi control characters?

Characters like U+202E RIGHT-TO-LEFT OVERRIDE change the display direction of text. They are legitimate in some RTL text but can also be used to disguise code or file names.

Is a non-breaking space invisible?

It looks like a normal space but behaves differently in searches and comparisons. The tool replaces it with a regular space when Replace non-breaking and special spaces is on.

Explore more categories