Skip to main content
ASCII Art Generator logoASCII Art Generator

Unicode & invisible character inspector

A line looks aligned, but its spaces are different. Reveal what is actually in your text, then choose exactly what to replace.

No blanket invisible-character remover. Your original stays in the input; all repairs start off.

Leave without saving your work?

Your input and artwork are not saved. Keep editing, or download the current result and check it before leaving.

Up to 1,000 UTF-16 code units. Text stays in this tab. Pasting or editing in a browser text field normally converts CRLF/CR line endings to LF.

Optional repairs

All are off initially. Preview changes before exporting; the input is never overwritten.

Fixed spaces per tab, not tab-stop expansion. This can change alignment.

Removing U+200B can change word-breaking behavior. Joiners, variation selectors, combining marks, bidi controls, other spaces and all other characters are kept. No trimming or Unicode normalization.

Compare before exporting

10 code points / 12 UTF-16 units. 0 replacements. Original endings: 0 CRLF, 0 lone CR, 1 lone LF.

Original, escaped

A\tB\u{00A0}C\u{200B}\n\u{1F469}\u{200D}\u{1F4BB}

Repaired, escaped

A\tB\u{00A0}C\u{200B}\n\u{1F469}\u{200D}\u{1F4BB}

These are visible escape tokens, not the raw export. Backslashes double; spaces and non-ASCII code points use \u{XXXX}. No glyph or display-width assumption.

Original code points, in order

Offset is zero-based UTF-16 position, not a byte or screen column. A supplementary code point uses two units. Labels identify common controls; this is not a complete Unicode-name database. One row per code point, not per grapheme or emoji.

Showing 1-10 of 10 code points.

Every original code point and its zero-based UTF-16 offset
OffsetTokenCode pointDecimalKind / common label
0AU+004165PRINTABLE ASCII
1\tU+00099TAB
2BU+004266PRINTABLE ASCII
3\u{00A0}U+00A0160NO-BREAK SPACE
4CU+004367PRINTABLE ASCII
5\u{200B}U+200B8203ZERO WIDTH SPACE
6\nU+000A10LINE FEED
7\u{1F469}U+1F469128105OTHER CODE POINT
9\u{200D}U+200D8205ZERO WIDTH JOINER
10\u{1F4BB}U+1F4BB128187OTHER CODE POINT

Try a tab, a no-break space and a zero width space

The sample's escaped form is:

A\tB\u{00A0}C\u{200B}\n\u{1F469}\u{200D}\u{1F4BB}
  1. Leave repairs off and inspect the original table. Find U+0009, U+00A0 and U+200B.
  2. Choose 2 spaces per tab, check Replace U+00A0 and Remove U+200B, then Inspect and preview.
  3. The result begins with A, two ordinary spaces, B, one ordinary space and C. Three replacements are reported. The LF and woman-technologist emoji sequence remain.
  4. Copy repaired text or download repaired TXT. These contain the raw characters, not the escape tokens. Download original TXT separately if you need both.

Ordinary spaces, leading/trailing spaces and blank lines are never trimmed. Tabs become a fixed number of spaces, not alignment-aware tab stops. Removing U+200B can change word breaking; replacing no-break spaces can allow wrapping. Review your receiving app before using the result.

Invisible does not mean unwanted

U+200D zero width joiner can connect an emoji sequence or affect script shaping. U+200C non-joiner, variation selectors and combining marks also carry meaning. This tool keeps them, even when Remove U+200B is checked. Bidi controls are revealed, not stripped. It is not a sanitizer, a malicious-text detector or a Unicode normalization tool.

A code point is not necessarily one visible character or one terminal cell. The sample emoji has three code points and five UTF-16 units. Font support, grapheme shaping and terminal rules determine its appearance. See the worked ASCII/Unicode width comparison and ASCII encoding reference.

Input and export limits

This is a bounded text-field inspector: 1,000 UTF-16 input units, no silent truncation and no file upload. The table pages through 50 code points at a time; exports always include the complete result. Browsers normally normalize pasted CRLF or lone CR to LF before inspection, so this is not a byte-for-byte file-line-ending audit. The counters describe the string actually held by this tab. Empty input is valid; unpaired UTF-16 surrogates are rejected explicitly because valid UTF-8 cannot preserve them.

TXT uses UTF-8 and adds no final newline. Clipboard and receiving editors may adapt line endings. Repairs never overwrite the input or automatically transfer it to another tool. For printable ASCII you have checked, paste the result into ASCII to PNG; that tool deliberately rejects tabs, Unicode and controls other than supported line endings.

Inputs and repair choices stay in memory, not links, saved settings or analytics events. Export before leaving. Site analytics, storage and hosting are separate.

Technical sources: Unicode: whitespace and default-ignorable characters and Unicode: code points and UTF encodings. Categories use this browser's Unicode property data; new-version assignments can differ between runtimes.