The least efficient tokenizer produces ~1.8 times as many tokens as the most efficient one at the median.
Tokens per character vary by script and tokenizer. At the median tokenizer, a character of translation is 0.36 tokens in the Latin-script languages and 0.42 in the Cyrillic ones, ~0.5 in Chinese, Japanese and Korean, and 0.5 to 1.15 in the scripts of India, Sri Lanka and Southeast Asia. Against the English source on the same tokenizer, a character of translation is ~1.4 times as many tokens in the Latin-script languages, ~2 times in Chinese, Japanese and Korean, and ~5 times in Amharic.
Tokenizers differ least in the Latin script and most in the scripts with the most tokens per character. Within a language, the least efficient tokenizer produces ~1.7 times as many tokens as the most efficient one in the Latin-script languages, ~2 times in the Cyrillic ones, and ~5.5 times in Malayalam, Lao and Odia.
Relative tokenizer efficiency is similar across languages. The OpenAI models produce ~0.86 times the tokens of the median tokenizer of the language, and more than the median in at most 6 of the 100 languages. The Google models produce ~0.92 times. Mistral Large 3 and Medium 3.1 produce ~1.2 times, and Claude Sonnet 5, Fable 5 and Opus 4.8 ~1.4 times, more than the median in 98 to 99 of the 100 languages.
The tokenizer of Anthropic models changed with the model generation. Claude Haiku 4.5 and Sonnet 4.6 produce ~1.13 times the tokens of the median tokenizer, Claude Sonnet 5, Fable 5 and Opus 4.8 ~1.40 times, also in English (0.26 against 0.35 tokens per character).
Tokens per character of translated text, by language
| Language | Script | Median model | Most efficient tokenizer | Least efficient tokenizer | Least against most efficient | Against English | Models | ||
|---|---|---|---|---|---|---|---|---|---|
| Model | Tokens per character | Model | Tokens per character | ||||||
| Amharic | Ethiopic | 1.24 | Google Gemini 3.5 Flash | 0.49 | AI21 Jamba Large 1.7 | 2.3 | 4.7 | 5.4 | 24 |
| Odia (Oriya) | Odia | 1.15 | AI21 Jamba Large 1.7 | 0.39 | Mistral Large 3 | 2.11 | 5.4 | 3.9 | 24 |
| Lao | Lao | 1.06 | AI21 Jamba Large 1.7 | 0.35 | Mistral Large 3 | 1.92 | 5.5 | 4.5 | 25 |
| Kannada | Kannada | 0.92 | Google Gemini 3.5 Flash | 0.36 | AI21 Jamba Large 1.7 | 2.05 | 5.8 | 3.6 | 24 |
| Burmese | Myanmar | 0.87 | Google Gemma 4 | 0.37 | MiniMax M2.5 | 1.67 | 4.6 | 2.6 | 25 |
| Khmer | Khmer | 0.83 | Cohere Tiny Aya | 0.37 | Cohere Command A Translate | 1.52 | 4.1 | 2.9 | 25 |
| Malayalam | Malayalam | 0.83 | Google Gemini 3.1 Pro Preview | 0.32 | Mistral Large 3 | 1.77 | 5.5 | 2.8 | 24 |
| Sinhala | Sinhala | 0.81 | Google Gemini 3.5 Flash | 0.41 | Cohere Command A Translate | 1.42 | 3.4 | 3.1 | 24 |
| Punjabi | Gurmukhi | 0.77 | Cohere Tiny Aya | 0.41 | Mistral Medium 3.1 | 1.86 | 4.5 | 3.4 | 25 |
| Gujarati | Gujarati | 0.73 | OpenAI GPT-4.1 | 0.35 | Mistral Large 3 | 1.63 | 4.7 | 2.9 | 25 |
| Telugu | Telugu | 0.73 | Google Gemini 3.5 Flash | 0.35 | AI21 Jamba Large 1.7 | 1.62 | 4.6 | 2.8 | 25 |
| Assamese | Bengali | 0.66 | AI21 Jamba Large 1.7 | 0.35 | Cohere Command A Translate | 1.07 | 3 | 2.5 | 24 |
| Uyghur | Arabic | 0.64 | OpenAI GPT-4.1 | 0.44 | Mistral Large 3 | 0.9 | 2.1 | 2.4 | 23 |
| Georgian | Georgian | 0.63 | OpenAI GPT-5.5 | 0.32 | AI21 Jamba Large 1.7 | 1.52 | 4.8 | 2.4 | 24 |
| Yiddish | Hebrew | 0.62 | OpenAI GPT-5.6 Luna | 0.36 | z.ai GLM-5 | 0.93 | 2.6 | 2.3 | 23 |
| Bengali | Bengali | 0.59 | Google Gemini 3.5 Flash | 0.27 | AI21 Jamba Large 1.7 | 1.1 | 4.1 | 2.2 | 25 |
| Chinese Traditional | Han | 0.57 | Widn AI Tower Anthill | 0.41 | Mistral Medium 3.1 | 0.78 | 1.9 | 2.2 | 28 |
| Hindi | Devanagari | 0.56 | Google Gemma 4 | 0.28 | Mistral Large 3 | 0.89 | 3.2 | 1.9 | 28 |
| Japanese | Japanese | 0.55 | MiniMax M2.5 | 0.31 | Mistral Medium 3.1 | 0.81 | 2.6 | 2.2 | 28 |
| Nepali | Devanagari | 0.54 | Cohere Tiny Aya | 0.3 | Mistral Medium 3.1 | 0.89 | 3 | 2 | 25 |
| Armenian | Armenian | 0.53 | OpenAI GPT-5.6 Luna | 0.3 | MiniMax M2.5 | 1.15 | 3.8 | 2.1 | 24 |
| Marathi | Devanagari | 0.53 | Google Gemini 3.5 Flash | 0.29 | Mistral Large 3 | 0.89 | 3.1 | 2 | 25 |
| Yoruba | Latin | 0.52 | OpenAI GPT-5.5 | 0.43 | Anthropic Claude Fable 5 | 0.8 | 1.8 | 2.2 | 24 |
| Mongolian | Cyrillic | 0.51 | OpenAI GPT-5.5 | 0.35 | AI21 Jamba Large 1.7 | 0.86 | 2.4 | 1.9 | 23 |
| Tamil | Tamil | 0.5 | Google Gemini 3.5 Flash | 0.27 | AI21 Jamba Large 1.7 | 1.16 | 4.2 | 2.2 | 25 |
| Kazakh | Cyrillic | 0.49 | OpenAI GPT-5.6 Luna | 0.31 | AI21 Jamba Large 1.7 | 0.84 | 2.7 | 1.8 | 25 |
| Korean | Hangul | 0.49 | MiniMax M2.5 | 0.32 | Mistral Medium 3.1 | 0.83 | 2.6 | 2.1 | 28 |
| Chinese Simplified | Han | 0.49 | MiniMax M2.5 | 0.32 | Anthropic Claude Fable 5 | 0.75 | 2.4 | 2 | 28 |
| Pashto | Arabic | 0.48 | AI21 Jamba Large 1.7 | 0.32 | Mistral Large 3 | 0.9 | 2.8 | 1.9 | 23 |
| Thai | Thai | 0.48 | Cohere Tiny Aya | 0.3 | Mistral Medium 3.1 | 0.84 | 2.8 | 2 | 25 |
| Tatar | Cyrillic | 0.46 | OpenAI GPT-5.5 | 0.34 | Mistral Large 3 | 0.57 | 1.7 | 1.9 | 24 |
| Urdu | Arabic | 0.46 | Google Gemma 4 | 0.32 | Mistral Medium 3.1 | 0.85 | 2.6 | 1.9 | 25 |
| Kyrgyz | Cyrillic | 0.45 | OpenAI GPT-4.1 | 0.32 | AI21 Jamba Large 1.7 | 0.83 | 2.6 | 1.8 | 23 |
| Hebrew | Hebrew | 0.43 | Cohere Tiny Aya | 0.36 | Mistral Medium 3.1 | 0.83 | 2.3 | 1.8 | 25 |
| Igbo | Latin | 0.43 | OpenAI GPT-5.6 Terra | 0.32 | Anthropic Claude Fable 5 | 0.63 | 1.9 | 1.8 | 24 |
| Tajik | Cyrillic | 0.43 | OpenAI GPT-5.6 Luna | 0.33 | AI21 Jamba Large 1.7 | 0.72 | 2.2 | 1.7 | 24 |
| Azerbaijani | Latin | 0.42 | OpenAI GPT-5.5 | 0.31 | Anthropic Claude Opus 4.8 | 0.56 | 1.8 | 1.7 | 24 |
| Icelandic | Latin | 0.42 | OpenAI GPT-5.5 | 0.33 | Anthropic Claude Sonnet 5 | 0.51 | 1.6 | 1.6 | 27 |
| Belarusian | Cyrillic | 0.41 | AI21 Jamba Large 1.7 | 0.32 | Anthropic Claude Sonnet 5 | 0.53 | 1.6 | 1.6 | 24 |
| Kurdish (Kurmanji) | Latin | 0.4 | MiniMax M2.5 | 0.35 | Anthropic Claude Sonnet 5 | 0.55 | 1.6 | 1.6 | 23 |
| Latvian | Latin | 0.4 | Cohere Tiny Aya | 0.31 | Anthropic Claude Sonnet 5 | 0.53 | 1.7 | 1.5 | 25 |
| Wolof | Latin | 0.4 | xAI Grok 4.20 (reasoning) | 0.32 | Anthropic Claude Fable 5 | 0.56 | 1.8 | 1.6 | 24 |
| Irish | Latin | 0.39 | OpenAI GPT-5.6 Sol | 0.32 | Anthropic Claude Fable 5 | 0.52 | 1.6 | 1.5 | 25 |
| Turkmen | Latin | 0.39 | OpenAI GPT-5.6 Terra | 0.31 | Anthropic Claude Sonnet 5 | 0.56 | 1.8 | 1.6 | 23 |
| Welsh | Latin | 0.38 | OpenAI GPT-5.6 Luna | 0.33 | Anthropic Claude Sonnet 5 | 0.55 | 1.7 | 1.6 | 25 |
| Greek | Greek | 0.38 | Cohere Tiny Aya | 0.29 | Mistral Medium 3.1 | 0.86 | 2.9 | 1.6 | 25 |
| Farsi | Arabic | 0.38 | Cohere Tiny Aya | 0.31 | Mistral Medium 3.1 | 0.83 | 2.7 | 1.6 | 25 |
| Scottish Gaelic | Latin | 0.38 | MiniMax M2.5 | 0.32 | Anthropic Claude Fable 5 | 0.53 | 1.7 | 1.5 | 23 |
| Lithuanian | Latin | 0.38 | Cohere Tiny Aya | 0.31 | Anthropic Claude Fable 5 | 0.52 | 1.7 | 1.5 | 25 |
| Maltese | Latin | 0.38 | AI21 Jamba Large 1.7 | 0.31 | Anthropic Claude Sonnet 5 | 0.54 | 1.8 | 1.6 | 25 |
| Somali | Latin | 0.38 | OpenAI GPT-5.5 | 0.31 | Anthropic Claude Sonnet 5 | 0.55 | 1.8 | 1.5 | 23 |
| Albanian | Latin | 0.38 | OpenAI GPT-4.1 | 0.33 | Anthropic Claude Opus 4.8 | 0.51 | 1.5 | 1.5 | 24 |
| Arabic (MSA) | Arabic | 0.37 | MiniMax M2.5 | 0.26 | Mistral Medium 3.1 | 0.78 | 3 | 1.6 | 25 |
| Hungarian | Latin | 0.37 | Cohere Tiny Aya | 0.28 | Anthropic Claude Sonnet 5 | 0.48 | 1.7 | 1.4 | 28 |
| Macedonian | Cyrillic | 0.37 | OpenAI GPT-5.6 Sol | 0.33 | AI21 Jamba Large 1.7 | 0.56 | 1.7 | 1.5 | 24 |
| Kinyarwanda | Latin | 0.37 | OpenAI GPT-5.6 Luna | 0.31 | Anthropic Claude Sonnet 5 | 0.55 | 1.7 | 1.5 | 23 |
| Shona | Latin | 0.37 | OpenAI GPT-4.1 | 0.31 | Anthropic Claude Sonnet 5 | 0.53 | 1.7 | 1.5 | 24 |
| Ukrainian | Cyrillic | 0.37 | xAI Grok 4.20 (reasoning) | 0.3 | AI21 Jamba Large 1.7 | 0.61 | 2 | 1.4 | 28 |
| Uzbek | Latin | 0.37 | OpenAI GPT-5.6 Sol | 0.32 | Anthropic Claude Sonnet 4.6 | 0.63 | 2 | 1.5 | 24 |
| Xhosa | Latin | 0.37 | Cohere Tiny Aya | 0.31 | Anthropic Claude Opus 4.8 | 0.55 | 1.8 | 1.6 | 24 |
| Zulu | Latin | 0.37 | Cohere Tiny Aya | 0.31 | Anthropic Claude Opus 4.8 | 0.55 | 1.8 | 1.5 | 24 |
| Czech | Latin | 0.36 | Cohere Tiny Aya | 0.28 | Anthropic Claude Opus 4.8 | 0.47 | 1.7 | 1.5 | 28 |
| Estonian | Latin | 0.36 | Cohere Tiny Aya | 0.3 | Anthropic Claude Opus 4.8 | 0.5 | 1.7 | 1.4 | 25 |
| Finnish | Latin | 0.36 | Cohere Tiny Aya | 0.29 | Anthropic Claude Opus 4.8 | 0.52 | 1.8 | 1.5 | 28 |
| Hausa | Latin | 0.36 | OpenAI GPT-4.1 | 0.31 | Anthropic Claude Opus 4.8 | 0.53 | 1.7 | 1.5 | 24 |
| Croatian | Latin | 0.36 | Cohere Tiny Aya | 0.28 | Anthropic Claude Fable 5 | 0.47 | 1.7 | 1.3 | 25 |
| Haitian Creole | Latin | 0.36 | MiniMax M2.5 | 0.3 | Anthropic Claude Opus 4.8 | 0.53 | 1.7 | 1.5 | 24 |
| Serbian | Latin | 0.36 | OpenAI GPT-4.1 | 0.3 | Anthropic Claude Opus 4.8 | 0.48 | 1.6 | 1.4 | 25 |
| Sesotho | Latin | 0.36 | AI21 Jamba Large 1.7 | 0.3 | Anthropic Claude Fable 5 | 0.53 | 1.8 | 1.5 | 23 |
| Swahili | Latin | 0.36 | Cohere Tiny Aya | 0.29 | Anthropic Claude Opus 4.8 | 0.53 | 1.8 | 1.5 | 25 |
| Bosnian | Latin | 0.35 | Cohere Tiny Aya | 0.28 | Anthropic Claude Opus 4.8 | 0.47 | 1.7 | 1.3 | 25 |
| Malagasy | Latin | 0.35 | MiniMax M2.5 | 0.3 | Anthropic Claude Fable 5 | 0.51 | 1.7 | 1.5 | 24 |
| Slovak | Latin | 0.35 | Cohere Tiny Aya | 0.3 | Anthropic Claude Opus 4.8 | 0.49 | 1.7 | 1.4 | 25 |
| Slovenian | Latin | 0.35 | Cohere Tiny Aya | 0.29 | Anthropic Claude Opus 4.8 | 0.48 | 1.7 | 1.4 | 25 |
| Bulgarian | Cyrillic | 0.34 | MiniMax M2.5 | 0.31 | AI21 Jamba Large 1.7 | 0.55 | 1.8 | 1.4 | 25 |
| Basque | Latin | 0.34 | Cohere Tiny Aya | 0.3 | Anthropic Claude Fable 5 | 0.5 | 1.6 | 1.4 | 25 |
| Frisian | Latin | 0.33 | MiniMax M2.5 | 0.3 | Anthropic Claude Fable 5 | 0.49 | 1.6 | 1.4 | 23 |
| Sundanese | Latin | 0.33 | OpenAI GPT-4.1 | 0.28 | Anthropic Claude Fable 5 | 0.51 | 1.8 | 1.4 | 24 |
| Afrikaans | Latin | 0.32 | OpenAI GPT-5.6 Sol | 0.29 | Anthropic Claude Sonnet 5 | 0.47 | 1.6 | 1.3 | 24 |
| Cebuano | Latin | 0.32 | OpenAI GPT-4.1 | 0.28 | Anthropic Claude Opus 4.8 | 0.5 | 1.7 | 1.3 | 24 |
| Danish | Latin | 0.32 | Cohere Tiny Aya | 0.26 | Anthropic Claude Opus 4.8 | 0.45 | 1.7 | 1.3 | 28 |
| Javanese | Latin | 0.32 | Cohere Tiny Aya | 0.21 | Anthropic Claude Sonnet 5 | 0.5 | 2.4 | 1.4 | 25 |
| Norwegian | Latin | 0.32 | Cohere Tiny Aya | 0.26 | Anthropic Claude Opus 4.8 | 0.46 | 1.7 | 1.3 | 28 |
| Polish | Latin | 0.32 | xAI Grok 4.20 (reasoning) | 0.27 | Anthropic Claude Sonnet 5 | 0.48 | 1.8 | 1.4 | 28 |
| Romanian | Latin | 0.32 | xAI Grok 4.20 (reasoning) | 0.27 | Anthropic Claude Fable 5 | 0.44 | 1.6 | 1.2 | 28 |
| Swedish | Latin | 0.32 | Cohere Tiny Aya | 0.27 | Anthropic Claude Opus 4.8 | 0.44 | 1.6 | 1.2 | 28 |
| Tagalog | Latin | 0.32 | Cohere Tiny Aya | 0.26 | Anthropic Claude Sonnet 5 | 0.49 | 1.8 | 1.3 | 25 |
| Turkish | Latin | 0.31 | xAI Grok 4.20 (reasoning) | 0.27 | Anthropic Claude Fable 5 | 0.52 | 1.9 | 1.4 | 25 |
| Catalan | Latin | 0.3 | MiniMax M2.5 | 0.27 | Anthropic Claude Opus 4.8 | 0.42 | 1.5 | 1.2 | 25 |
| Dutch | Latin | 0.29 | OpenAI GPT-5.6 Luna | 0.24 | Anthropic Claude Fable 5 | 0.45 | 1.9 | 1.2 | 28 |
| Vietnamese | Latin | 0.29 | Cohere Tiny Aya | 0.27 | Mistral Medium 3.1 | 0.59 | 2.2 | 1.3 | 25 |
| German | Latin | 0.28 | OpenAI GPT-5.6 Luna | 0.24 | Anthropic Claude Opus 4.8 | 0.48 | 2 | 1.2 | 28 |
| Malay | Latin | 0.28 | Cohere Tiny Aya | 0.22 | Anthropic Claude Sonnet 5 | 0.48 | 2.2 | 1.2 | 25 |
| Russian | Cyrillic | 0.28 | OpenAI GPT-5.6 Luna | 0.26 | AI21 Jamba Large 1.7 | 0.54 | 2.1 | 1.2 | 26 |
| Galician | Latin | 0.27 | MiniMax M2.5 | 0.24 | Anthropic Claude Sonnet 5 | 0.42 | 1.7 | 1.1 | 25 |
| Indonesian | Latin | 0.27 | MiniMax M2.5 | 0.21 | Anthropic Claude Opus 4.8 | 0.48 | 2.3 | 1.2 | 25 |
| Italian | Latin | 0.27 | xAI Grok 4.20 (non-reasoning) | 0.24 | Anthropic Claude Fable 5 | 0.43 | 1.8 | 1.2 | 26 |
| Portuguese (European) | Latin | 0.27 | MiniMax M2.5 | 0.23 | Anthropic Claude Opus 4.8 | 0.42 | 1.8 | 1.1 | 28 |
| Spanish (European) | Latin | 0.26 | MiniMax M2.5 | 0.21 | Anthropic Claude Opus 4.8 | 0.42 | 1.9 | 1.1 | 28 |
| French | Latin | 0.26 | MiniMax M2.5 | 0.22 | Anthropic Claude Sonnet 5 | 0.4 | 1.8 | 1.1 | 28 |
Output tokens per character of the translation, counted with the tokenizer of each model (or its family tokenizer), translation without context. Against English: tokens per character in the language divided by tokens per character of the English source on the same tokenizer, median over the models.