Guides

NLLB-200 Language Codes: Search and Copy the 202 Model Tokens

By NLLB Editorial Team Published

NLLB uses language-and-script codes such as eng_Latn, not short labels such as en. Use the full code for the source language and the intended target. The distinction matters especially when a language has more than one writing system.

The searchable reference below contains 202 language-and-script entries from the Hugging Face NLLB tokenizer implementation. Language names are matched to Meta’s FLORES reference, with the script identified where needed. The model is called NLLB-200; the number of code entries also reflects script variants.

Find and copy a language code

Search by language name, the whole code or a script suffix such as Latn. The complete table remains available if JavaScript is disabled.

202 language-and-script codes. Type to filter the table.

LanguageNLLB codeCopy
Acehnese (Arabic script)ace_Arab
Acehnese (Latin script)ace_Latn
Mesopotamian Arabicacm_Arab
Ta’izzi-Adeni Arabicacq_Arab
Tunisian Arabicaeb_Arab
Afrikaansafr_Latn
South Levantine Arabicajp_Arab
Akanaka_Latn
Tosk Albanianals_Latn
Amharicamh_Ethi
North Levantine Arabicapc_Arab
Modern Standard Arabicarb_Arab
Najdi Arabicars_Arab
Moroccan Arabicary_Arab
Egyptian Arabicarz_Arab
Assameseasm_Beng
Asturianast_Latn
Awadhiawa_Deva
Central Aymaraayr_Latn
South Azerbaijaniazb_Arab
North Azerbaijaniazj_Latn
Bashkirbak_Cyrl
Bambarabam_Latn
Balineseban_Latn
Belarusianbel_Cyrl
Bembabem_Latn
Bengaliben_Beng
Bhojpuribho_Deva
Banjar (Arabic script)bjn_Arab
Banjar (Latin script)bjn_Latn
Standard Tibetanbod_Tibt
Bosnianbos_Latn
Buginesebug_Latn
Bulgarianbul_Cyrl
Catalancat_Latn
Cebuanoceb_Latn
Czechces_Latn
Chokwecjk_Latn
Central Kurdishckb_Arab
Crimean Tatarcrh_Latn
Welshcym_Latn
Danishdan_Latn
Germandeu_Latn
Southwestern Dinkadik_Latn
Dyuladyu_Latn
Dzongkhadzo_Tibt
Greekell_Grek
Englisheng_Latn
Esperantoepo_Latn
Estonianest_Latn
Basqueeus_Latn
Eweewe_Latn
Faroesefao_Latn
Fijianfij_Latn
Finnishfin_Latn
Fonfon_Latn
Frenchfra_Latn
Friulianfur_Latn
Nigerian Fulfuldefuv_Latn
West Central Oromogaz_Latn
Scottish Gaelicgla_Latn
Irishgle_Latn
Galicianglg_Latn
Guaranigrn_Latn
Gujaratiguj_Gujr
Haitian Creolehat_Latn
Hausahau_Latn
Hebrewheb_Hebr
Hindihin_Deva
Chhattisgarhihne_Deva
Croatianhrv_Latn
Hungarianhun_Latn
Armenianhye_Armn
Igboibo_Latn
Ilocanoilo_Latn
Indonesianind_Latn
Icelandicisl_Latn
Italianita_Latn
Javanesejav_Latn
Japanesejpn_Jpan
Kabylekab_Latn
Jingphokac_Latn
Kambakam_Latn
Kannadakan_Knda
Kashmiri (Arabic script)kas_Arab
Kashmiri (Devanagari script)kas_Deva
Georgiankat_Geor
Kazakhkaz_Cyrl
Kabiyèkbp_Latn
Kabuverdianukea_Latn
Halh Mongoliankhk_Cyrl
Khmerkhm_Khmr
Kikuyukik_Latn
Kinyarwandakin_Latn
Kyrgyzkir_Cyrl
Kimbundukmb_Latn
Northern Kurdishkmr_Latn
Central Kanuri (Arabic script)knc_Arab
Central Kanuri (Latin script)knc_Latn
Kikongokon_Latn
Koreankor_Hang
Laolao_Laoo
Ligurianlij_Latn
Limburgishlim_Latn
Lingalalin_Latn
Lithuanianlit_Latn
Lombardlmo_Latn
Latgalianltg_Latn
Luxembourgishltz_Latn
Luba-Kasailua_Latn
Gandalug_Latn
Luoluo_Latn
Mizolus_Latn
Standard Latvianlvs_Latn
Magahimag_Deva
Maithilimai_Deva
Malayalammal_Mlym
Marathimar_Deva
Minangkabau (Latin script)min_Latn
Macedonianmkd_Cyrl
Maltesemlt_Latn
Meitei (Bengali script)mni_Beng
Mossimos_Latn
Maorimri_Latn
Burmesemya_Mymr
Dutchnld_Latn
Norwegian Nynorsknno_Latn
Norwegian Bokmålnob_Latn
Nepalinpi_Deva
Northern Sothonso_Latn
Nuernus_Latn
Nyanjanya_Latn
Occitanoci_Latn
Odiaory_Orya
Pangasinanpag_Latn
Eastern Panjabipan_Guru
Papiamentopap_Latn
Southern Pashtopbt_Arab
Western Persianpes_Arab
Plateau Malagasyplt_Latn
Polishpol_Latn
Portuguesepor_Latn
Dariprs_Arab
Ayacucho Quechuaquy_Latn
Romanianron_Latn
Rundirun_Latn
Russianrus_Cyrl
Sangosag_Latn
Sanskritsan_Deva
Santali (Bengali script)sat_Beng
Sicilianscn_Latn
Shanshn_Mymr
Sinhalasin_Sinh
Slovakslk_Latn
Slovenianslv_Latn
Samoansmo_Latn
Shonasna_Latn
Sindhisnd_Arab
Somalisom_Latn
Southern Sothosot_Latn
Spanishspa_Latn
Sardiniansrd_Latn
Serbiansrp_Cyrl
Swatissw_Latn
Sundanesesun_Latn
Swedishswe_Latn
Swahiliswh_Latn
Silesianszl_Latn
Tamiltam_Taml
Tamasheq (Latin script)taq_Latn
Tamasheq (Tifinagh script)taq_Tfng
Tatartat_Cyrl
Telugutel_Telu
Tajiktgk_Cyrl
Tagalogtgl_Latn
Thaitha_Thai
Tigrinyatir_Ethi
Tok Pisintpi_Latn
Tswanatsn_Latn
Tsongatso_Latn
Turkmentuk_Latn
Tumbukatum_Latn
Turkishtur_Latn
Twitwi_Latn
Central Atlas Tamazighttzm_Tfng
Uyghuruig_Arab
Ukrainianukr_Cyrl
Umbunduumb_Latn
Urduurd_Arab
Northern Uzbekuzn_Latn
Venetianvec_Latn
Vietnamesevie_Latn
Waraywar_Latn
Wolofwol_Latn
Xhosaxho_Latn
Eastern Yiddishydd_Hebr
Yorubayor_Latn
Yue Chineseyue_Hant
Chinese (Simplified)zho_Hans
Chinese (Traditional)zho_Hant
Standard Malayzsm_Latn
Zuluzul_Latn

