Invisible Character Detector
Paste your text below to instantly reveal hidden Unicode characters — zero-width spaces, non-breaking spaces, byte-order marks, bidirectional controls, smart quotes and the special tag characters linked to AI text watermarks. Everything runs in your browser, so nothing you paste leaves your computer. When you are done, copy the cleaned text with one click.
Paste or type text above to scan it.
How the detector works
The tool walks through your text one Unicode code point at a time — correctly handling emoji and other characters made of surrogate pairs — and compares each one against a built-in table of problematic code points. Ordinary letters, digits, punctuation, spaces, tabs and line breaks are left alone. Anything that is invisible, a control code, an unusual space, a directional control or a common typographic substitute is flagged, counted and located. Because the table is embedded in the page, the scan happens instantly and offline.
What it flags
| Category | Examples | Why it matters |
|---|---|---|
| Zero-width & invisible | ZWSP (U+200B), ZWNJ, ZWJ, Word Joiner (U+2060), BOM (U+FEFF), soft hyphen (U+00AD) | Invisible to the eye but counted by software; break passwords, search and string comparisons. |
| Unusual spaces | Non-breaking space (U+00A0), narrow/figure spaces, ideographic space (U+3000) | Look like a normal space but have a different code; break CSV columns, code indentation and lookups. |
| Control characters | C0/C1 controls, line/paragraph separators, replacement char (U+FFFD) | Often leftover from bad encoding conversions; corrupt files and terminals. |
| Bidirectional controls | LRM, RLM, RLO (U+202E) and isolates | Can reorder how text displays — the basis of the "Trojan Source" code attack. |
| Tag / smuggled characters | U+E0000–U+E007F tag block | Can encode a hidden ASCII message inside ordinary-looking text; discussed as an AI watermark vector. |
| Typographic substitutes | Smart quotes, en/em dashes, ellipsis | Valid characters, but unwanted in code, JSON, CSV and many forms; optional to straighten. |
Common ways to use it
Developers paste a stubborn line of code or a JSON key to find the zero-width space that is
causing a parser error. Writers and editors check copy that came back from a word processor for
non-breaking spaces and curly quotes before it goes into a publishing system. Data analysts clean
spreadsheet cells that fail a VLOOKUP because one value secretly contains a trailing
NBSP. And many people now paste AI-assistant output to see whether it carries the unusual spaces,
dashes or zero-width markers that are often mentioned in discussions of machine-generated text.
Want the background? Read our step-by-step guide to finding and removing hidden Unicode characters, or the field guide to zero-width characters, smart quotes and AI text watermarks.
Frequently asked questions
What is an invisible character?
An invisible (or hidden) character is a Unicode code point that takes up no visible space or looks identical to an ordinary character but is not one. Common examples are the zero-width space (U+200B), the non-breaking space (U+00A0), the byte-order mark (U+FEFF) and bidirectional control marks. They are easy to copy by accident and can break code, search, form validation and data imports.
How do I find hidden characters in my text?
Paste the text into the detector above. It scans every code point in your browser and flags anything that is invisible, a control character, an unusual space, a bidirectional control or a typographic substitute, showing you exactly where each one sits and what it is.
Can this tool detect AI watermark or 'ChatGPT' characters?
Yes. It flags the zero-width and special tag characters (including the U+E0000-U+E007F tag range) that are sometimes discussed as hidden markers in AI-generated text. It also catches the non-standard spaces and dashes that often give machine-generated text away. Note that no tool can prove who or what produced a piece of text; the detector simply shows you the characters that are present.
Is my text sent anywhere?
No. The entire scan and clean-up runs locally in your browser using JavaScript. Nothing you paste is uploaded, logged or stored on a server.
Why does pasted text break my code or spreadsheet?
Text copied from web pages, PDFs, chat apps and word processors often carries non-breaking spaces, smart quotes or zero-width characters. A compiler, CSV parser or search box treats these as different from the plain ASCII versions, so a line that looks correct fails. Cleaning the text removes the mismatch.