Script Subtags (Hans vs Hant) — Distinguishing Writing Systems

How ISO 15924 script subtags work in BCP 47 language tags, with focus on Hans/Hant, Latn/Cyrl, and other script distinctions.

Standards

Detailed Explanation

Script Subtags in BCP 47

Script subtags identify the writing system used for a language. They are defined by ISO 15924 and are four letters long, with the first letter capitalized.

When Script Subtags Are Needed

Script subtags are necessary when:

  1. A language is written in multiple scripts (Chinese, Serbian, Azerbaijani)
  2. You need to distinguish content that differs only by script
  3. Font selection depends on the script

Common Script Subtags

Subtag Script Used For
Hans Simplified Chinese zh-Hans
Hant Traditional Chinese zh-Hant
Latn Latin sr-Latn (Serbian Latin)
Cyrl Cyrillic sr-Cyrl (Serbian Cyrillic)
Arab Arabic pa-Arab (Punjabi in Shahmukhi)
Guru Gurmukhi pa-Guru (Punjabi in Gurmukhi)
Deva Devanagari hi-Deva (Hindi)
Jpan Japanese (kanji + kana combined)
Kore Korean (Hangul + Hanja combined)

Chinese Script Distinction

The most common use of script subtags is distinguishing Simplified and Traditional Chinese:

zh-Hans    → Simplified Chinese (any region)
zh-Hant    → Traditional Chinese (any region)
zh-Hans-CN → Simplified Chinese, China
zh-Hant-TW → Traditional Chinese, Taiwan
zh-Hant-HK → Traditional Chinese, Hong Kong

Why not just use region? Because the script is the primary differentiator. Content for zh-TW and zh-HK both use Traditional Chinese, but they may have regional vocabulary differences. Using zh-Hant as the base ensures correct font and character selection.

Serbian: Two Scripts in Active Use

Serbian is unique in that both Cyrillic and Latin scripts are in daily use:

sr-Cyrl    → Serbian in Cyrillic (Српски)
sr-Latn    → Serbian in Latin (Srpski)
sr-Cyrl-RS → Serbian Cyrillic, Serbia
sr-Latn-RS → Serbian Latin, Serbia

Azerbaijani: Three Scripts

Azerbaijani has historically used Arabic, Cyrillic, and Latin scripts:

az-Latn → Azerbaijani in Latin (modern standard in Azerbaijan)
az-Cyrl → Azerbaijani in Cyrillic (used in Dagestan, Russia)
az-Arab → Azerbaijani in Arabic (used in Iran)

Suppress-Script

Some language-script combinations are so default that the script subtag is "suppressed" — meaning it should be omitted. For example, en-Latn is redundant because English is always written in Latin script. Use just en.

Use Case

Script subtags are critical when building applications for Chinese-speaking markets (Simplified vs Traditional), Serbian users (Cyrillic vs Latin), or any language that uses multiple writing systems. They affect font loading, text rendering, input methods, and content selection.

Try It — Language Code Reference

Open full tool