ISO 15924 Script Codes
ISO 15924 defines a set of four-letter alphabetic codes and three-digit numeric codes for the names of writing systems (scripts). Maintained by the Unicode Consortium on behalf of ISO, it is widely used in IANA language tags, OpenType font tables, and Unicode character properties to identify the script a character or text belongs to.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/iso-15924.json
Or use as a typed import:
import { iso15924 } from "https://staticdata.dev/v1/iso-15924.ts"
Formats
- JSON 22.5 KB
/v1/iso-15924.json
min: 15.9 KB · /v1/iso-15924.min.json
- CSV 7.5 KB
/v1/iso-15924.csv
- TypeScript 22.7 KB
/v1/iso-15924.ts
export const iso15924
type ScriptCode = (typeof iso15924)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| code | string | Four-letter ISO 15924 script code | Latn |
| number | number | Three-digit numeric script code | 215 |
| name | string | English name of the script | Latin |
| alias? | string | null | Unicode property value alias (PVA), or null if none | Latin |
Preview
First 10 records.
| code | number | name | alias |
|---|---|---|---|
| Pcun | 15 | Proto-Cuneiform | |
| Pelm | 16 | Proto-Elamite | |
| Xsux | 20 | Cuneiform, Sumero-Akkadian | Cuneiform |
| Xpeo | 30 | Old Persian | Old_Persian |
| Ugar | 40 | Ugaritic | Ugaritic |
| Egyp | 50 | Egyptian hieroglyphs | Egyptian_Hieroglyphs |
| Egyh | 60 | Egyptian hieratic | |
| Egyd | 70 | Egyptian demotic | |
| Hluw | 80 | Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs) | Anatolian_Hieroglyphs |
| Nkdb | 85 | Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba) |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/iso-15924.json | jq '.[0]' import type { ScriptCode } from "https://staticdata.dev/v1/iso-15924.ts";
const res = await fetch("https://staticdata.dev/v1/iso-15924.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const iso15924: ScriptCode[] = await res.json();
console.log(iso15924[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/iso-15924.min.json") as r:
iso15924 = json.load(r)
print(iso15924[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/iso-15924.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/iso-15924.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
ISO 15924 is the international standard for codes representing the names of writing scripts. It assigns each script a unique four-letter alphabetic code (e.g. Latn for Latin, Arab for Arabic) and a three-digit numeric code (e.g. 215 for Latin). The registry is maintained by the Unicode Consortium as the Registration Authority on behalf of the International Organization for Standardization (ISO).
This dataset was sourced directly from the authoritative registry file published at https://www.unicode.org/iso15924/iso15924.txt. Each record includes the four-letter code, numeric identifier, English name, and the Unicode Property Value Alias (PVA) where one exists. The PVA is used in Unicode’s Script character property and in regular expression engines that support \p{Script=...} syntax.
As of October 2026 the dataset matches the registry exactly (most recent registry change: 2025-04-24). It contains 226 entries covering scripts ranging from ancient systems like Cuneiform and Egyptian Hieroglyphs to modern scripts still in active use. Entries with no defined Unicode PVA have alias: null. The data is sorted by numeric code.
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
iso-15924 changelog for this dataset's history.