A Guide to Unicode Blocks

· 2 min read

Unicode organises its 154,000+ assigned characters into blocks—contiguous ranges of code points dedicated to a particular script, symbol category, or special purpose. Understanding blocks makes it easier to navigate the Unicode standard, target specific character sets, and interpret code point values at a glance.

What Makes a Block?

Each Unicode block has a name, a start code point, and an end code point. The start and end are always aligned to a multiple of 16 (for aesthetic reasons in the printed code charts). Blocks never overlap, but there can be unassigned code points within a block—Unicode reserves space for future characters.

For example, Basic Latin covers U+0000–U+007F (128 code points) and contains all ASCII characters. Latin-1 Supplement immediately follows at U+0080–U+00FF and adds accented letters used in Western European languages. You can browse all Unicode blocks to see the complete picture.

Blocks vs Scripts

Blocks are a spatial concept—they're about where in the code point space a character lives. Scripts are a linguistic concept—they're about which writing system a character belongs to. A script can span multiple blocks (Han characters appear across several blocks), and a block can contain characters from multiple scripts (the block "Letterlike Symbols" contains characters used in many contexts).

Common Blocks Worth Knowing

  • Basic Latin (U+0000–U+007F): ASCII. Every developer knows this one.
  • General Punctuation (U+2000–U+206F): En dash, em dash, smart quotes, zero-width joiners—characters you use constantly but might not know the codepoints of.
  • Miscellaneous Symbols (U+2600–U+26FF): ☀ ☁ ☂ ♠ ♥ ♦ ♣ and many more classic symbols.
  • Emoticons (U+1F600–U+1F64F): Familiar emoji faces. These are supplementary characters requiring UTF-16 surrogate pairs.
  • CJK Unified Ideographs (U+4E00–U+9FFF): The largest block, with 20,902 commonly-used Han characters.

The block a character belongs to is shown on every character detail page. For instance, U+2665 ♥ lives in Dingbats—not General Punctuation as you might expect.