Language Code Reference
Browse, search, and copy ISO 639 language codes, BCP 47 tags, and locale identifiers.
About This Tool
The Language Code Reference is a free, browser-based interactive guide
to ISO 639 language codes and BCP 47 language tags. It covers over 120
languages with their two-letter ISO 639-1 codes, three-letter ISO 639-2
codes (both terminological and bibliographic forms), English and native
names, language families, writing directions, and common BCP 47 locale
combinations such as en-US, zh-Hans-CN, or ar-SA.
Language codes are essential for web development, internationalization
(i18n), and content localization. The lang attribute in HTML tells
browsers and screen readers which language the page is written in, and
the Accept-Language HTTP header enables content negotiation between
clients and servers. In JavaScript, the Intl API uses BCP 47 tags to
format dates, numbers, and currencies according to locale conventions.
This tool pairs well with the
Unicode Inspector for examining individual
characters in different scripts. If you are building multilingual
websites, the HTML Entity Reference helps you
handle special characters across languages, and the
Meta Tag Generator can help you set up
proper hreflang attributes for SEO.
Each language card displays the ISO 639-1 and ISO 639-2 codes,
language family, region, text direction, and the result of
Intl.DisplayNames for that code. Click any code or BCP 47 tag to
copy it to your clipboard. Expand a card to see ready-to-use HTML
snippets and all common locale variants. You can filter by language
family (Indo-European, Sino-Tibetan, Afro-Asiatic, etc.), region,
or text direction (LTR/RTL). All data is rendered entirely in your
browser — no network requests are made and no data leaves your machine.
How to Use
- Browse the language cards to see ISO 639-1 (2-letter) and ISO 639-2 (3-letter) codes for each language.
- Use the Search field to find a language by code, name, native name, family, or BCP 47 tag.
- Use the Family dropdown to filter by language family (Indo-European, Sino-Tibetan, etc.).
- Use the Region dropdown to filter by geographic region (Europe, Asia, Africa, etc.).
- Click LTR or RTL to filter by text direction.
- Click any code badge to copy the ISO 639-1 or ISO 639-2 code to your clipboard.
- Click the expand arrow on any card to view BCP 47 locale variants, Intl.DisplayNames output, and HTML usage snippets.
- Press Ctrl+Shift+C to copy all visible language codes as tab-separated text.
Popular Language Code Examples
FAQ
What is the difference between ISO 639-1 and ISO 639-2?
ISO 639-1 uses two-letter codes (e.g., 'en' for English, 'ja' for Japanese) and covers about 184 major languages. ISO 639-2 uses three-letter codes (e.g., 'eng', 'jpn') and covers about 500 languages, including many that do not have a two-letter code. ISO 639-2 has two variants: /T (terminological) and /B (bibliographic), which differ for about 20 languages.
What is a BCP 47 language tag?
BCP 47 (IETF Best Current Practice 47) is the standard format for language tags used on the web. It combines a primary language subtag (ISO 639) with optional subtags for script (e.g., 'Hans' for Simplified Chinese), region (e.g., 'US'), and variant. Examples include 'en-US', 'zh-Hans-CN', and 'sr-Latn-RS'.
Why do some languages have two ISO 639-2 codes?
About 20 languages have both a terminological (/T) and bibliographic (/B) ISO 639-2 code. For example, German has 'deu' (terminological) and 'ger' (bibliographic). The /T code is derived from the native name of the language, while the /B code is derived from the English name. Modern systems generally prefer the /T form.
How do I use language codes in HTML?
Set the 'lang' attribute on the <html> element to declare the page's primary language: <html lang="en">. For right-to-left languages, also add dir="rtl". You can also use 'lang' on individual elements to mark content in a different language within a page.
What is the Intl.DisplayNames API?
Intl.DisplayNames is a JavaScript API that returns localized display names for language codes, regions, scripts, and currencies. For example, new Intl.DisplayNames(['en'], { type: 'language' }).of('ja') returns 'Japanese'. It is supported in all modern browsers.
What are script subtags like Hans and Hant?
Script subtags identify the writing system used for a language. 'Hans' means Simplified Chinese characters and 'Hant' means Traditional Chinese characters. For example, 'zh-Hans' is Simplified Chinese and 'zh-Hant' is Traditional Chinese. Other common script subtags include 'Latn' (Latin), 'Cyrl' (Cyrillic), and 'Arab' (Arabic).
Is my data safe?
Yes. This tool is a static reference that runs entirely in your browser. No data is sent to any server, no network requests are made, and nothing is stored. You can verify this by checking the Network tab in your browser's developer tools.
Related Tools
Country Code Reference
Search 250+ ISO 3166-1 country codes with alpha-2, alpha-3, numeric, calling codes, TLDs, and flag emojis. Filter by region.
Currency Code Reference
Browse and search 150+ ISO 4217 currency codes with symbols, countries, decimal places, and Intl.NumberFormat formatting previews.
Timezone Reference
Browse all IANA timezones with live clocks, UTC offsets, DST status, and timezone comparison.
Unicode Inspector
Inspect Unicode characters with code point, UTF-8/UTF-16 encoding, character name, category, and block details.