Invisible Character Remover
Detect and strip zero-width and other hidden characters from text.
Scanned live as you paste. Nothing leaves your browser.
Remove
Exotic spaces are replaced with a normal space. Everything else is removed. Variation selectors are kept by default so emoji stay intact.
How to remove invisible characters from text
Paste the suspect text
Drop the text into the input box. It is scanned character by character the moment it arrives, with no button to press.
Review the findings
Each hidden character appears in a list with its Unicode name, code point, category, and a count of how often it occurs.
Pick what to strip
Toggle the five filters: zero-width characters, exotic spaces, bidi controls, formatting and control characters, and variation selectors. The first four are on by default.
Copy the clean text
The cleaned output rebuilds instantly as you change filters. Click Copy clean text to put it on your clipboard.
Why use this tool
Names, not mysteries
Detections are reported with their exact Unicode name and code point, so you learn the culprit was a word joiner at U+2060 rather than just something hidden.
Exotic spaces become normal spaces
Non-breaking spaces, ideographic spaces, and the U+2000 to U+200A range are replaced with a plain space instead of deleted, so words never fuse together.
Catches bidirectional overrides
Left-to-right and right-to-left marks, embeddings, isolates, and overrides are all detected, the same control characters used in Trojan Source style attacks.
Emoji survive by default
Variation selectors are detected but kept unless you opt in to removing them, because stripping them changes how emoji render.
Tabs and line breaks untouched
Ordinary whitespace is not treated as a problem. Tab, line feed, and carriage return are explicitly excluded from the control character sweep.
Scans locally
The analysis is plain JavaScript running in your browser, so pasting confidential text costs nothing and reveals nothing.
About this tool
This tool finds Unicode characters that occupy no visible space or masquerade as ordinary spaces, then produces a cleaned copy of your text. It classifies each code point into five groups: zero-width characters such as U+200B and the byte order mark, exotic spaces, bidirectional controls, formatting and control characters including the soft hyphen, and variation selectors. Every finding is listed with its name, code point, and occurrence count, and per-group filters decide what gets stripped.
Hidden characters explain a lot of quiet breakage: two strings that print identically but fail an equality check, a diff that flags an unchanged line, a JSON file that will not parse because a BOM sits before the first brace, or copy from a chat app, PDF, or LLM that carries zero-width characters into your codebase. Cleaning the text here beats squinting at a hex dump.
The scan never leaves your machine, which matters when the text in question is a config file or a private message. To examine every character in detail rather than only the hidden ones, use the Unicode inspector. For collapsing repeated ordinary spaces and blank lines, the whitespace remover is the right tool, and a JSON formatter will confirm the cleaned file finally parses.
Frequently asked questions
- What are invisible characters?
- They are Unicode characters that take up no visible space or look like an ordinary space but are not. Common examples include the zero-width space (U+200B), the byte order mark (U+FEFF), non-breaking spaces, soft hyphens, bidirectional controls, and zero-width joiners. They often sneak in when copying from PDFs, websites, word processors, or chat apps and can break searches, comparisons, and code.
- How does the tool work?
- Paste your text and it is scanned live, character by character. Every hidden character is listed with its name, code point, and how many times it appears. The cleaned text is produced at the same time: exotic spaces are converted to a normal space and other invisible characters are removed. Use the filters to choose exactly which kinds to strip.
- Why are variation selectors kept by default?
- Variation selectors (such as U+FE0F) tell the system to render the preceding character as a full-color emoji. Removing them can change how emoji look, so they are kept by default. You can enable the "Variation selectors" filter if you specifically want to strip them.
- Is my text uploaded anywhere?
- No. The tool runs entirely in your browser using JavaScript. Your text is processed on your device and never sent to a server, stored, or logged.
- Does it remove normal spaces, tabs, and line breaks?
- No. Ordinary spaces, tabs, and line breaks are left untouched. Only zero-width characters, exotic Unicode spaces, bidirectional controls, formatting and control characters, and optionally variation selectors are affected.
Related tools
Whitespace Remover
Clean up messy text by trimming lines, collapsing extra spaces, removing blank lines, and stripping line breaks.
JSON Formatter & Validator
Pretty-print, minify, or explore JSON as a collapsible tree, with syntax errors shown inline.
Arrow Symbols
Browse and copy arrow symbols in every direction and style, then build a string of them.
Bold Text Generator
Turn plain text into bold, bold italic, and bold serif Unicode styles you can copy.
Bubble Text Generator
Turn plain text into circled bubble letters, outline and filled, ready to copy.
Currency Symbols
Browse and copy world currency symbols by name, from dollar and euro to rupee and won.