Invisible Character Detector
Find zero-width, control, variation, private-use and spacing characters.
Remove zero-width spaces, soft hyphens, word joiners and selected hidden Unicode formatting characters while preserving joiners and variation selectors when needed.
Safe cleanup removes zero-width spaces, word joiners, soft hyphens and U+FEFF while preserving joiners, variation selectors and bidi controls. Security review adds bidi-control detection. Aggressive cleanup can remove joiners, variation selectors and emoji tags and may change emoji or language shaping.
Aggressive cleanup can remove joiners, variation selectors, emoji tags and the combining grapheme joiner. This can change emoji presentation and language shaping. Review the action log carefully before publishing.
Remove deletes selected characters, space replacement inserts U+0020 SPACE, and visible markers show the code point and Unicode name for review. Ordinary spaces are never removed or added beyond a direct replacement.
The original input is preserved. Character position is one-based and counts Unicode code points.
| Position | Code point | Unicode name | Group | Action | Reason | Replacement |
|---|
This invisible character remover scans text by Unicode code point, removes selected zero-width characters, and preserves ordinary spaces. It preserves ZWJ and ZWNJ by default, preserves variation selectors by default, and handles U+FEFF by position instead of always calling it a byte-order mark. Bidi-control removal is optional. Remove, space and visible-marker replacement modes are supported, every action is shown in the log below, and the original input is kept unchanged. Cleaning runs locally in the browser.
Rendered input (contains a real zero-width space between "user" and "name"):
username = admin
Escaped representation:
user\u200bname = admin
Expected cleaned output with the safe preset:
username = admin
Expected summary: invisible characters removed 1, zero-width spaces removed 1, ordinary spaces preserved 2.
Advanced example with a joiner, for reference only (not run by default): username contains a real U+200D ZERO WIDTH JOINER between "user" and "name". Under the safe preset the joiner is preserved and the text is unchanged.
U+200B is ZERO WIDTH SPACE. U+200C is ZERO WIDTH NON-JOINER. U+200D is ZERO WIDTH JOINER. U+2060 is WORD JOINER. These four characters are not interchangeable: ZWJ and ZWNJ can affect language shaping and emoji sequences, while ZWSP and word joiner are more commonly unwanted artifacts from copying or automated formatting. Safe cleanup removes U+200B and U+2060 but preserves ZWJ and ZWNJ.
U+00AD SOFT HYPHEN is a discretionary hyphen that is normally invisible and may appear in text copied from documents or web pages. U+FEFF at the very start of input may be a byte-order-mark artifact, while U+FEFF elsewhere behaves as ZERO WIDTH NO-BREAK SPACE. Position matters, so this tool offers separate leading and embedded removal options, and both are reported with their original position when removed.
Bidirectional controls influence the visual ordering of text and may be legitimate in multilingual content. In code, filenames or identifiers they can obscure the true reading order of characters. Safe cleanup preserves bidi controls by default. The security-review preset can detect and, when enabled, remove them. Diagnostics render bidi-control labels safely and do not allow them to reorder the results table or preview. Use the Invisible Character Detector to inspect them in more detail.
Variation selectors affect text or emoji presentation. U+FE0E requests text presentation and U+FE0F requests emoji presentation. ZWJ links characters in many emoji sequences, including family and profession emoji. Removing variation selectors or ZWJ can visibly change how an emoji renders, so both are preserved by default and only removable under advanced options.
"Invisible" is a visual description, not a single Unicode category. C0, DELETE and C1 control characters are a separate range handled by the Control Character Remover. Zero-width and other formatting characters require different rules from control characters. Ordinary non-breaking spaces and other whitespace cleanup belong with the Whitespace Normalizer, and broader cleanup is available in the Unicode Text Cleaner.
Safe cleanup targets commonly unwanted characters such as zero-width spaces, word joiners, soft hyphens and U+FEFF. Security review adds bidi-control detection for code, identifiers and copied text. Aggressive cleanup can remove joiners, variation selectors, the combining grapheme joiner and emoji tag characters, and it can alter language shaping and emoji, so it always shows a warning and is never the default. Custom mode allows direct control over every group. The original input remains unchanged in every preset, and diagnostics should be reviewed before publishing.
Cleaning runs with JavaScript directly in your browser. Your pasted text is not submitted to UnicodeNow servers.
It is a Unicode code point with little or no visible shape, such as a zero-width space, word joiner, soft hyphen, variation selector or bidirectional control. Invisible is a visual description, not one Unicode category.
Paste your text, keep the default Safe cleanup preset, and run the remover. U+200B ZERO WIDTH SPACE is removed by default while ordinary spaces are preserved.
Not by default. U+200D ZWJ links characters in many emoji sequences and some scripts. Removing it can break emoji rendering and shaping, so it is preserved unless you enable it under advanced options.
U+200D ZERO WIDTH JOINER requests that adjacent characters join, as in many emoji sequences. U+200C ZERO WIDTH NON-JOINER prevents joining, which matters for spelling and shaping in scripts such as Persian. Both are preserved by default.
Yes. U+FE0E requests text presentation and U+FE0F requests emoji presentation. Removing them can change how a character or emoji displays, so they are preserved by default.
U+00AD SOFT HYPHEN is a discretionary hyphen that is normally invisible and only shows at a line break. It often appears invisibly in copied text and is removed under the safe preset.
Bidirectional controls influence the visual order of text. They are legitimate in multilingual content but can obscure the true order of characters in code, filenames or identifiers. They are preserved by default and can be reviewed and removed under the security-review preset.
No. At the very start of the input it is treated as a possible byte-order-mark artifact. Elsewhere in the text it behaves as ZERO WIDTH NO-BREAK SPACE. This tool classifies and reports it by position with separate leading and embedded removal options.
U+0020 SPACE is a normal, visible spacing character, not an invisible or zero-width character. This tool only targets zero-width and hidden formatting characters, so ordinary spaces, including the spaces around punctuation, are never removed.
Invisible characters here means zero-width and hidden Unicode formatting characters such as ZWSP, ZWJ, ZWNJ, variation selectors and bidi controls. C0, DELETE and C1 control characters are a different, related range handled by the Control Character Remover.
No. Cleaning runs with JavaScript directly in your browser; your pasted text is not submitted to UnicodeNow servers.
Inspect hidden characters before deleting them with the Invisible Character Detector. For C0 and C1 controls, use the Control Character Remover. For copied PDF text, use Clean Copied PDF Text.
Find zero-width, control, variation, private-use and spacing characters.
Remove control characters while optionally preserving tabs and line breaks.
Normalize, trim and clean problematic Unicode text safely.
Normalize tabs, special spaces, duplicate spaces and line endings.
Repair common spacing, hyphenation and line-break issues from copied PDF text.
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.