Unicode Planes
The Unicode standard divides its 1,114,112 codepoints into 17 planes of 65,536 codepoints each, numbered 0 through 16. Plane 0 is the Basic Multilingual Plane (BMP), covering virtually all modern scripts; Planes 1–3 hold supplementary and historic characters; Planes 4–13 are currently unassigned; Plane 14 holds special-purpose tags; and Planes 15–16 are reserved for private use.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/unicode-planes.json
Or use as a typed import:
import { unicodePlanes } from "https://staticdata.dev/v1/unicode-planes.ts"
Formats
- JSON 3.4 KB
/v1/unicode-planes.json
min: 2.9 KB · /v1/unicode-planes.min.json
- CSV 2.2 KB
/v1/unicode-planes.csv
- TypeScript 3.6 KB
/v1/unicode-planes.ts
export const unicodePlanes
type UnicodePlane = (typeof unicodePlanes)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| plane | number | Plane number (0–16) | 0 |
| name | string | Official name of the plane | Basic Multilingual Plane |
| range | string | Codepoint range in U+XXXX..U+XXXX notation | U+0000..U+FFFF |
| description | string | Brief description of the plane's contents and purpose | Contains characters for almost all modern languages and many symbols. |
Preview
First 10 records.
| plane | name | range | description |
|---|---|---|---|
| 0 | Basic Multilingual Plane | U+0000..U+FFFF | Contains characters for almost all modern languages and many symbols; the most widely used Unicode plane. |
| 1 | Supplementary Multilingual Plane | U+10000..U+1FFFF | Historic scripts, musical notation, mathematical alphanumerics, emoji, and other modern-use supplementary characters. |
| 2 | Supplementary Ideographic Plane | U+20000..U+2FFFF | CJK Unified Ideographs Extensions B–F and I, plus the CJK Compatibility Ideographs Supplement: rare and historic Chinese, Japanese, and Korean characters. |
| 3 | Tertiary Ideographic Plane | U+30000..U+3FFFF | CJK Unified Ideographs Extensions G, H, and J (rare and archaic sinographs) and, since Unicode 18.0, the Seal script block. |
| 4 | Unassigned Plane 4 | U+40000..U+4FFFF | Currently unassigned; reserved for future Unicode use. |
| 5 | Unassigned Plane 5 | U+50000..U+5FFFF | Currently unassigned; reserved for future Unicode use. |
| 6 | Unassigned Plane 6 | U+60000..U+6FFFF | Currently unassigned; reserved for future Unicode use. |
| 7 | Unassigned Plane 7 | U+70000..U+7FFFF | Currently unassigned; reserved for future Unicode use. |
| 8 | Unassigned Plane 8 | U+80000..U+8FFFF | Currently unassigned; reserved for future Unicode use. |
| 9 | Unassigned Plane 9 | U+90000..U+9FFFF | Currently unassigned; reserved for future Unicode use. |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/unicode-planes.json | jq '.[0]' import type { UnicodePlane } from "https://staticdata.dev/v1/unicode-planes.ts";
const res = await fetch("https://staticdata.dev/v1/unicode-planes.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const unicodePlanes: UnicodePlane[] = await res.json();
console.log(unicodePlanes[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/unicode-planes.min.json") as r:
unicodePlanes = json.load(r)
print(unicodePlanes[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/unicode-planes.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/unicode-planes.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
The Unicode codespace spans U+0000 to U+10FFFF — exactly 1,114,112 codepoints — divided into 17 planes of 65,536 codepoints each. Each plane is identified by its number (0–16) and a hexadecimal prefix that forms the high bits of every codepoint it contains.
Plane 0, the Basic Multilingual Plane (BMP), covers the vast majority of characters needed for modern computing: Latin, Greek, Cyrillic, Arabic, Hebrew, CJK ideographs, punctuation, and general symbols. Planes 1–3 extend coverage to historic scripts (Linear B, cuneiform, Egyptian hieroglyphs, and — since Unicode 18.0 — Seal script in Plane 3), musical and mathematical notation, emoji, and the enormous body of rare CJK ideographs. Planes 4–13 are currently unassigned and reserved for future standardization. Plane 14 holds language tags and variation selectors used as invisible metadata. Planes 15 and 16 are designated Supplementary Private Use Areas, available for private agreements between implementers.
This dataset is curated from the authoritative Unicode Standard documentation. The codepoint ranges are fixed by the standard and will not change; the assigned/unassigned status of planes 4–13 reflects Unicode 18.0, the current version as of October 2026, and may change in future Unicode versions. The names “Unassigned Plane 4” … “Unassigned Plane 13” are descriptive labels, not official Unicode names.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
unicode-planes changelog for this dataset's history.
Related datasets
More Code datasets
- ansi-colors
- cron-presets
- css-at-rules
- css-functions
- css-named-colors
- css-properties
- css-pseudo-classes
- css-pseudo-elements
- css-units
- data-units
- exit-codes
- file-signatures
- hash-algorithms
- js-array-methods
- js-math-methods
- js-object-methods
- js-string-methods
- json-schema-keywords
- jwt-claims
- mathematical-constants
- measurement-units
- node-builtin-modules
- owasp-top-10
- periodic-table
- physical-constants
- posix-signals
- programming-languages
- regex-flags
- regex-patterns
- roman-numerals
- si-base-units
- si-derived-units
- si-prefixes
- spdx-licenses
- strftime-tokens
- tailwind-colors
- time-units
- unicode-general-categories
- unix-file-permissions
- xterm-256-colors