Unicode Planes Table
| Plane | Range | Name | Status / use |
|---|---|---|---|
| 0 | 00000–0FFFF | Basic Multilingual Plane (BMP) | assigned - most modern languages and symbols, dominated by CJK |
| 1 | 10000–1FFFF | Supplementary Multilingual Plane (SMP) | assigned - historic scripts, notation and emoji (U+10000–U+1FFFF) |
| 2 | 20000–2FFFF | Supplementary Ideographic Plane (SIP) | assigned - CJK Ideograph Extension B and later (U+20000–U+2FFFF) |
| 3 | 30000–3FFFF | Tertiary Ideographic Plane (TIP) | assigned - CJK Ideograph Extension G and later (U+30000–U+3FFFF) |
| 4 | 40000–4FFFF | Plane 4 (no name) | unassigned - reserved for future growth |
| 5 | 50000–5FFFF | Plane 5 (no name) | unassigned - reserved for future growth |
| 6 | 60000–6FFFF | Plane 6 (no name) | unassigned - reserved for future growth |
| 7 | 70000–7FFFF | Plane 7 (no name) | unassigned - reserved for future growth |
| 8 | 80000–8FFFF | Plane 8 (no name) | unassigned - reserved for future growth |
| 9 | 90000–9FFFF | Plane 9 (no name) | unassigned - reserved for future growth |
| 10 | A0000–AFFFF | Plane 10 (no name) | unassigned - reserved for future growth |
| 11 | B0000–BFFFF | Plane 11 (no name) | unassigned - reserved for future growth |
| 12 | C0000–CFFFF | Plane 12 (no name) | unassigned - reserved for future growth |
| 13 | D0000–DFFFF | Plane 13 (no name) | unassigned - reserved for future growth |
| 14 | E0000–EFFFF | Supplementary Special-purpose Plane (SSP) | assigned - tags (U+E0000) and variation selectors (U+E0100) |
| 15 | F0000–FFFFF | Supplementary Private Use Area-A (SPUA-A) | private use (planes 15-16 hold 131,072 of the 137,468 private-use code points) |
| 16 | 100000–10FFFF | Supplementary Private Use Area-B (SPUA-B) | private use (planes 15-16 hold 131,072 of the 137,468 private-use code points) |
A plane in the Unicode standard is a contiguous group of 65,536 (2<sup>16</sup>) code points. There are 17 planes, numbered 0 to 16 - the possible values 00–10 in the first two hex positions of a six-digit code point like U+1F600. Plane 0 is the Basic Multilingual Plane (BMP), where almost everything anyone types lives; planes 1–16 are the supplementary planes, ending at U+10FFFF, the last code point of plane 16.
The shape of the codespace is not a design preference - it is UTF-16 arithmetic. Surrogate pairs can encode 2<sup>20</sup> code points as pairs of 16-bit words (16 planes) plus the BMP as a single word: 17 in all. UTF-8 was designed for vastly more (2<sup>31</sup> code points, or 32,768 planes) and could still address 32 planes within its 4-byte form - the standard simply does not use the room.
The table below lists all 17 planes with their ranges, names and status. As of Unicode 18.0, five planes have assigned code points and seven planes are named; the accounting of the whole codespace is exact and is laid out in the chart notes below.
How to use
- Use the Range column as a prefix lookup: pad any code point to six hex digits and its first two digits are the plane number in hex (U+010300 = plane 01, U+0E0001 = plane 0E = 14). The padded first pair decodes most “which plane is this?” questions without a tool.
- Read the Status column as the real map: only planes 0, 1, 2, 3 and 14 hold assigned characters today; planes 15–16 are reserved wholesale for private use, and planes 4–13 are unnamed, unassigned headroom. The five populated planes cover modern text, historic scripts, CJK ideograph extensions and special-purpose tags.
- When you meet an unassigned-looking code point below U+10FFFF, check it is not one of the reserved categories: 2,048 surrogate code points (D800–DFFF), 66 non-characters and 137,468 private-use code points are permanently off the public table - which is why the full accounting leaves 974,530 code points for actual characters.
Frequently asked questions
How do I tell which plane a character is on from its code point?
Pad the code point to six hex digits and read the first two as one hex value: that is the plane number (00–10 hex = 0–16 decimal). U+0041 pads to U+000041 - plane 0. U+1F600 pads to U+01F600 - plane 01, the SMP, where emoji live. U+10300 pads to U+010300 - plane 01 again (Old Italic). U+E0001 pads to U+0E0001 - plane 0E, plane 14, the tag characters. The one trap is skipping the padding: U+10300 has five digits, and reading its raw first two (10) as the plane would land it on plane 16 by mistake.
Why does Unicode stop at U+10FFFF?
Because of UTF-16. The 17-plane codespace is exactly what UTF-16 can address: 2<sup>20</sup> code points through surrogate pairs (16 planes) plus 2<sup>16</sup> in the BMP as single words. Wikipedia cites the Unicode 6.0 core specification table for this bit distribution. UTF-8, by contrast, was designed for 2<sup>31</sup> code points (32,768 planes) and could still express 32 planes within four bytes - the codespace cap is a UTF-16 legacy, not a UTF-8 one.
What is in the Basic Multilingual Plane?
Almost everything common: characters for nearly all modern languages plus a large share of symbols, with the bulk of assigned code points going to CJK (Chinese, Japanese, Korean) ideographs and other East Asian writing systems. A key design goal of the BMP was unifying prior character sets - which is why Latin-1’s 256 characters are its first 256 code points, and why legacy encodings map onto it so cleanly.
Which planes actually have characters?
Five, per the Unicode standard as of version 18.0: plane 0 (BMP, modern text and symbols), plane 1 (SMP - historic scripts, notation, emoji), plane 2 (SIP - CJK ideograph extension B and later), plane 3 (TIP - the newest ideograph extensions), and plane 14 (SSP - language tags and variation selectors). The remaining supplementary planes are either private use (15–16) or unassigned headroom (4–13).
What are planes 15 and 16 for?
Private use. Together they hold 131,072 code points of the 137,468 total private-use reserve (the rest sits inside the BMP and plane 14). Private-use code points are guaranteed never to be assigned by the standard, letting communities, fonts and vendors define their own symbols - the mechanism behind many icon fonts and, historically, some scripts that predate their official encoding.