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

  1. Browse the language cards to see ISO 639-1 (2-letter) and ISO 639-2 (3-letter) codes for each language.
  2. Use the Search field to find a language by code, name, native name, family, or BCP 47 tag.
  3. Use the Family dropdown to filter by language family (Indo-European, Sino-Tibetan, etc.).
  4. Use the Region dropdown to filter by geographic region (Europe, Asia, Africa, etc.).
  5. Click LTR or RTL to filter by text direction.
  6. Click any code badge to copy the ISO 639-1 or ISO 639-2 code to your clipboard.
  7. Click the expand arrow on any card to view BCP 47 locale variants, Intl.DisplayNames output, and HTML usage snippets.
  8. Press Ctrl+Shift+C to copy all visible language codes as tab-separated text.

Popular Language Code Examples

View all 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