Skip to content
โ† All tools

Invisible Character Detector

Find and remove zero-width characters, unusual spaces and hidden Unicode in any text. Checked in your browser.

Text can contain characters that take up no space and display as nothing at all. Most are harmless leftovers from copying between programs. Some are not: bidirectional controls can make a line of code read differently to a person than to a compiler, and Unicode tag characters can carry a whole hidden message inside text that looks perfectly ordinary. Paste anything above to see what is actually in it.

Why text from a chatbot often contains them

A wave of interest in this began in 2025 when people noticed unusual characters in output from language models โ€” most often the narrow no-break space, U+202F, sitting where an ordinary space belonged. The popular theory was a deliberate watermark.

The likelier explanation is far duller: these are tokenisation artefacts. Models are trained on text scraped from the web, which is full of typographic spaces from publishing systems, and they reproduce what they were trained on. There is no evidence of a hidden signature, and any such scheme would be trivially defeated by exactly this page.

The practical problem is real regardless of cause. Paste that text into code and a string comparison fails. Paste it into a CSV and a column splits wrongly. Search for the word and the search misses it, because the thing you typed and the thing on screen are different sequences of bytes.

The two kinds that actually matter

Bidirectional controls (U+202Aโ€“U+202E, U+2066โ€“U+2069) exist so Arabic and Hebrew can be mixed with Latin text. They also let text be displayed in an order different from how it is stored. In source code this is the basis of the Trojan Sourceclass of attacks: a comment that appears to end where it does not, so a reviewer reads one program and the compiler builds another.

Unicode tag characters (U+E0000โ€“U+E007F) are the more interesting case. They render as nothing in every font, and an entire ASCII message can be encoded in them. Text that reads as one harmless sentence to a person can therefore carry a completely different set of instructions to a language model reading the same string โ€” the mechanism behind a good deal of prompt-injection work.

These are flagged separately here because they are the only categories where the question is not tidiness but where the text came from.

Not everything invisible is unwanted

Two characters are removed only if you ask. The zero-width joiner (U+200D) is what turns separate emoji into one: a family emoji is several people joined by it, and stripping it produces three separate figures instead. The zero-width non-joiner (U+200C) is genuinely part of correct spelling in Persian, and matters in several Indic scripts.

Tools that strip everything invisible corrupt this text silently. The joiner option above is on by default for that reason.

Why counting characters is harder than it looks

JavaScript strings are sequences of 16-bit units, and anything above U+FFFF โ€” including every tag character โ€” occupies two of them. Code that walks a string one unit at a time sees two meaningless halves rather than one character, and will both miscount and mis-detect. This page counts by code point, which is why the character count matches what you would count yourself.

Related tools

User agent and browser details for what your browser reveals, tracking status for what sites can see, and the connection report for everything at once.

Privacy note

The text is examined in your browser as you type. It is never uploaded, never logged and never stored โ€” there is no server involved in the checking at all, which matters given people paste drafts, code and private messages into a page like this. Close the tab and nothing remains.

Common questions

Why does text from ChatGPT contain invisible characters?
Most often a narrow no-break space (U+202F) sitting where an ordinary space belongs. Despite a popular theory, there is no evidence this is a deliberate watermark โ€” models are trained on web text full of typographic spaces from publishing systems and reproduce what they saw. The practical problem is real either way: string comparisons fail and searches miss the text.
Are invisible characters dangerous?
Most are only untidy. Two kinds are not. Bidirectional controls can make source code display in a different order from how it is stored, which is the basis of Trojan Source attacks. Unicode tag characters render as nothing everywhere and can encode an entire hidden message, which is how instructions get smuggled into text that an AI model will read.
What is a zero-width space?
U+200B, a character with no width that still counts as a character. It usually arrives when copying from web pages, PDFs or word processors. It breaks exact string matching, search and CSV parsing, and it is invisible in almost every editor, which is why it is so hard to find by eye.
Will removing invisible characters break my emoji?
It can, which is why the joiner option exists. The zero-width joiner (U+200D) is what combines separate emoji into one โ€” a family emoji is several people joined by it. Remove it and you get separate figures. The option to keep meaningful joiners is on by default, and it also protects Persian and Indic text where the non-joiner is part of correct spelling.
Is the text I paste sent anywhere?
No. The check runs in your browser as you type. Nothing is uploaded, logged or stored, and no server is involved in the checking โ€” which matters because people paste drafts, private messages and source code into a page like this.
Why does the character count differ from my editor?
Many editors count UTF-16 units rather than characters. Anything above U+FFFF, including every Unicode tag character, takes two units, so an editor may report two where a reader would count one. This page counts by code point, matching what you would count yourself.
What is a non-breaking space and why is it a problem?
U+00A0 looks exactly like a normal space but prevents a line break. It arrives constantly from web pages and word processors. In code, configuration and CSV files it is not a space at all as far as the parser is concerned, which produces errors that are almost impossible to spot by reading.
Does this detect homoglyphs โ€” letters that look alike?
No. This finds characters that are invisible or that occupy space without being ordinary spaces. Homoglyph detection โ€” a Cyrillic 'ะฐ' standing in for a Latin 'a' โ€” is a different problem needing a different comparison, and is not covered here.

