How to find and remove invisible characters
Short answer
Paste the text into an inspector, identify the code points, and remove only the types you know are unwanted. Keep the original and compare the preview: invisible characters can carry useful spacing, emoji, or writing-direction information.
Inspect before changing the text
When pasted text looks right but behaves differently, check the actual characters. The Invisible Character Inspector shows bracketed code points, counts each type, and lists its positions. It preserves all characters until you select a removal.
- Keep the originalPaste a copy into Source text. Processing stays in the browser tab; this tool does not upload or save your text.
- Read the marked viewA marker such as ⟦U+200B⟧ identifies one code point. The corresponding entry gives its name, category, count, and positions. Tabs and line breaks are included; regular spaces are left unmarked.
- Choose a specific typeRead its explanation before selecting it. Selecting U+200B removes every occurrence of U+200B in the preview. Other types remain intact. Use Preserve all to undo the choices.
- Compare and copyCheck words, emoji, and paragraph boundaries in Removal preview before copying it. The source stays unchanged. Editing the source resets removal choices so they are not carried into new text.
A small example
Marked input: invoice⟦U+200B⟧-2026
Remove U+200B: invoice-2026
Marked input: New⟦U+00A0⟧York
Remove U+00A0: NewYorkA no-break space can keep adjacent words together on one line. A zero width space provides a possible break without an ordinary visible space. Whether either is unwanted depends on the text's purpose. See the Unicode line-breaking rules for their different roles.
Characters worth preserving
- U+200D ZERO WIDTH JOINER can connect parts of an emoji sequence; U+FE0E and U+FE0F request text or emoji presentation. Removing them may change the result. See Unicode Emoji.
- Joiners and non-joiners also influence letter forms in some writing systems. Other script controls can carry meaningful information. See the Unicode format-character specification.
- Direction marks, isolates, and embeddings help arrange mixed-direction text. Removing a control, especially one side of a pair, can change how the remaining text appears. See the Unicode Bidirectional Algorithm.
Why positions may differ from your editor
The inspector counts Unicode code points starting at 1. A visible emoji or letter can contain several code points. The detailed table also gives zero-based UTF-16 offsets, which some editors and programming APIs use. For example, 😀 uses one code point and two UTF-16 code units. Unicode's character-counting explanation describes these different measures.
Coverage and limits
Inspection covers common unusual spaces, controls, Unicode formatting, and default-ignorable code points. Some have visible effects, depending on the font and context. Less common entries use generic labels; browser Unicode versions can differ. Ordinary visible accents are preserved and unmarked.
The workspace accepts up to 100,000 UTF-16 code units for inspection and retains oversized input without producing a partial result. It inspects the pasted string, not the original file bytes or encoding. Removal is exact deletion: it does not normalize spelling, replace spaces, trim text, or repair broken sequences.
For quick code-point lookups, use the invisible Unicode character reference. For byte counts and encoding basics, read What is UTF-8?.