About the Invisible Character Remover
This invisible character remover finds the characters you cannot see β zero-width spaces, zero-width joiners, byte order marks, soft hyphens, left-to-right and right-to-left marks, control codes and hidden Unicode "tag" characters β and strips them out. It also turns non-breaking and odd-width spaces into ordinary spaces, and can convert curly quotes, dashes and ellipses into plain ASCII. A table lists every hidden character it found, with its Unicode code point and how many times it appeared.
Hidden characters sneak in when you copy from web pages, PDFs, Word, Slack or AI chat tools, and they cause baffling problems: code that will not compile, CSV columns that do not match, passwords and coupon codes that are "wrong", duplicate entries that look identical, broken search and failed form validation. Developers, data analysts, SEO and content editors use this tool to clean text before pasting it into code, spreadsheets, databases or a CMS.
Zero-width joiners inside emoji sequences such as π¨βπ©βπ§ and flag tag sequences are kept by default so emoji still display correctly, and tabs and line breaks are never touched. If any hidden tag characters spell out a message, the tool decodes it so you can see what was concealed. One caution: zero-width joiners and non-joiners are legitimate in Persian, Arabic and Indic scripts, and direction marks matter in Arabic and Hebrew text, so review the table before cleaning text in those languages. Everything runs locally in your browser.
How to use the invisible character remover
- 1Paste the text you suspect contains hidden characters.
- 2Choose whether to normalise spaces and convert smart punctuation.
- 3Check the table to see exactly which characters were found.
- 4Copy the cleaned text and paste it where you need it.
Formula and method
The tool walks through the text one Unicode code point at a time and checks each against a list of characters that render as nothing or as a plain-looking space. Zero-width characters (U+200B, U+200C, U+200D, U+2060, U+FEFF), the soft hyphen (U+00AD), bidirectional marks and overrides (U+200E, U+200F, U+202AβU+202E, U+2066βU+2069), C0/C1 control codes other than tab and line breaks, Hangul fillers and tag characters (U+E0000 block) are removed.
No-break and fixed-width spaces (U+00A0, U+2000βU+200A, U+202F, U+205F, U+3000) become ordinary spaces, and line/paragraph separators become line breaks. With the ASCII option on, curly quotes become straight quotes, en and em dashes become hyphens and the ellipsis becomes three dots. A zero-width joiner sitting between two emoji is kept, since it glues sequences such as family and profession emoji together.
Worked examples
Text copied from a web page
The sample hides a no-break space, a zero-width space, a word joiner, a soft hyphen, a left-to-right mark and a byte order mark. The no-break space becomes a normal space and the other five are deleted, so the text looks the same but is now safe to paste into code or a spreadsheet.
Converting smart punctuation to ASCII
With the ASCII option on, the curly apostrophe and both curly double quotes become straight quotes, the em dash becomes a hyphen and the ellipsis character becomes three periods: five replacements in total.
Keeping emoji intact
The two zero-width joiners sit between emoji, so they are kept and the family emoji still shows as one picture. The zero-width space between "family" and "photo" is the only character removed.
Frequently asked questions
What is a zero-width space?+
A zero-width space (U+200B) is a Unicode character that marks a possible line break but has no width, so it is invisible. It often comes along when copying from websites and can break code, search, passwords and spreadsheet lookups.
How do I find hidden characters in text?+
Paste the text into this tool. It lists every invisible or unusual character with its name, Unicode code point and count. In code editors you can also turn on "render whitespace" or search with a regex such as [\u200B-\u200F\uFEFF].
Why is a non-breaking space a problem?+
A no-break space (U+00A0) looks identical to a normal space but is a different character, so formulas, string comparisons, CSV parsing and find-and-replace treat "10 kg" with an NBSP as different from "10 kg" with a regular space.
Will removing invisible characters break emoji?+
Some emoji, such as π¨βπ©βπ§ or π©βπ», are several emoji joined by zero-width joiners. By default this tool keeps joiners that sit between emoji, so they still display as a single picture. Turn that option off to remove every joiner.
What is a BOM and why does it appear at the start of files?+
The byte order mark (U+FEFF) is added by some editors at the start of UTF-8 files. It is invisible but can break CSV headers, JSON parsing and shell scripts, which then see a strange first character.