Detect and clean hidden characters (ZWSP/ZWJ/ZWNJ/FEFF) and bidi controls (LRM/RLM/LRE/RLE/…); visualize, normalize and export.
const userName = "Admin";
const hidden = "hello\u200Bworld";
const mixed = "A\u200FBC";
const userName = "Admin";
const hidden = "helloworld";
const mixed = "ABC";
Visualize and remove invisibles, normalize Unicode, and export clean text for safe code and content.
Label ZWSP/ZWNJ/ZWJ/FEFF/LRM/RLM/… inline for quick auditing
Remove zero-width and bidi controls; replace NBSP with space
Apply NFC/NFD/NFKC/NFKD normalization safely
Zero-width characters (ZWSP, ZWNJ, ZWJ, BOM, and other Unicode control characters) are invisible, and that is the problem. They are used to break hyphenation, join emoji, or format text - but they also hide in pasted content, get injected into credentials, and are a known vector for obfuscated text and homoglyph attacks. When something "looks right but does not work," zero-width characters are a frequent culprit.
This tool takes your text, detects every zero-width and other invisible character, shows you exactly where each one is (with context), and removes them on demand. Because the detection is visible in the output, you can see what was there before deciding to clean it - which matters when some zero-width characters are intentional (like the ZWJ that joins emoji). The result is clean text you can paste, commit, or process with confidence.
The classic cases: a copied password or token that fails because of a trailing ZWSP; a string comparison that "should" match but does not; a username or email that looks normal but contains a homoglyph; or a pasted paragraph that carries formatting artifacts from its source. In each case, the characters are invisible to the eye - which is why a detector that makes them visible is the fix.