Unicode Codepoint Converter
Convert any character or string between Unicode representations: U+ notation, decimal, hex, HTML entities, CSS content, URL encoding, UTF-8/UTF-16 bytes, and binary.
このツールについて
Explore the full Unicode representation of any character or string across all common encoding formats simultaneously. Enter a character, a U+ codepoint, a decimal number, a hexadecimal value, an HTML entity, or any other supported format — all representations update instantly. Supported formats include: the rendered character itself; the U+ codepoint in standard Unicode notation (e.g. U+0041); the decimal code point (65); hexadecimal (0x41); HTML decimal entity (A); HTML hex entity (A); named HTML entity where one exists (e.g. & for &); CSS content escape value (\0041); URL percent-encoding (%41); UTF-8 byte sequence as hex (e.g. E2 82 AC for €); UTF-16 code unit(s); and the 8-bit binary representation. Multi-character mode breaks a string into its individual Unicode code points — each character is listed in its own row with all representations side by side, making it easy to inspect compound emoji, combining characters, and surrogate pairs. Characters above U+FFFF (emoji and rare CJK characters) show their UTF-16 surrogate pair (high surrogate + low surrogate) and their 4-byte UTF-8 sequence. A Unicode block and category label (e.g. 'Basic Latin', 'Letter, Uppercase') is shown for each code point.
使い方
- 1 Type or paste a character into the 'Character' field — all other fields update immediately.
- 2 Alternatively enter a value in any other field (U+ notation, decimal, hex, HTML entity, etc.) to convert from that format.
- 3 Switch to Multi-character mode to analyze a whole string: each character appears in its own table row.
- 4 Click any value to copy it to the clipboard.
- 5 For emoji or characters above U+FFFF, check the UTF-16 surrogate pair and 4-byte UTF-8 sequence in the expanded row.
One character, a dozen ways to write it
Behind every character you see — a letter, a symbol, an emoji — is a single integer called a Unicode code point. The capital letter A is code point 65, written in Unicode notation as U+0041. That one number can be expressed in many forms depending on where you need it: as a decimal, as hex, as an HTML entity in a web page, as a CSS escape in a stylesheet, as a percent-encoding in a URL, or as the raw bytes that actually travel over the network. This converter shows all of those forms at once and lets you go backwards too — type a value into any field and every other field updates to match. It is the tool you reach for when a character looks right on screen but breaks somewhere in your pipeline.
The representations, explained
| Form | Example for "A" (U+0041) | Where you use it |
|---|---|---|
| U+ notation | U+0041 | Standards, documentation, Unicode charts |
| Decimal | 65 | Programming, character math |
| Hexadecimal | 0x41 | Low-level code, debuggers |
| HTML decimal entity | A | HTML when the character is hard to type |
| HTML hex entity | A | HTML, common in templates |
| CSS escape | \0041 | content property in ::before / ::after |
| URL encoded | %41 | Query strings and paths |
For each character the tool also shows its UTF-8 byte sequence, its UTF-16 code unit(s), an 8-bit minimum binary form, the Unicode block it lives in, and a named HTML entity when one exists (for example & for the ampersand). Where no friendly name is defined, that field simply shows a dash.
UTF-8 versus UTF-16, with a worked example
The single most useful thing this tool teaches is how a code point becomes bytes, because that is where encoding bugs hide. Take the euro sign, €, which is U+20AC (decimal 8364). It is too large to fit in one byte, so UTF-8 spreads it across three bytes: E2 82 AC. The tool computes this the way the standard defines it — a leading byte that signals "three-byte sequence" followed by two continuation bytes, each carrying six bits of the code point. UTF-16, by contrast, fits the euro into a single 16-bit unit, 20AC. Seeing both side by side explains why the same string can be 3 bytes in a UTF-8 file but 2 bytes in a UTF-16 buffer.
Surrogate pairs and why emoji "count as two"
Code points above U+FFFF — most emoji and many rare CJK characters — cannot fit in one UTF-16 unit. They are encoded as a surrogate pair: a high surrogate (U+D800–U+DBFF) followed by a low surrogate (U+DC00–U+DFFF). For example, 😀 is U+1F600; the tool shows its UTF-16 as two units in the surrogate range and its UTF-8 as a four-byte sequence. This is the technical reason a single emoji often behaves like two characters in code that measures string length by UTF-16 units — a frequent source of off-by-one bugs when truncating text.
Multi-character mode for inspecting strings
Switch to Multi-Character mode and the tool breaks an entire string into one table row per code point, showing the character, its U+ value, decimal, UTF-8, UTF-16, HTML entity, and block. This is invaluable for diagnosing text that looks simple but isn't:
- Compound emoji. A family emoji or a flag is built from several code points joined by a Zero Width Joiner (U+200D) or a Variation Selector (U+FE0F). The table reveals every hidden component.
- Combining characters. An accented é may be one pre-composed code point (U+00E9) or a plain
efollowed by a combining acute accent (U+0301). They look identical but compare as unequal — the table shows which one you actually have. - Invisible intruders. A pasted string that refuses to match in code often contains a stray non-breaking space (U+00A0) or zero-width character; per-row inspection finds it instantly.
Practical tips and common mistakes
- U+ notation has no fixed width. U+41 and U+0041 are the same code point; the standard convention pads to at least four hex digits, which is why the tool displays U+0041.
- Hex vs decimal mix-ups. 41 in hex is 65 in decimal, but 41 in decimal is the apostrophe-area character U+0029-range. Make sure you enter values in the field that matches their base.
- CSS escapes need care when followed by hex digits.
\0041is safe because it is zero-padded to six implied digits; an unpadded\41followed by a literal hex character can be misread by the parser. Use the padded form the tool emits. - The binary view is a minimum of 8 bits. Small code points are padded to a full byte for readability, not because the character occupies that many bits on disk — the UTF-8 field is the accurate byte count.
- Named entities are a short list. Only a handful of characters have human-readable HTML names; for everything else use the numeric entity, which always works.
All conversions are computed locally in your browser. Nothing you type is uploaded, so it is safe to inspect tokens, keys, or any sensitive text.