Invisible Character Viewer
Paste text and see every character that normally leaves no trace. The viewer marks spaces, tabs, and line breaks, then flags the characters that cause real trouble: zero-width spaces and joiners, the byte order mark, non-breaking and other Unicode spaces, soft hyphens, bidirectional controls, and C0 and C1 control codes. Each mark is colour-coded by family and labelled with its Unicode name and code point, and a summary counts how many of each kind appear. When you find characters that should not be there, one action removes the zero-width, control, and bidi codes while leaving ordinary spacing intact. Everything runs in your browser, so the text you inspect is never uploaded.
- Reveals spaces, tabs, line breaks, zero-width characters, the BOM, and Unicode control codes inline
- Colour-codes each character by family and labels it with its Unicode name and code point
- Summary counts every distinct hidden character so you can see what a copied snippet really contains
- One action strips zero-width, control, and bidirectional codes while keeping normal spacing
- Runs entirely in the browser — nothing you paste is uploaded
Characters
136
Invisible
14
Types
12
- ↵Line feedWhitespaceU+000A3
- ⇥TabWhitespaceU+00091
- ␍Carriage returnWhitespaceU+000D1
- NBSPNo-break spaceUnicode spaceU+00A01
- SHYSoft hyphenZero-widthU+00AD1
- ZWSPZero-width spaceZero-widthU+200B1
- ZWNJZero-width non-joinerZero-widthU+200C1
- ZWJZero-width joinerZero-widthU+200D1
- BOMByte order markZero-widthU+FEFF1
- U+202CBidirectional controlBidirectionalU+202C1
- U+202EBidirectional controlBidirectionalU+202E1
- U+0007Control characterControlU+00071
Overview
A focused inspector for the characters you cannot see. It shows where they sit in the text, names them precisely, and counts them, so a copied string stops being a mystery.
- 01
Inline reveal
Each hidden character appears as a small labelled mark in place, so you can tell exactly where a zero-width space or stray control code sits relative to the visible text.
- 02
Precise naming
Every mark carries its Unicode name and code point, from a plain space to a right-to-left override, so you can match what you see against documentation or a bug report.
- 03
Colour-coded families
Whitespace, Unicode spaces, zero-width characters, bidirectional controls, and control codes each get their own colour, making suspicious characters stand out from ordinary spacing.
- 04
Counts and summary
A summary lists every distinct hidden character with its count, so you can confirm at a glance whether a snippet holds one stray mark or hundreds.
- 05
Remove what does not belong
One action deletes zero-width, control, and bidirectional codes while keeping spaces, tabs, and line breaks, so you can clean a string without flattening its layout.
- 06
Local and private
All detection happens in your browser. The text you inspect, which may include secrets pasted from elsewhere, is never sent to a server.
How to use
Paste the text you want to check, read the marks, and clean it if needed.
- 01
Paste or type text into the input on the left. The revealed view updates as you go.
- 02
Read the marks: spaces, tabs, and line breaks are shown subtly, while zero-width, control, and bidirectional characters stand out in their own colours.
- 03
Hover any mark to see its Unicode name and code point, or scan the summary for the full count of each kind.
- 04
Toggle Show spaces off when ordinary spacing is noise and you only care about the unusual characters.
- 05
Use Remove hidden to strip zero-width, control, and bidirectional codes, then copy the cleaned text back out.
Details
The point is to make hidden characters obvious, name them correctly, and let you act on them without guesswork.
- Marks spaces, tabs, line feeds, and carriage returns so you can see trailing spaces and mixed line endings.
- Detects zero-width spaces, joiners, non-joiners, the word joiner, and the byte order mark.
- Flags non-breaking spaces, ideographic spaces, and other Unicode space separators that look like a normal space.
- Highlights bidirectional controls, including the overrides behind text that displays in a misleading order.
- Shows C0 and C1 control codes and the delete character that can break parsers and terminals.
- Names every character with its Unicode label and code point for unambiguous reporting.
- Counts each distinct character and the total of hidden characters in the text.
- Removes zero-width, control, and bidirectional codes in one step while preserving normal spacing.
- Runs locally with no upload, so it is safe for text copied from private documents.
Use cases
Hidden characters slip in through copy and paste, rich editors, and exports. Seeing them turns confusing bugs into obvious ones.
-
Debug copy-paste glitches
Find the zero-width space or non-breaking space that sneaked in from a document or chat and broke a search, a match, or a build.
-
Clean code and config
Spot stray control codes, non-breaking spaces, or a leading byte order mark in source files, YAML, or JSON that a parser refuses for no visible reason.
-
Check for hidden text tricks
Inspect text for zero-width characters or bidirectional overrides used to disguise links, file names, or code that reads differently than it runs.
-
Normalize content before publishing
Review pasted copy for invisible characters and remove the ones that do not belong before it goes into a CMS or a database.
-
Compare two look-alike strings
When two values look identical but compare as different, reveal the invisible characters to find where they actually diverge.
-
Audit data imports
Examine a sample row from a CSV or spreadsheet export for trailing whitespace and control codes that would corrupt downstream processing.
See also
Once the hidden characters are accounted for, get word, character, and byte counts for the same text with Text Counter . To strip extra whitespace, blank lines, or other noise more broadly, hand it to Text Cleaner . And to normalize headings or labels to a consistent letter case afterward, run them through Case Converter before copying the text back.
Best practices
A few habits keep this useful and keep the cleaned output predictable.
- Turn Show spaces off when a passage is mostly normal spacing and you only want the unusual characters to stand out.
- Read the Unicode name and code point before removing anything, since some marks, such as non-breaking spaces, may be intentional.
- Remember that Remove hidden keeps spaces, tabs, and line breaks; clean those separately if you also need to fix trailing whitespace.
- Paste a small representative sample rather than a whole file when you only need to identify which characters are present.
- After cleaning, copy the text back and re-check it in the place it failed, since the host may add characters of its own.
- Treat bidirectional overrides in code or file names as a red flag worth investigating, not just cosmetic noise.
Limitations
Knowing the limits keeps the viewer from being mistaken for a full Unicode analyzer or a security scanner.
- It identifies a curated set of invisible and control characters; it is not a complete Unicode property database.
- It reports characters and counts but does not judge intent, so a flagged character is not proof of an attack.
- Remove hidden deletes zero-width, control, and bidirectional codes only; it leaves all spacing, including non-breaking spaces, untouched.
- The inline preview is capped for very long text, though the counts still reflect the entire input.
- It inspects text, not files or encodings; it will not detect a mismatched file encoding on its own.
- Processing is local, so accuracy depends on your browser, and what you do with the cleaned text afterward is up to you.
FAQ
Common questions cover what it detects, how removal works, and whether anything is uploaded.
What counts as an invisible character here?
Spaces, tabs, and line breaks, plus characters that render with no width or no glyph: zero-width spaces and joiners, the byte order mark, non-breaking and other Unicode spaces, soft hyphens, bidirectional controls, and C0 and C1 control codes.
Why do two identical-looking strings behave differently?
They often differ by a character you cannot see, such as a non-breaking space instead of a normal space or a hidden zero-width space. Paste each string here and the marks will show where they diverge.
What does Remove hidden actually delete?
It removes zero-width characters, the byte order mark, bidirectional controls, soft hyphens, and C0 and C1 control codes. It keeps ordinary spaces, tabs, and line breaks so the text keeps its layout.
Can I hide ordinary spaces?
Yes. Turn off Show spaces and regular spaces are treated as normal text, so only tabs, line breaks, and the more unusual characters are marked.
Does it handle bidirectional text tricks?
It flags left-to-right and right-to-left marks and the embedding, override, and isolate controls, which are the characters used to make text display in a misleading order.
Is my text uploaded anywhere?
No. Detection, counting, and removal all run in your browser tab, so it is safe to inspect text copied from private files without it leaving your device.
Related tools
Continue with the text toolset: count what you have written, clean it up, or change its letter case. These pair naturally with revealing hidden characters.