Invisible Character Remover
Remove hidden Unicode controls and zero-width characters from text.
Find hidden Unicode characters, inspect their code points, and review where they occur in the text.
Detect zero-width spaces, unusual whitespace, controls, bidirectional marks, variation selectors, private-use characters and other non-obvious code points.
Your text is processed in this browser and is not submitted to UnicodeNow.
Paste text that may contain hidden spaces, controls, bidirectional marks or formatting characters.
This report is used for Copy report and Download report. The structured table below is the primary inspection view.
Bidirectional controls can change the visual order of text. Review them carefully in source code, filenames, identifiers and copied commands. They are also used legitimately in multilingual text.
No detection has run yet.
| Position | Visible token | Code point | Unicode name | Category | Type | Escaped value | Notes |
|---|
The Invisible Character Detector scans Unicode text for zero-width characters, unusual spaces, control characters, bidirectional controls, variation selectors, private-use characters, noncharacters, combining marks and hidden formatting code points. It reports each finding with a visible token, Unicode notation, category, position and a short explanation.
Hidden Unicode characters may affect equality checks, usernames, database lookups, source code review, search, CSV and JSON processing, line wrapping, filenames, copied commands, emoji rendering and multilingual text. A character can be legitimate in one context and surprising in another, so this tool focuses on inspection rather than automatic removal.
Rendered text:
username = admin
Escaped representation:
user\u200Bname\u00A0=\u00A0admin
The exact findings are: one U+200B ZERO WIDTH SPACE between user and name, plus two U+00A0 NO-BREAK SPACE characters around the equals sign.
Character position is one-based and counts Unicode code points. UTF-16 offset is zero-based and matches JavaScript string indexing. Emoji and other supplementary-plane characters count as one Unicode code point, but they occupy two UTF-16 code units, so later offsets can differ from character positions.
Removal depends on context. A zero-width joiner may be required for an emoji sequence or a writing system. A variation selector controls text or emoji presentation. Bidi controls may be legitimate in multilingual text. A non-breaking space may be intentional in layout-sensitive content. Review the report first, then use Invisible Character Remover when you know which categories should be removed.
Detection runs locally in JavaScript by iterating Unicode code points with for...of, tracking one-based code-point positions and zero-based UTF-16 offsets, then classifying each code point with built-in ranges and available Unicode property support. Names are provided for well-known hidden characters; otherwise the report uses Name unavailable instead of guessing.
Your input remains in this browser. It is not uploaded to UnicodeNow, sent to a processing API, stored in browser storage or added to the URL.
It is a Unicode code point that has little or no visible shape, such as a zero-width space, control character, non-breaking space or formatting mark.
They can come from copied web pages, documents, chat apps, text editors, input methods, intentional formatting or automated cleanup mistakes.
Two strings can render the same while containing different Unicode code points, hidden controls or special spaces, so exact byte or code-point comparison fails.
No. Some are required for emoji, writing systems, line breaking or multilingual text. Unexpected ones in identifiers, commands or source code deserve review.
ZWSP suggests a zero-width word break, ZWNJ prevents joining in scripts that join letters, and ZWJ requests joining, including in many emoji sequences.
Bidi controls influence visual text order. They are legitimate in mixed-direction text but security-sensitive in source code, filenames and identifiers.
Yes. Removing ZWJ, ZWNJ, variation selectors or bidi marks without context can change emoji rendering or valid language behavior.
Character position is one-based and counts Unicode code points. UTF-16 offset is zero-based and matches JavaScript string indexing.
U+00A0 NO-BREAK SPACE looks similar to an ordinary space but prevents a line break and affects exact matching.
No. Detection runs in your browser and the input is not submitted to UnicodeNow, stored in browser storage or placed in the URL.
No. Review the context first. Use the Invisible Character Remover only after deciding which categories are unwanted for your data.
Remove hidden Unicode controls and zero-width characters from text.
Normalize, trim and clean problematic Unicode text safely.
Normalize tabs, special spaces, duplicate spaces and line endings.
Remove control characters while optionally preserving tabs and line breaks.
Repair common spacing, hyphenation and line-break issues from copied PDF text.
Inspect each Unicode character, encoding, category, script and normalization form.
Analyze code points, grapheme clusters, bytes, scripts and directionality.
Compare strings exactly and after Unicode normalization.
Unicode is the international standard used to represent text consistently across computers, phones, websites, programming languages and operating systems.
Learn how zero-width spaces, joiners, non-breaking spaces, bidi controls and other invisible Unicode characters affect text.
A safe workflow for detecting, previewing and removing unwanted zero-width Unicode characters without breaking emoji or language text.
Compare literal Unicode characters, named HTML entities, numeric character references, code points and UTF-8 bytes.