What invisible characters are
Unicode includes dozens of characters whose job is layout, joining, or direction control rather than display: the zero-width space marks a permissible line-break point, the zero-width joiner glues emoji sequences together, directional marks manage mixed left-to-right and right-to-left text, and the byte-order mark identifies a file's encoding. All are legitimate — in the right place. Pasted into an identifier, a URL, a spreadsheet key, or a password field, they turn "identical" strings into different ones while looking exactly the same on screen.
Where they come from
Almost always from copy-paste. Chat apps and word processors insert non-breaking spaces and smart typography; web pages embed zero-width spaces to control wrapping (and sometimes to watermark text); PDFs and terminals leak control characters; files saved on one system carry a byte-order mark into another. Text generated by AI assistants and text passed through translation tools are further common sources. You never typed the character, but it's in your clipboard — and then in your code, your form, or your database.
Why they break code, forms, and spreadsheets
Because computers compare codepoints, not appearances. "admin" with a trailing zero-width space is a different string from "admin", so the login fails, the lookup misses, the deduplication keeps both rows. A non-breaking space inside a number stops it parsing as numeric. A byte-order mark at the top of a script file produces a baffling syntax error on line 1. A right-to-left override can even make a filename display in a misleading order. The symptom is always the same: two things that look identical behave differently — and the diagnosis is to reveal what's actually there, which is what the inspector above does.
Common invisible characters reference chart
| Character | Codepoint | Category | What it does |
|---|
Frequently asked questions
What is a zero-width space?
U+200B, a character with no width at all. Its legitimate purpose is marking where a long word may break across lines in scripts without spaces. In practice it's the classic copy-paste saboteur: invisible in every editor, yet enough to make string comparison, URLs, and username matching fail. The detector highlights each one inline as a red ZWSP badge.
What's the difference between a non-breaking space and a normal space?
Both look identical, but the non-breaking space (U+00A0) tells layout engines not to wrap the line at that point — and it is a different codepoint, so "a b" with an NBSP won't equal "a b" with a regular space, and numbers containing one won't parse. Word processors insert NBSPs liberally, which is why they're the most common hidden character in pasted text. The convert to regular spaces option swaps them for ordinary spaces so your visual spacing survives the cleanup.
How did these characters get into my text?
You copied them along with the visible text — from a web page, chat, document, PDF, terminal, or generated text. They travel invisibly through the clipboard. There's no way to see them at paste time without a tool like this; the tell-tale symptom is code or forms rejecting text that "looks fine".
Will cleaning break my emoji?
It can, knowingly: multi-person and profession emoji are built from several emoji glued by zero-width joiners (U+200D), so removing ZWJs splits them into their components. If your text contains such emoji, untick the zero-width joiner row and remove only the other types — that's exactly what per-type removal is for.