Hidden Unicode Zero-Width Space Detector
Find invisible tracking characters often hidden in copied web text. Detect, visualize, and strip non-printing Unicode characters in real time. 100% client-side, nothing ever leaves your browser.
The Complete Guide to Hidden Unicode Characters and Text Sanitization
Not everything in a block of text is visible to the human eye. Between the letters and spaces you can read, a string can contain dozens of invisible Unicode characters that affect how the text behaves in code, how it is watermarked for tracking, and whether it will cause silent failures in applications. This tool exposes every one of them instantly.
How to Use This Tool
Paste any text into the Detection Input panel on the left. The scanner reads every character in real time and immediately updates the Anomaly Overlay on the right. If a hidden character is found, it appears at its exact position as a labeled amber badge (for example, [ZWSP] or [ZWJ]) so you can see precisely where it was hiding within the surrounding visible text. Hover over any badge to see the full Unicode name and code point in a tooltip.
The Telemetry panel below shows the total count, the number of distinct character categories detected, and a per-category breakdown with exact counts. To remove all detected characters at once, click Strip All Hidden Characters. The input panel updates with the cleaned text, which you can then copy to your clipboard with the Copy Clean Text button.
Which Unicode Characters Are Detected
This tool scans for the full spectrum of commonly misused invisible and non-printing Unicode characters:
| Code Point | Name | Badge Label | Common Use or Misuse |
|---|---|---|---|
| U+200B | Zero-Width Space | [ZWSP] | Line-break hints, text watermarking, tracking |
| U+200C | Zero-Width Non-Joiner | [ZWNJ] | Arabic/Persian typography, binary watermarking |
| U+200D | Zero-Width Joiner | [ZWJ] | Emoji sequences, watermarking, obfuscation |
| U+200E | Left-to-Right Mark | [LRM] | Bidirectional text control, steganographic use |
| U+200F | Right-to-Left Mark | [RLM] | Bidirectional text control, steganographic use |
| U+FEFF | Byte-Order Mark / ZWNBS | [BOM] | File encoding marker, often silently copied from documents |
| U+2060 | Word Joiner | [WJ] | Prevents line breaks; used to hide text in content scrapers |
| U+2061 | Invisible Function Application | [FUNC] | Mathematical markup, invisible in plain-text contexts |
| U+2062 | Invisible Times | [ITIMES] | Mathematical markup, invisible in plain-text contexts |
| U+2063 | Invisible Separator | [ISEP] | Mathematical markup, invisible in plain-text contexts |
| U+2064 | Invisible Plus | [IPLUS] | Mathematical markup, invisible in plain-text contexts |
| U+180E | Mongolian Vowel Separator | [MVS] | Mongolian script; historically misused as a zero-width alternative |
How Text Watermarking Uses Invisible Characters
When a publisher or platform wants to identify which specific user leaked a confidential document, they generate a unique bit string for each user account before serving them the page. The bits are encoded by inserting specific zero-width characters between the words of the document. A Zero-Width Space might represent a binary 1, while a Zero-Width Non-Joiner represents a binary 0. Every user sees what appears to be identical text, but each copy carries a unique invisible fingerprint.
This technique survives copy-pasting because clipboard operations copy all Unicode code points, including invisible ones. The only defenses are to strip all invisible characters before sharing any text, or to retype the content from scratch. This tool handles the stripping in a single click.
Why Hidden Characters Break Code and Databases
A very common source of frustrating, hard-to-reproduce bugs is copying a value from a webpage, PDF, or documentation site into source code, a config file, or a form field. An API key that looks correct will fail authentication if it contains a single zero-width space that the developer cannot see in the editor. A database query will silently return zero results because the string comparison fails. A JSON property key copied from documentation will not match the expected field name, causing the entire object to be ignored at runtime.
Pasting any copied value through this detector before using it in code eliminates this entire class of invisible-character bug. Developers who work frequently with copied API keys, environment variable values, and configuration strings will find this tool especially useful as a mandatory sanitation step.