staticdata.dev
Menu
Datasets About Contact

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.

v1.0.0 Unicode-3.0 353 records Updated 2026-10-05 stable Source:  Unicode Character Database — Blocks.txt

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
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

    Open

    min: 32.0 KB · /v1/unicode-blocks.min.json

  • CSV 15.5 KB

    /v1/unicode-blocks.csv

    Open
  • TypeScript 44.6 KB

    /v1/unicode-blocks.ts

    export const unicodeBlocks

    type UnicodeBlock = (typeof unicodeBlocks)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
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.

Data preview
namestartendstartDecendDec
Basic LatinU+0000U+007F0127
Latin-1 SupplementU+0080U+00FF128255
Latin Extended-AU+0100U+017F256383
Latin Extended-BU+0180U+024F384591
IPA ExtensionsU+0250U+02AF592687
Spacing Modifier LettersU+02B0U+02FF688767
Combining Diacritical MarksU+0300U+036F768879
Greek and CopticU+0370U+03FF8801023
CyrillicU+0400U+04FF10241279
Cyrillic SupplementU+0500U+052F12801327

Showing 10 of 353. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/unicode-blocks.json | jq '.[0]'
JavaScript
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]);
Python
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])
Go
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])
}
Rust
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