staticdata.dev
Menu
Datasets About Contact

Unicode General Categories

The Unicode Standard assigns every codepoint a General Category — a two-letter abbreviation (e.g. Lu for Uppercase Letter, Nd for Decimal Number) that classifies its basic character type. This dataset lists all 30 normative categories together with their full English names and the seven top-level groups they belong to.

v1.0.0 MIT 30 records Updated 2026-10-05 stable Source:  Unicode Character Database — General Category

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/unicode-general-categories.json

Or use as a typed import: import { unicodeGeneralCategories } from "https://staticdata.dev/v1/unicode-general-categories.ts"

Formats

  • JSON 2.6 KB

    /v1/unicode-general-categories.json

    Open

    min: 1.9 KB · /v1/unicode-general-categories.min.json

  • CSV 840 B

    /v1/unicode-general-categories.csv

    Open
  • TypeScript 2.8 KB

    /v1/unicode-general-categories.ts

    export const unicodeGeneralCategories

    type UnicodeCategory = (typeof unicodeGeneralCategories)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
abbreviation string Two-letter category code (e.g. Lu, Nd) Lu
name string Full English name of the category Uppercase Letter
group string Top-level group (Letter, Mark, Number, Punctuation, Symbol, Separator, Other) Letter

Preview

First 10 records.

Data preview
abbreviationnamegroup
LuUppercase LetterLetter
LlLowercase LetterLetter
LtTitlecase LetterLetter
LmModifier LetterLetter
LoOther LetterLetter
MnNonspacing MarkMark
McSpacing MarkMark
MeEnclosing MarkMark
NdDecimal NumberNumber
NlLetter NumberNumber

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

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/unicode-general-categories.json | jq '.[0]'
JavaScript
import type { UnicodeCategory } from "https://staticdata.dev/v1/unicode-general-categories.ts";

const res = await fetch("https://staticdata.dev/v1/unicode-general-categories.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const unicodeGeneralCategories: UnicodeCategory[] = await res.json();
console.log(unicodeGeneralCategories[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/unicode-general-categories.min.json") as r:
    unicodeGeneralCategories = json.load(r)

print(unicodeGeneralCategories[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/unicode-general-categories.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-general-categories.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

The Unicode General Category is a normative property defined in the Unicode Character Database (UCD). Every codepoint carries exactly one category value (unassigned codepoints have Cn), expressed as a two-letter code whose first letter indicates the major group (L = Letter, M = Mark, N = Number, P = Punctuation, S = Symbol, Z = Separator, C = Other) and whose second letter further distinguishes subtypes within that group.

This dataset contains all 30 category values as specified in Unicode Standard Annex #44 (UAX #44), General_Category Values table. The records are ordered by group and, within each group, in the same order as that table (e.g. Lu, Ll, Lt, Lm, Lo). The grouping aliases L, M, N, P, S, Z, C (and LC, Cased_Letter) are not records of their own; they are represented by the group field. The group field reflects the seven top-level classes used in regex engines (e.g., \p{L} for any letter) and in Unicode-aware text-processing APIs across most programming languages.

Because General Category values are normative and defined by the Unicode Consortium, this dataset changes only if a new Unicode version introduces a category value — something Unicode’s stability policy rules out for subdivisions of existing values. The list was verified against PropertyValueAliases.txt from Unicode 18.0, current as of October 2026.

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-general-categories changelog for this dataset's history.

Related datasets

More Code datasets