Invisible Character Remover

Remove zero-width spaces, soft hyphens, word joiners and selected hidden Unicode formatting characters while preserving joiners and variation selectors when needed.

Processed locally in your browser

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.

Invisible characters to remove
Advanced removal options

These options are unchecked by default because removing them can change emoji, language shaping or text direction.

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.

Remove invisible Unicode characters online

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.

Invisible character removal example

Rendered input (contains a real zero-width space between "user" and "name"):

user​name = 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): user‍name 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.

Zero-width spaces, joiners and word joiners

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.

Soft hyphens and zero-width no-break spaces

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

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 and emoji

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 characters vs control characters

"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 removal presets

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.

How to use the remover

  1. Paste or type text into the input field.
  2. Choose a safe, security-review, aggressive or custom preset.
  3. Review the selected invisible-character groups.
  4. Select remove, space replacement or visible markers.
  5. Run the invisible-character remover.
  6. Inspect the cleaned text, warnings and action log before copying it.

Common use cases

Privacy and local processing

Cleaning runs with JavaScript directly in your browser. Your pasted text is not submitted to UnicodeNow servers.

Frequently asked questions

What is an invisible Unicode character?

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.

How do I remove zero-width spaces?

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.

Is it safe to remove zero-width joiners?

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.

What is the difference between ZWJ and ZWNJ?

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.

Does removing variation selectors change emoji?

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.

What is a soft hyphen?

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.

What are bidi controls?

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.

Is U+FEFF always a BOM?

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.

Why are ordinary spaces preserved?

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.

What is the difference between invisible and control characters?

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.

Is my text sent to a server?

No. Cleaning runs with JavaScript directly in your browser; your pasted text is not submitted to UnicodeNow servers.

Related tools

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.

Control Character Remover

Remove control characters while optionally preserving tabs and line breaks.

Text CleaningProcessed locally

Unicode Text Cleaner

Normalize, trim and clean problematic Unicode text safely.

Text CleaningProcessed locally

Whitespace Normalizer

Normalize tabs, special spaces, duplicate spaces and line endings.

Text CleaningProcessed locally

Clean Copied PDF Text

Repair common spacing, hyphenation and line-break issues from copied PDF text.

Text CleaningProcessed locally

Related guides

What Is Unicode?

Unicode is the international standard used to represent text consistently across computers, phones, websites, programming languages and operating systems.