Unicode Blocks
All 353 named Unicode blocks as of Unicode 18.0 — contiguous ranges of codepoints like Basic Latin, Cyrillic, CJK Unified Ideographs, and Emoticons. Each entry gives the block name and its inclusive start and end codepoints, both as U+ notation and as decimal integers for easy range checks.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/unicode-blocks.json
Or use as a typed import:
import { unicodeBlocks } from "https://staticdata.dev/v1/unicode-blocks.ts"
Formats
- JSON 44.4 KB
/v1/unicode-blocks.json
min: 32.0 KB · /v1/unicode-blocks.min.json
- CSV 15.5 KB
/v1/unicode-blocks.csv
- TypeScript 44.6 KB
/v1/unicode-blocks.ts
export const unicodeBlocks
type UnicodeBlock = (typeof unicodeBlocks)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| name | string | Block name | Basic Latin |
| start | string | First codepoint (U+ notation) | U+0000 |
| end | string | Last codepoint (U+ notation) | U+007F |
| startDec | number | First codepoint as a decimal integer | 0 |
| endDec | number | Last codepoint as a decimal integer | 127 |
Preview
First 10 records.
| name | start | end | startDec | endDec |
|---|---|---|---|---|
| Basic Latin | U+0000 | U+007F | 0 | 127 |
| Latin-1 Supplement | U+0080 | U+00FF | 128 | 255 |
| Latin Extended-A | U+0100 | U+017F | 256 | 383 |
| Latin Extended-B | U+0180 | U+024F | 384 | 591 |
| IPA Extensions | U+0250 | U+02AF | 592 | 687 |
| Spacing Modifier Letters | U+02B0 | U+02FF | 688 | 767 |
| Combining Diacritical Marks | U+0300 | U+036F | 768 | 879 |
| Greek and Coptic | U+0370 | U+03FF | 880 | 1023 |
| Cyrillic | U+0400 | U+04FF | 1024 | 1279 |
| Cyrillic Supplement | U+0500 | U+052F | 1280 | 1327 |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/unicode-blocks.json | jq '.[0]' import type { UnicodeBlock } from "https://staticdata.dev/v1/unicode-blocks.ts";
const res = await fetch("https://staticdata.dev/v1/unicode-blocks.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const unicodeBlocks: UnicodeBlock[] = await res.json();
console.log(unicodeBlocks[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/unicode-blocks.min.json") as r:
unicodeBlocks = json.load(r)
print(unicodeBlocks[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/unicode-blocks.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-blocks.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
The data is parsed directly from Blocks.txt in the Unicode Character Database, the normative source for block assignments; this snapshot reflects Unicode 18.0.0 (current as of October 2026). Unicode Character Database files are © Unicode, Inc. and distributed under the Unicode License v3 (SPDX Unicode-3.0), which requires the copyright and permission notice to be retained in copies of the data. Blocks are sorted by their starting codepoint.
A block is a single contiguous range; ranges never overlap, and the entire codepoint space is partitioned so that any codepoint falls in at most one named block (codepoints in gaps belong to no block). To find the block for a codepoint, compare it against startDec/endDec. Note that a block is an allocation range, not a guarantee that every codepoint within it is assigned — blocks routinely contain reserved, unassigned positions.
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-blocks 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
- unicode-planes
- unix-file-permissions
- xterm-256-colors