CruxDevCruxDev Tools Prompts
text Utility • Zero-Server Privacy • 100% Client-Side

Text ↔ Unicode Codepoints

Show Unicode codepoints (U+XXXX), UTF-8/UTF-16 byte sequences, and character names for every character in the input.

Overview

Shows the Unicode anatomy of every character in your text: the code point in U+XXXX notation, its decimal value, and the exact UTF-8 byte sequence it encodes to. One row per character, click any code point to copy it, all computed live in your browser.

How It Works

Type or paste into the single input line — the default sample mixes an accented word, CJK characters and an emoji so all the byte-width cases are visible at once. The table below lists each character with its glyph, U+ code point, decimal code point and space-separated UTF-8 bytes in hex. Click a code point to copy it. The table grows with your input and scrolls, keeping the earliest characters visible.

Step-by-Step Usage Guide

  1. Type or paste the text whose encoding you want to see.
  2. Find the character of interest in the table; each row is one code point.
  3. Click the U+ code point to copy it for use in documentation, CSS escapes or bug reports.
  4. Read the UTF-8 column to see the actual bytes any conforming encoder will produce for that character.

Technical Specifications & Standards

UTF-8 (RFC 3629) is a variable-width encoding, and this table makes its rules concrete: code points U+0000 to U+007F take one byte (the plain ASCII case), U+0080 to U+07FF take two, U+0800 to U+FFFF take three (this is where CJK characters live), and U+10000 and above take four (most emoji). Continuation bytes always begin with the bits 10, and the leading byte's leading 1-bits announce the width — 110 for two bytes, 1110 for three, 11110 for four — which is why the globe emoji U+1F30D becomes F0 9F 8C 8D: one four-byte lead plus three continuations. The iteration uses the spread operator, so astral characters are listed once per code point rather than twice per surrogate half, matching what humans call characters. The distinction the table teaches: code points are the abstract characters Unicode defines (what the U+ and decimal columns show), while UTF-8 bytes are how those characters are stored on disk and wire (the right column) — the same character, two different numbers.

Targeted Use Cases

  • Learning UTF-8: watching byte counts grow from one to four as code points climb.
  • Debugging encoding bugs: comparing the bytes you have with the bytes a specification requires.
  • Reporting a problematic character precisely with its U+ code point instead of a screenshot.
  • Extracting code points for CSS unicode-range declarations, regexes or charset tests.

Notes & Gotchas

  • Use the code point (U+XXXX) when documenting a character; it is unambiguous across fonts and platforms.
  • Expect 1-4 bytes per character in UTF-8 and never assume one byte equals one character in size calculations.
  • For full string analysis — counts, blocks, code units versus code points — pair this with the Unicode Inspector tool.
  • Paste plain text rather than already-escaped input; backslash-u sequences will be shown as their literal characters.

Frequently Asked Questions

Why does one character take four UTF-8 bytes?

UTF-8 is variable-width. Characters above U+FFFF — most emoji, rare historic scripts — occupy four bytes: one leading byte marking the width and three continuation bytes each carrying six bits of the code point.

What is the difference between a code point and a byte?

A code point is a character's abstract identity in Unicode (shown here as U+XXXX and decimal); a byte is a unit of storage. UTF-8 maps each code point to one, two, three or four bytes depending on its value.

How do I copy just a character's code point?

Click the U+XXXX cell in its row; the notation is copied to your clipboard in the standard four-digit uppercase hex form.

Does it handle emoji correctly?

Yes. The input is iterated by code point, so an emoji appears as one row with its single code point and its four UTF-8 bytes, rather than as two confusing surrogate halves.