Skip to main content

Zero Width Character Detector: Find and Remove Invisible Characters

Find and strip zero-width spaces, the BOM, no-break spaces and other invisible characters, then copy clean text — runs in your browser

  • Runs locally
  • Category Text
  • Best for Removing repetitive cleanup work from everyday writing and operations.
Cleaning

Delete every invisible character.

What this tool does

Paste text and this tool finds every zero-width and invisible character hiding in it, then cleans it out. It catches the zero-width space (U+200B), zero-width non-joiner (U+200C), zero-width joiner (U+200D), the byte-order mark (U+FEFF), no-break space (U+00A0), left-to-right and right-to-left marks (U+200E / U+200F), word joiner (U+2060), Mongolian vowel separator (U+180E) and a long tail of format controls and exotic spaces. For each kind it shows the code point (U+XXXX), the Unicode name and how many times it appears, and a preview marks every hit in red so you can see exactly where it was. Clean two ways: remove all invisibles, or normalize — turn invisible spaces into a normal space while deleting the zero-width family. Then copy the cleaned text in one click. Everything runs locally in your browser; nothing you paste is uploaded.

Tool details

Input
Files + Text
The page exposes text boxes, numeric controls, file pickers, or structured inputs depending on the tool.
Output
Live result + Copy + Preview
The result area focuses on usable output, with copy, download, or preview actions when supported.
Privacy
Browser-side processing
The main tool logic does not call an external API, so inputs normally stay in the current tab.
Save / share
Shareable URL state
Key settings are encoded in the URL so another person can reopen the same setup.
Performance budget
Initial JS <= 9 KB
No WASM budget is declared, keeping the tool quick to open on mobile.
Best fit
Text · Developer
Category and role tags drive related tools, internal links, and quick fit checks.

How to use

  1. 1. Input

    Paste or drop your content into the tool panel.

  2. 2. Process

    Click the button. All processing is local in your browser.

  3. 3. Copy / Download

    Copy the result or download to disk in one click.

How Zero Width Character Detector fits into your work

Use it to clean, compare, reshape, or extract plain text before it goes into a document, CMS, spreadsheet, or prompt.

Text jobs

  • Removing repetitive cleanup work from everyday writing and operations.
  • Making text easier to compare, paste, publish, or feed into another tool.
  • Working with content locally when the text is private or unfinished.

Text checks

  • Scan for unintended whitespace, duplicate lines, and lost punctuation.
  • For long text, test the first few lines before applying the whole change.
  • Copy the final output only after checking the preview.

Good next steps

These links move the current task into a more complete workflow.

  1. 1 Unicode Character Inspector Inspect any text character-by-character: code points, UTF-8/UTF-16 bytes, HTML entities, JS escapes, names, and hidden zero-width / confusable glyphs. Open
  2. 2 Text File Cleaner Upload a text file and remove BOM, null bytes, trailing spaces, and excessive final blank lines locally. Open
  3. 3 Find and Replace Text Batch find-and-replace on big text — regex, $1 capture groups, whole-word, case toggle, multiple chained rules — runs entirely in your browser Open

Real-world use cases

  • Fix a JSON or CSV that won't parse

    A config file throws "Unexpected token in JSON at position 0" but looks identical to a working one. The culprit is almost always a U+FEFF BOM at the front from a Windows export. Paste the file, see the BOM flagged at position 0, remove all, copy the clean version, and the parser stops choking.

  • Clean a function name or variable copied from docs

    You copy "getUserById" out of a styled API doc into your editor and it errors as undefined. Hidden U+200B characters split the identifier. Paste it here, the table shows two zero-width spaces, hit remove-all, and paste back a name that actually matches the symbol.

  • Strip a zero-width watermark from AI or pasted text

    Text generated by a model or lifted from a tracked document can carry a pattern of zero-width joiners as a covert fingerprint. The detector lists every U+200D hit and marks its position; remove-all neutralizes the pattern so the text is plain content again.

  • Normalize no-break spaces before a string comparison

    A scraped price field reads "$ 9.99" but your equality check fails. The space is a U+00A0 NO-BREAK SPACE, not a real space. Switch to normalize mode to turn it into a plain space, copy the result, and your comparison and split(' ') start working.

Common pitfalls

  • Assuming "looks identical" means "is identical". Two strings can render the same pixel-for-pixel yet differ by a hidden U+200B or U+00A0. Always check the bytes, not the glyphs, when an equality test fails on text that looks right.

  • Using remove-all on text that contains real emoji. The zero-width joiner U+200D glues multi-part emoji like 👨‍👩‍👧 together; deleting it splits the family into three separate emoji. The preview marks every U+200D so you can eyeball emoji before you clean.

  • Stripping the BOM from a file that another tool actually expects. A leading U+FEFF breaks JSON parsers but some legacy CSV importers rely on it to detect UTF-8. Know the consumer before you remove a leading BOM, or you trade one bug for another.

Privacy

Detection, cleaning and the preview are plain JavaScript that runs inside your browser tab. The text you paste never leaves the page, is never uploaded to a server, and is not logged anywhere. Only the cleaning mode (remove vs normalize) is kept in the URL so a shared link reopens with your chosen option; the text itself is deliberately never put in the URL, because pasted text here is often sensitive — leaked secrets, private documents, or AI output under review. Close the tab and nothing remains.

FAQ

Tool combos

Folks in your role tend to reach for these alongside this tool.

Made by Toolora · 100% client-side · Updated 2026-05-29