InputTestHub

Invisible Character Detector

Finds zero-width spaces, byte order marks, non-breaking spaces and direction overrides hiding in your text, then removes them.

Lab Nothing uploaded No sign-up Free, unlimited
Lab tool
Paste something on the left to see the result.
In short When a value looks identical to the one you are comparing it against but the lookup still fails, the answer is very often a character you cannot see. Zero-width spaces from a copy out of a web page, a byte order mark left by a Windows editor, non-breaking spaces pasted from Word, or a directional override sitting between two visible letters. Twenty categories are detected here, including U+200B, U+FEFF, U+00A0 and U+202E, and the highlighted view shows exactly where each one sits so you can decide whether it belongs before deleting it. Some of them are legitimate: non-breaking spaces exist for a reason and zero-width joiners hold emoji sequences together. The one that is never innocent in ordinary text is U+202E, the right-to-left override, which reverses everything after it on screen while leaving the underlying bytes untouched — that is how a file called "exe.txt" can display as "txt.exe" and vice versa. These characters come from copying out of rendered documents rather than from typing, which is why they appear in pasted config values, spreadsheet exports and anything that has been through a word processor on its way to a code editor.

How to use the Invisible Character Detector

  1. Paste your text into the input box on the left.
  2. Adjust the options above the box if you need a different behaviour.
  3. The converted text appears on the right; press Copy to put it on your clipboard.

About the Invisible Character Detector

The Invisible Character Detector finds zero-width spaces, byte order marks, non-breaking spaces and direction overrides hiding in your text, then removes them. It runs as plain JavaScript inside the page, which means there is no upload step, no queue and no size limit imposed by a server — the only limit is your own device.

What people use it for

  • Working out why two strings that look the same do not match.
  • Fixing a CSV or JSON file that will not parse but looks fine.
  • Cleaning text copied out of a PDF, Word document or web page before importing it.

Details

Detects20 categories of invisible and deceptive characters
IncludesU+200B, U+FEFF, U+00A0, U+202E and the rest
Outputthe same text with them removed or normalised
The highlighted view shows exactly where each character sits, so you can decide whether it belongs there before stripping it.

Explained in our guides

All guides

Frequently asked questions

Where do these characters come from?
Copying from web pages, PDFs, Word, Google Docs and chat applications. Word processors insert non-breaking and thin spaces for typography; PDFs carry layout artefacts; some sites deliberately insert zero-width spaces to break automated scraping.
Why does my lookup fail when the value looks right?
Because a zero-width space or a non-breaking space is a real character that your eyes cannot see and your database comparison certainly can. This is one of the most common causes of "the data is definitely correct but the join returns nothing".
What is U+202E and why is it flagged?
The right-to-left override. It reverses the display order of everything after it, which is the classic trick for making a file called <span class="mono">exe.txt</span> appear as <span class="mono">txt.exe</span>. It has legitimate uses in bidirectional text, and no business at all in a filename or a username.
Does cleaning break non-English text?
It can. Zero-width joiners and non-joiners are meaningful in Persian, Urdu, Hindi and emoji sequences, so removing them changes correct text. Check the highlighted positions before using the cleaned output on anything multilingual.
Is the Invisible Character Detector free, or is there a paid tier?
It is free, with no account, no trial and no daily cap. Every lab tool on inputtesthub.com works the same way: open the page and use it.
Is the Invisible Character Detector safe to use with private information?
No. The Invisible Character Detector runs entirely in your browser using JavaScript. Because the work happens locally, the page also keeps working if your connection drops, and closing the tab is all it takes to discard everything.
When would I actually need the Invisible Character Detector?
The most common reasons people reach for it: working out why two strings that look the same do not match. Fixing a CSV or JSON file that will not parse but looks fine. Cleaning text copied out of a PDF, Word document or web page before importing it. It is built for exactly those cases rather than being a general-purpose tool with this bolted on.
Is there a catch?
The highlighted view shows exactly where each character sits, so you can decide whether it belongs there before stripping it.
What figures does the Invisible Character Detector work from?
Detects is 20 categories of invisible and deceptive characters. Includes is U+200B, U+FEFF, U+00A0, U+202E and the rest. Output is the same text with them removed or normalised. These are printed on the page itself, so you do not have to take them on trust.
Will this work on a tablet?
Yes. The page is responsive and the page works in Chrome, Safari, Firefox, Edge and Samsung Internet on both Android and iOS. There is no app to install and nothing to sign into.

Related lab tools

All 30
02

Mojibake Fixer

Repairs text mangled by the wrong character encoding — the "’" and "é" problem — by…

06

Sentence Rhythm Analyzer

Measures the variation in your sentence lengths — the thing that makes prose readable, which…

07

Recipe Scaler

Rescales every quantity in a recipe for a different number of servings, keeping fractions…

08

CSV Column Analyzer

Profiles every column of a CSV — type, blanks, distinct values, ranges — and flags the ragged…

09

Fuzzy Duplicate Finder

Finds lines that are nearly the same, not just identical — catching "Acme Ltd." against "Acme…

10

RTL and Bidi Text Checker

Shows how right-to-left text renders against how it is stored, and finds unmatched embeddings…