Common codes at a glance

Language or written formCode
Englisheng_Latn
Frenchfra_Latn
Germandeu_Latn
Spanishspa_Latn
Portuguesepor_Latn
Modern Standard Arabicarb_Arab
Hindihin_Deva
Japanesejpn_Jpan
Koreankor_Hang
Simplified Chinesezho_Hans
Traditional Chinesezho_Hant
Cantonese in traditional charactersyue_Hant

Copy the code exactly, including the underscore and capitalization. A country code such as US or a locale such as en-US belongs to a different naming system and is not an interchangeable NLLB token.

Read the language and script separately

The first part identifies the language; the second identifies the script. For example, eng_Latn combines English with Latin script. In zho_Hans and zho_Hant, the language portion is shared while the script portion differs.

Choose the code that matches the text you actually have. If your source is written in traditional Chinese characters, record that explicitly in your workflow. For the target, decide which written form your reader needs before generating a translation.

Some languages have multiple entries. The table includes Acehnese in Arabic and Latin scripts, Kashmiri in Arabic and Devanagari scripts, and Tamasheq in Latin and Tifinagh scripts. Searching the language name shows those choices together so you do not accidentally select the first unfamiliar token in a long list.

Use the code with a tokenizer

The Transformers NLLB documentation shows how to set the source language and choose the target language during generation. This small example focuses on checking the tokenizer configuration:

from transformers import AutoTokenizer

model_id = "facebook/nllb-200-distilled-600M"
source_code = "eng_Latn"
target_code = "zho_Hans"

tokenizer = AutoTokenizer.from_pretrained(model_id, src_lang=source_code)
target_id = tokenizer.convert_tokens_to_ids(target_code)
assert target_id != tokenizer.unk_token_id, "Unknown target language code"

For generation, the documented workflow passes the target language token ID as forced_bos_token_id to the model’s generate call. Keep the source code, target code and model identifier together in your configuration so a later change is easy to audit.

If you are setting up the surrounding environment, our local NLLB setup guide covers that next step. Check the current library documentation when adapting a code example to your installed version.

Four mistakes to check before debugging the model

A short locale was supplied. Replace values such as en, zh-CN or ja with the matching NLLB code from the table. Keep your application’s locale-to-model-code mapping explicit.

The source language was left at a default. Set the language of the actual input when constructing or configuring the tokenizer. A target-language choice does not also describe the source text.

The right language has the wrong script. Compare the suffix with the writing system required for your output. Keep both Chinese written forms visible in your configuration rather than hiding them under a single ambiguous “Chinese” option.

A code came from a different list. FLORES is a related evaluation resource, while the tokenizer defines the code tokens used by this model implementation. This lookup uses the tokenizer’s entries and joins the descriptive names from FLORES. If you use a different model or tokenizer, inspect that implementation’s own supported tokens.

A small validation checklist for your project

  1. Save the model identifier and library version with your experiment.
  2. Confirm the source and target codes are present in the tokenizer you loaded.
  3. Start with a short sentence whose language is known.
  4. Check the output script and have a competent reader review meaning.
  5. Keep representative examples from your own use case for later comparisons.

Successful token lookup is the configuration check. Translation quality still needs evaluation on your actual material, particularly for names, numbers and domain-specific language. Record those checks alongside the code mapping so a passing setup check is not mistaken for a completed quality review.

Model use and license

Meta’s 600M model card identifies NLLB-200 as a research model under CC BY-NC 4.0. It describes sentence translation as the intended use and lists limitations for production deployment, specialized medical or legal text and document translation. Review those terms before choosing it for an application.

This page is a code reference: filtering and copying a language token does not run a translation model. Use the model card and your own evaluation to decide whether the underlying model fits your project.

Sources