Skip to content

Unicode Character Inspector

Samples:

Summary

7Characters
6Unique
10UTF-8 bytes
1Non-ASCII
6BMP
1Supplementary

Character Breakdown (7 characters)

H
U+0048
LATIN CAPITAL LETTER H
Letter
UTF-8
0x48
UTF-16
U+0048
HTML
H
JS/JSON
H
e
U+0065
LATIN SMALL LETTER E
Letter
UTF-8
0x65
UTF-16
U+0065
HTML
e
JS/JSON
e
l
U+006C
LATIN SMALL LETTER L
Letter
UTF-8
0x6C
UTF-16
U+006C
HTML
l
JS/JSON
l
l
U+006C
LATIN SMALL LETTER L
Letter
UTF-8
0x6C
UTF-16
U+006C
HTML
l
JS/JSON
l
o
U+006F
LATIN SMALL LETTER O
Letter
UTF-8
0x6F
UTF-16
U+006F
HTML
o
JS/JSON
o
U+0020
SPACE
Separator
UTF-8
0x20
UTF-16
U+0020
HTML
JS/JSON
🌍
U+1F30D
U+1F30D
Emoji
UTF-8
0xF0 0x9F 0x8C 0x8D
UTF-16
U+D83C U+DF0D
HTML
🌍
JS/JSON
\u{1F30D}

What This Tool Does

Paste any text to see every character's Unicode code point, name, category, UTF-8 bytes, UTF-16 units, HTML entity, and JavaScript escape — all computed in your browser. The inspector iterates by code point, so an emoji beyond U+FFFF appears as one character with its surrogate pair shown, which is why JavaScript's .length reports it as two.

Last updated:

This tool is provided as-is for convenience. Output should be verified before use in any production or critical context.

Agent Invocation

Best Path For Builders

Browser workflow

Runs instantly in the browser with private local processing and copy/export-ready output.

Browser Workflow

This tool is optimized for instant in-browser execution with local data handling. Run it here and copy/export the output directly.

/unicode-inspector/

For automation planning, fetch the canonical contract at /api/tool/unicode-inspector.json.

How to Use Unicode Character Inspector

  1. 1

    Paste or type your text

    Enter any text in the input box — plain ASCII, accented letters, emoji, CJK characters, RTL scripts, or a mix. You can also click a sample button to load a ready-made example like 'Emoji mix' or 'Zero-width'.

  2. 2

    Read the Summary panel

    The Summary row shows total character count, unique code points, total UTF-8 byte count, non-ASCII character count, and how many characters fall inside vs. outside the Basic Multilingual Plane (BMP).

  3. 3

    Inspect individual character cards

    Each character gets its own card showing: the glyph, its Unicode code point (e.g. U+1F30D), official name, category badge (Letter, Emoji, Control…), UTF-8 bytes, UTF-16 code units, HTML entity, and JavaScript escape sequence.

  4. 4

    Copy any encoding

    Click the small 'copy' button next to any encoding value — UTF-8 bytes, UTF-16 units, HTML entity, or JS escape — to copy that representation directly to your clipboard. Use this to paste exact escape sequences into your source code.

Frequently Asked Questions

What is Unicode Character Inspector?
Unicode Character Inspector is a free online tool that breaks any text string into its individual characters and shows each one's Unicode code point (e.g. U+1F30D), UTF-8 byte sequence, UTF-16 code units, UTF-32 value, HTML entity, JavaScript escape, and Unicode category — instantly in your browser.
How do I use Unicode Character Inspector?
Paste or type any text into the input box. Each character appears as a card showing its code point, name, category badge, and all encoding representations. Use the sample buttons to try emoji, accented letters, CJK, RTL, or zero-width characters.
Is Unicode Character Inspector free?
Yes. Unicode Character Inspector is completely free with no account or sign-up required.
Does Unicode Character Inspector send my text to a server?
No. All character inspection happens entirely in your browser using the JavaScript Unicode API. Your text never leaves your device.
Why do emoji show two UTF-16 units?
Emoji and other supplementary characters (above U+FFFF) fall outside the Basic Multilingual Plane. In UTF-16 they use a surrogate pair: a high surrogate (D800–DBFF) plus a low surrogate (DC00–DFFF). The inspector shows both units — the exact values JavaScript's string engine uses internally.

How do I find the Unicode code point and UTF-8 bytes of a character?

Paste or type the text. Each character renders as a card showing its code point (U+1F600 style), official or descriptive name, category badge, and four encodings side by side: UTF-8 bytes, UTF-16 units, HTML entity, and JavaScript escape — each with a copy button. Everything is decoded in the page as you type.

Step by step

  1. Paste text into the input — or load a sample: emoji, accented Latin, CJK, right-to-left Arabic, math symbols, or a string with a hidden zero-width character.
  2. Read the summary bar: total characters, unique code points, UTF-8 byte count, non-ASCII count, and how many characters sit in the Basic Multilingual Plane versus the supplementary planes.
  3. Inspect each card. Control characters display as red \x escapes instead of an invisible glyph.
  4. Copy the encoding you need — the UTF-8 byte sequence for a protocol bug, the \u escape for a source file, the entity for HTML.

How code points map to encodings

Code point range UTF-8 UTF-16 JS escape
U+0000 – U+007F 1 byte 1 unit literal or \uXXXX
U+0080 – U+07FF 2 bytes 1 unit \uXXXX
U+0800 – U+FFFF 3 bytes 1 unit \uXXXX
U+10000 – U+10FFFF 4 bytes surrogate pair (2 units) \u{XXXXX}

Encoding widths follow the UTF-8 and UTF-16 specifications. The category badge is this tool's simplified grouping (Letter, Number, Punctuation, Symbol, Separator, Control, Emoji, Other), not the full Unicode General Category property.

Why does one emoji count as two characters in JavaScript?

JavaScript's .length counts UTF-16 code units, and every code point above U+FFFF is stored as a surrogate pair of two units. The inspector iterates by code point instead, so 🚀 (U+1F680) shows as one character — with both UTF-16 units listed — while a naive .length check reports 2. The BMP versus supplementary split in the summary tells you how many characters in your string behave this way.

How do I find invisible or zero-width characters in text?

Paste the suspect string and scan the cards: zero-width space (U+200B), zero-width joiner and non-joiner, directional marks, and the byte-order mark (U+FEFF) all surface with their names even though they render as nothing. This catches the classic bugs — a copied identifier that fails equality checks, a JSON key with a hidden BOM, or text that breaks a tokenizer.

Does the text I paste leave the browser?

No. Decoding runs entirely in the page; nothing is transmitted or stored. That matters when the string you are debugging is a user's name, an API token, or content from a production database — close the tab and it is gone.