Invisible Character Detector & Remover
Reveal hidden characters that cause visually identical lines to not match. Paste your text to see exactly where non-breaking spaces, zero-width spaces, tabs, and other invisible characters are hiding.
Try an example:
Input
Type or Drag & Drop a file
Invisible Chars Found
Paste text on the left to scan…
Invisible Character Reference
| Badge | Code Point | Name | Detected |
|---|---|---|---|
| [NBSP] | U+00A0 | No-Break Space | ✓ Yes |
| [ZWS] | U+200B | Zero-Width Space | ✓ Yes |
| [ZWNJ] | U+200C | Zero-Width Non-Joiner | ✓ Yes |
| [ZWJ] | U+200D | Zero-Width Joiner | ✓ Yes |
| [BOM] | U+FEFF | Byte Order Mark | ✓ Yes |
| [WJ] | U+2060 | Word Joiner | ✓ Yes |
| [CR] | U+000D | Carriage Return (\r) | ✓ Yes |
| [TAB] | U+0009 | Horizontal Tab | ✓ Yes |
| [SHY] | U+00AD | Soft Hyphen | - |
| [NNBS] | U+202F | Narrow No-Break Space | - |
| [LRM] | U+200E | Left-to-Right Mark | ✓ Yes |
| [RLM] | U+200F | Right-to-Left Mark | ✓ Yes |
| [RTLO] | U+202E | Right-to-Left Override | ✓ Yes |
| [LSEP] | U+2028 | Line Separator | - |
| [PSEP] | U+2029 | Paragraph Separator | - |
| [HAIR] | U+200A | Hair Space | - |
| [HAN-F] | U+3164 | Hangul Filler | ✓ Yes |
| [BRL] | U+2800 | Braille Pattern Blank | ✓ Yes |
| [ISPACE] | U+3000 | Ideographic Space | - |
Frequently Asked Questions
What is an invisible character?
Invisible characters are Unicode code points that render as whitespace or take up no visible space, but are technically different from a regular space. They frequently appear in data copied from web pages, PDFs, spreadsheets, and exported database fields.
Common types detected by this tool:
Common types detected by this tool:
- NBSP (U+00A0) - looks identical to a regular space but is a different character; inserted by HTML editors and word processors
- ZWS (U+200B) - completely invisible, takes up no space; the #1 cause of "identical" lines that don't match
- ZWJ / ZWNJ - control whether adjacent characters join; common in Arabic, Persian, and emoji sequences
- BOM (U+FEFF) - prepended to files by Windows Notepad, Excel, and PowerShell; makes the first line never match
- CR (U+000D) - carriage return; part of Windows CRLF line endings, causes trailing-character mismatches
- TAB (U+0009) - horizontal tab; from TSV files, code editors, and terminal copy-paste
Why would two lines look identical but not match?
A regular space (U+0020) and a non-breaking space (U+00A0) are visually identical but completely different character codes. When comparing lists, an item with a trailing NBSP will not match the same item with a regular space - even though both look identical on screen.
Zero-width spaces are even harder to spot: they take up no visible space at all, so you have no visual indication they are present until a comparison or database lookup fails unexpectedly.
This tool reveals exactly where each invisible character is hiding so you can clean your data before comparing.
Zero-width spaces are even harder to spot: they take up no visible space at all, so you have no visual indication they are present until a comparison or database lookup fails unexpectedly.
This tool reveals exactly where each invisible character is hiding so you can clean your data before comparing.
Where do invisible characters come from?
The most common sources are:
- Web pages - HTML frequently uses NBSP (the
entity) for layout; any copy-paste from a website can bring these along - PDFs - spacing and line endings are often inconsistent when text is extracted
- Spreadsheets - Excel and Google Sheets sometimes insert ZWS in formatted cells
- Database exports - some databases preserve NBSP in text fields from their source applications
- Mobile keyboards - some insert NBSP instead of a regular space after punctuation
- Word processors - Microsoft Word and similar apps use non-breaking spaces in formatted text
How do I remove invisible characters from my list?
- Paste your text into the input box. The annotated panel shows each invisible character as a coloured badge (e.g. [NBSP], [ZWS]) so you can see exactly where they appear.
- Copy from the Cleaned panel below, which shows the same text with all invisible characters stripped out.
What is a non-breaking space (NBSP)?
A non-breaking space (U+00A0) looks identical to a regular space but has a different character code (160 vs. 32). It was originally designed to keep adjacent words on the same line - for example, keeping "100 km" together so they don't wrap at a line break.
Where it comes from: HTML editors (the
Why it causes problems: Any exact string comparison treats NBSP as distinct from a regular space, causing unexpected mismatches in list comparisons, database lookups, and imports - even when the text looks identical on screen.
Where it comes from: HTML editors (the
entity), word processors like Microsoft Word, and some mobile keyboards that insert it after punctuation.Why it causes problems: Any exact string comparison treats NBSP as distinct from a regular space, causing unexpected mismatches in list comparisons, database lookups, and imports - even when the text looks identical on screen.
What is a zero-width space (ZWS)?
A zero-width space (U+200B) takes up no visible space at all - it is completely invisible to the eye. It was originally designed to mark optional line-break points in scripts that don't use spaces between words (such as Thai or CJK text).
Where it comes from: Text scraped from web pages, content from certain CMS platforms (WordPress sometimes inserts them), and documents converted from rich text formats.
Why it causes problems: Because it is invisible, you have no way of knowing it is present until a comparison, database lookup, or import fails unexpectedly. It is the most common cause of "identical" lines that refuse to match.
Where it comes from: Text scraped from web pages, content from certain CMS platforms (WordPress sometimes inserts them), and documents converted from rich text formats.
Why it causes problems: Because it is invisible, you have no way of knowing it is present until a comparison, database lookup, or import fails unexpectedly. It is the most common cause of "identical" lines that refuse to match.
Can I use this before comparing lists?
Yes - cleaning invisible characters first is one of the best preparation steps before using the Compare Two Lists or Multi-List Compare tools.
Copy the cleaned output from this tool and paste it into the comparison tool. Both tools also have an "Ignore leading/trailing spaces" option that catches NBSP at line boundaries - but the Invisible Character Detector is more thorough: it finds and removes all invisible characters regardless of where they appear in a line.
Copy the cleaned output from this tool and paste it into the comparison tool. Both tools also have an "Ignore leading/trailing spaces" option that catches NBSP at line boundaries - but the Invisible Character Detector is more thorough: it finds and removes all invisible characters regardless of where they appear in a line.
Related reading