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.
Detect first, remove by choice
Find zero-width and hidden Unicode characters, choose types or individual positions to remove, and create a cleaned copy without overwriting the original text.
U+200B and U+FEFF start selected. Joining and bidirectional controls start unselected.
Positions count Unicode code points from 1 in the original. Brackets mark hidden characters in the context.
Each supported character is recorded, including positions you kept. A dash means it has no position in the output because it was removed.
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.
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.
Keep one occurrence and remove another. In Individual positions, uncheck a character to keep it or check it to remove it. For A[U+200B]B[U+200B]C, keep original position 2 and remove position 4 to get A[U+200B]BC. The type checkbox shows a mixed selection; changing it applies to all occurrences of that type.
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.
A hidden character can be accidental, but it can also control word breaking, script joining, emoji composition or bidirectional order.
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.
U+200C and U+200D can be essential in Persian, Arabic, Indic scripts and emoji. They are never preselected.
Direction marks, embeddings and isolates can be intentional. Removing them can reorder mixed left-to-right and right-to-left text.
U+2800 and U+3164 are real symbols or letters. Remove them only when you know they are unwanted.
Use the invisible character checker. Need to fix regular spaces, tabs or blank lines? Use the whitespace normalizer.
The original source outside this page is never edited.
Review the name and context. Individual positions are counted in the unedited original text.
The tool creates a separate result and shows exactly how many code points were removed.
Check spelling, joining, emoji and reading order after pasting.
The focused list covers common zero-width, joining, bidirectional and blank-looking characters used across this site.
Regular spaces, tabs, line breaks and NBSP are not removed here. Their layout rules belong in the normalizer.
Each kept or removed character has its original position, output position and selection reason. Copy or download the processing record separately from the cleaned text.
The input stays visible. The tool never replaces it with the output or writes to your clipboard before you choose Copy.
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.
Both are common causes of an unexpected break or a failed exact match, and both are usually safe to review first.
Removing these can change what a name or message means, so the tool waits for an explicit choice.
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.
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.
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.
If an unwanted hidden character is the difference, removing that type can resolve it. Case, accents and ordinary whitespace may still differ.
When a platform stores what you gave it and you wanted ordinary text, remove the invisible characters you deliberately or accidentally copied.
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.
The cleaned copy is a new string, not a guarantee about the destination. Three checks catch most surprises.
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.
Pasting the cleaned copy back into the checker confirms which code points remain, including ones you chose to keep on purpose.
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.
Yes. Analyze the text, then use the checkbox at its original position. Checked means remove; unchecked means keep. Changes to a type apply to all its positions. Reset position choices keeps the type rules, while Restore defaults resets both.
Editing the original clears the analysis and position choices. Changing a removal choice clears the old result. Create a new cleaned copy to copy or download the updated text. An empty result keeps its processing record available.
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.
U+200B and U+FEFF start selected. You can keep any individual occurrence, keep the entire type, or use Keep all. U+200C, U+200D and bidirectional controls start unselected. At the start of a file, U+FEFF can serve as a byte-order mark; the tool shows its original position before removal.
No. Those are layout whitespace, not hidden format characters. Fixing repeated spaces, tabs, NBSP and blank lines belongs to the whitespace normalizer.
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.
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.
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.
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.