Also Check These Tools

๐ŸŒWhat Is My IPInstantly see your public IPv4 and/or IPv6 address with ISP, city, and country details.โ†’๐Ÿ“กWhat Is My ISPSee which Internet Service Provider (ISP) or organization is associated with your public IP and connection.โ†’๐Ÿ”ทWhat Is My DNSLook up public DNS A and AAAA records using Cloudflare DNS over HTTPS, with honest labeling about resolvers.โ†’๐Ÿ“ถPing & Latency TestMeasure HTTPS round-trip time from your browser to this siteโ€”a practical โ€œpingโ€ when ICMP is not available in the web sandbox.โ†’๐Ÿ›œWhat Is My Network TypeDetect whether you are on Wi-Fi, cellular, or ethernet, with effective speed class and estimated bandwidth from the Network Information API.โ†’๐Ÿ”What Is My VPN / Am I Leaking?Compare your HTTP-visible public IP with WebRTC ICE reflexive addresses to spot possible IP leaks, plus plain-language DNS leak context.โ†’โšกInternet Speed TestTest your download and upload speeds with a fast, accurate in-browser speed test.โ†’๐Ÿ–ฅ๏ธWhat Is My BrowserDetect your browser name, version, engine, and operating system in one click.โ†’๐Ÿ”What Is My User AgentSee the full user agent string your browser sends to websites and servers.โ†’๐ŸชWhat Is My Cookie / Tracking StatusSee whether first-party cookies and web storage work, what DNT/GPC report, and visible cookie surfaceโ€”plus honest limits for HttpOnly and cross-site tracking.โ†’๐Ÿ“What Is My Screen ResolutionCheck your screen resolution, color depth, pixel ratio, and viewport size.โ†’๐ŸŽฎWhat Is My WebGL / GPUDetect your GPU renderer, vendor, WebGL version, and key graphics capabilities directly from your browser โ€” no plugins required.โ†’๐Ÿ“What Is My LocationDiscover your approximate location based on your IP address including city and country.โ†’๐Ÿ•What Is My TimezoneFind your current timezone, UTC offset, and local time with DST status.โ†’๐ŸŽž๏ธWhat Is My Refresh RateMeasure your monitorโ€™s real refresh rate (Hz) live in the browser โ€” see whether 60, 120, 144 or 240 Hz is actually active, with frame-time stability.โ†’๐Ÿ”ŒOpen Port CheckerCheck which TCP ports are open, closed, or filtered on your public IP address โ€” no software needed.โ†’๐ŸšฆISP Throttling TestCheck whether your ISP is slowing video: compares download speed to Netflixโ€™s servers against generic servers and says whether it looks like shaping or congestion.โ†’โœ‰๏ธEmail Header AnalyzerTrace an email's delivery path and check SPF, DKIM and DMARC. Headers are parsed in your browser, never uploaded.โ†’๐ŸŽฌVideo File InspectorRead a video file's codec, resolution, duration and bitrate without uploading it. The file never leaves your browser.โ†’๐Ÿ”Password Breach CheckCheck whether a password appears in known data breaches. It is hashed in your browser and never sent anywhere.โ†’๐Ÿ“‹Connection ReportRun every network, browser and device check at once and copy one plain-text summary into a support ticket.โ†’๐Ÿ”€CGNAT TestFind out whether your ISP puts you behind carrier-grade NAT โ€” the usual reason a forwarded port stays unreachable.โ†’