Detect first, remove by choice

Invisible Character Remover

Find zero-width and hidden Unicode characters, choose exactly which types to remove, and create a cleaned copy without overwriting the original text.

Paste text to analyze

The hidden character remover reports what it finds before anything can be deleted.

Up to 10,000 Unicode code points

Your text stays in this page. It is not uploaded, stored or read from your clipboard automatically. How tool text is handled

Your analysis will appear here

The tool changes nothing until you choose characters and create a cleaned copy.

See exactly what a selected deletion changes.

Five code points become four when only U+200B is removed
Synthetic sequence: A + U+200B + B + U+200D + C. Removing U+200B leaves AB + U+200D + C; the joiner is kept.

Load the example, leave U+200B selected and U+200D unselected, then choose Create cleaned copy. Expect one removed code point and four remaining. This example illustrates selection, not a recommended use of a joiner between Latin letters.

What about an emoji you want to keep?

The second example is Team[U+200B] 👩[U+200D]💻. Removing only U+200B leaves Team 👩‍💻: 9 code points become 8. The woman-technologist sequence keeps its joiner; its appearance depends on emoji support. Unicode explains how these sequences work.

Selection applies to every occurrence of that type. If you select U+200D, this tool removes all matching joiners, including meaningful ones. It does not infer language or emoji context and cannot select just one occurrence. Keep the original and use a text editor for a single-location correction.

Deleting a separator can also join words: blue[U+200B]sky becomes bluesky. If you wanted blue sky, insert an ordinary space at that position instead of treating deletion as replacement.

Invisible does not mean meaningless.

A hidden character can be accidental, but it can also control word breaking, script joining, emoji composition or bidirectional order.

Usually safe to review first

U+200B and an internal U+FEFF are common sources of unexpected breaks or failed matching. They are preselected, but you still see them before removal.

Joining controls

U+200C and U+200D can be essential in Persian, Arabic, Indic scripts and emoji. They are never preselected.

Bidirectional controls

Direction marks, embeddings and isolates can be intentional. Removing them can reorder mixed left-to-right and right-to-left text.

Blank-looking characters

U+2800 and U+3164 are real symbols or letters. Remove them only when you know they are unwanted.

Need a report without changing text?

Use the invisible character checker. Need to fix regular spaces, tabs or blank lines? Use the whitespace normalizer.

Analyze, choose, compare, then copy.

  1. Paste a copy of the text.

    The original source outside this page is never edited.

  2. Review names, code points and positions.

    Use the character links and cautions when a control is unfamiliar.

  3. Select only unwanted types.

    The tool creates a separate result and shows exactly how many code points were removed.

  4. Test the cleaned result where it will be used.

    Check spelling, joining, emoji and reading order after pasting.

What this remover does and does not change.

Supported hidden set

The focused list covers common zero-width, joining, bidirectional and blank-looking characters used across this site.

Ordinary whitespace stays

Regular spaces, tabs, line breaks and NBSP are not removed here. Their layout rules belong in the normalizer.

No AI-watermark claim

A found code point does not prove text came from AI, and a clean result is not a security verdict.

No silent editing

The input stays visible. The tool never replaces it with the output or writes to your clipboard before you choose Copy.

The default selection is not “everything.”

Sample text used to demonstrate the flow contains a Zero Width Space, a Hangul Filler, joining controls and a Zero Width No-Break Space. Analyzing it produces four detection rows with different cautions.

Preselected after analysis

  • U+200B Zero Width Space
  • U+FEFF Zero Width No-Break Space

Both are common causes of an unexpected break or a failed exact match, and both are usually safe to review first.

Left unselected

  • U+3164 Hangul Filler — a real letter that looks blank
  • U+200D Zero Width Joiner — controls joining in scripts and emoji

Removing these can change what a name or message means, so the tool waits for an explicit choice.

After “Create cleaned copy”

The result panel reports the number of code points removed and left, shows which types were affected, and keeps the cleaned text in a separate box. Your original text stays visible for comparison, and nothing is written to your clipboard until you choose Copy cleaned text.

Five situations where deletion is the right task.

A form field rejects a value that looks empty

If a required field complains while the box looks blank, a zero-width or blank-looking character may be the whole value. Inspect it first. If the content is accidental, clear it and enter a valid value required by the field; deleting it alone does not satisfy a required-field rule.

An export breaks at odd places

A copied paragraph that wraps mid-word without a visible space often contains U+200B. If it is an unwanted break opportunity, removing it removes that cause; wrapping still depends on the destination’s layout rules.

Two values should match but do not

If an unwanted hidden character is the difference, removing that type can resolve it. Case, accents and ordinary whitespace may still differ.

A username, title or message must be a plain string

When a platform stores what you gave it and you wanted ordinary text, remove the invisible characters you deliberately or accidentally copied.

You are preparing text for a device or format that dislikes format characters

Some editors, parsers and terminals display or handle zero-width controls inconsistently. Inspect the identified type and the destination requirements before deciding whether removal is appropriate.

Verify the result where it will live.

The cleaned copy is a new string, not a guarantee about the destination. Three checks catch most surprises.

  1. Read the cleaned text once.

    Look for words that have joined together, emoji that lost a variant, and text that changed direction. Those are signs that a control character carried meaning.

  2. Re-check the result if anything looks different.

    Pasting the cleaned copy back into the checker confirms which code points remain, including ones you chose to keep on purpose.

  3. Paste it into the destination and save.

    Saving is the real test. Some platforms normalize, trim or reject characters on submission even though the field accepted the paste, and that behaviour is outside this tool.

Invisible character remover FAQ

Why is there no single “remove all” button?

Because the same character class means different things in different texts. U+200D holds emoji and Indic sequences together, U+200C prevents joining in Persian and Arabic, and bidirectional controls decide reading order in mixed-language text. A blind delete can silently change content, so removal stays a reviewed choice.

Which types are preselected, and why those?

U+200B and an internal U+FEFF, because they are the most common accidental arrivals from copied web text, and because their removal rarely carries meaning. Every preselection is still visible and reversible before you create the cleaned copy.

Does it remove ordinary spaces, tabs or No-Break Spaces?

No. Those are layout whitespace, not hidden format characters. Fixing repeated spaces, tabs, NBSP and blank lines belongs to the whitespace normalizer.

Will removing a character fix my spreadsheet or database match?

Only if an invisible character was the difference. The remover shows how many code points it deleted; if that number is zero, the mismatch is caused by something else, such as capitalisation, spacing, a non-breaking space or a different Unicode form.

Does it tell me if text was written by AI?

No. A found code point is not evidence about authorship, and a cleaned result is not a security verdict. This tool reports and removes specific characters; it does not score documents.

Where does the detection list come from?

The focused list covers the zero-width, joining, bidirectional, spacing and blank-looking characters documented across this site, with names taken from the Unicode Character Database. Characters outside that list are not claimed to be absent — the checker can show every code point in your text.

Is my text uploaded, and how much can I paste?

Everything runs in this page; the text is not uploaded, stored or read from your clipboard automatically. The limit is 10,000 Unicode code points, and longer input stops with an explanation instead of a partial result. See how tool text is handled.