What Indian languages cost on eight AI tokenizers
We sent the same 1,012 sentences, in fourteen Indian languages and English, through eight tokenizers. Saying the same thing in Odia costs anywhere from 3.4 to 12.4 times as many tokens as English, depending on which model you use.
| Geminivia API | GPT o200kopen | Gemma 2open | Claudevia API | Qwen 2.5open | Llama 3open | Mistralopen | GPT cl100kopen | |
|---|---|---|---|---|---|---|---|---|
| Odia | 3.42 | 4.99 | 4.99 | 5.00 | 9.70 | 12.16 | 11.97 | 12.40 |
| PunjabiGurmukhi | 2.63 | 2.62 | 3.23 | 6.35 | 7.28 | 7.81 | 10.40 | 7.85 |
| Malayalam | 1.82 | 1.96 | 3.24 | 3.97 | 7.23 | 8.94 | 10.82 | 8.94 |
| Kannada | 1.89 | 1.97 | 3.31 | 5.70 | 6.92 | 8.86 | 6.27 | 8.86 |
| Sinhala | 2.24 | 2.69 | 4.08 | 2.98 | 6.88 | 8.63 | 7.40 | 8.68 |
| Telugu | 1.75 | 1.93 | 2.87 | 2.79 | 6.99 | 8.29 | 7.18 | 8.29 |
| Gujarati | 1.83 | 1.79 | 3.02 | 2.73 | 6.74 | 7.67 | 8.63 | 7.66 |
| Tamil | 1.45 | 1.98 | 2.60 | 3.02 | 6.11 | 7.65 | 5.84 | 7.64 |
| AssameseBengali | 1.97 | 1.99 | 3.23 | 3.18 | 5.39 | 6.11 | 5.68 | 6.15 |
| Bengali | 1.20 | 1.70 | 2.69 | 2.67 | 5.03 | 5.76 | 4.90 | 5.80 |
| MarathiDevanagari | 1.38 | 1.81 | 2.26 | 2.38 | 4.62 | 2.80 | 4.66 | 5.05 |
| NepaliDevanagari | 1.51 | 1.61 | 2.13 | 2.36 | 4.42 | 2.58 | 4.44 | 4.76 |
| HindiDevanagari | 1.30 | 1.57 | 1.86 | 2.16 | 4.42 | 2.52 | 4.55 | 4.76 |
| UrduArabic | 1.50 | 1.65 | 1.93 | 2.36 | 3.15 | 3.07 | 4.30 | 4.34 |
| Average14 languages | 1.85 | 2.16 | 2.96 | 3.40 | 6.06 | 6.63 | 6.93 | 7.23 |
What we found
Gemini is the cheapest tokenizer for Indian languages
Across all fourteen languages, Gemini averages 1.85× English, the lowest of the eight. It's also the only tokenizer that makes real headway on Odia, at 3.42× against 4.99× for the next best.
The newest OpenAI tokenizer cut the premium by more than two-thirds
OpenAI's older cl100k tokenizer charges an average of 7.23× English for these languages. Its successor, o200k, charges 2.16×. Tamil fell from 7.64× to 1.98×; Malayalam from 8.94× to 1.96×. This is the largest single improvement in the table.
Claude sits in the middle, and its coverage varies by script
Claude averages 3.40×. On Hindi, Marathi, Nepali and Urdu it's competitive, around 2.2–2.4×. On Punjabi (6.35×) and Kannada (5.70×) it's roughly three times o200k's premium for the same text. No other modern tokenizer in the set swings this much between scripts.
A bigger vocabulary alone doesn't fix it
Gemma 2 has a larger vocabulary than o200k, 256,000 tokens against roughly 200,000, yet o200k is cheaper on thirteen of fourteen languages and ties on the fourteenth. What a vocabulary is spent on matters more than its size. Recent research on how tokenizers are built reaches a related conclusion: compressing text into fewer tokens doesn’t on its own mean every language is represented well (Ali et al., 2026).
Llama 3 improved Devanagari and almost nothing else
On Malayalam, Kannada and Telugu, Llama 3's numbers match cl100k to two decimal places. On Hindi, Marathi and Nepali, all written in Devanagari, they drop by roughly half. That's consistent with Meta's description of the Llama 3 tokenizer as tiktoken's 100,000-token vocabulary plus 28,000 tokens added for other languages: in this data, those additions reached Devanagari and no other Indian script.
Cost follows the writing system
Hindi, Marathi and Nepali cluster together on every tokenizer, and so do Bengali and Assamese, which share a script. Two languages written the same way cost about the same, even when they're unrelated.
Premiums hide a second gap
A premium compares each language with English on the same tokenizer. It says nothing about how many tokens a provider spends on English to begin with, and those baselines differ a lot.
For the English sentences alone, Claude counted 42,927 tokens and Gemini counted 28,125, about 1.5 times as many. A spot check on an English news paragraph agreed: 128 tokens on OpenAI's tokenizer, 133 on Gemini's, 231 on Claude's. When the Indic premium lands on top of that heavier baseline, the gap in absolute tokens grows. Anthropic’s own pricing documentation notes that its newer models use a tokenizer that produces about 30% more tokens for the same text than earlier Claude models.
| Language | Gemini tokens | Claude tokens | Claude ÷ Gemini |
|---|---|---|---|
| English | 28,125 | 42,927 | 1.5× |
| Kannada | 53,191 | 244,744 | 4.6× |
| Punjabi | 74,056 | 272,424 | 3.7× |
| Bengali | 33,847 | 114,778 | 3.4× |
| Malayalam | 51,124 | 170,329 | 3.3× |
| Tamil | 40,841 | 129,624 | 3.2× |
| Marathi | 38,846 | 102,392 | 2.6× |
| Hindi | 36,532 | 92,725 | 2.5× |
| Assamese | 55,382 | 136,621 | 2.5× |
| Telugu | 49,159 | 119,639 | 2.4× |
| Urdu | 42,174 | 101,393 | 2.4× |
| Nepali | 42,460 | 101,457 | 2.4× |
| Gujarati | 51,454 | 117,265 | 2.3× |
| Odia | 96,210 | 214,687 | 2.2× |
| Sinhala | 63,077 | 128,001 | 2.0× |
Total tokens to encode the full 1,012-sentence test set in each language.
If you're building in an Indian language
- Treat the tokenizer as a pricing decision. For identical text, the models at the expensive end of this table bill three or more times what the cheapest ones do. For languages with little training data it may be a quality decision too: in a controlled study of small research models, the quality of Tamil and Bengali varied more across tokenizers than that of better-resourced languages (Meister et al., 2026). Test a few models on your own text before choosing.
- Measure your own text. These figures come from formal, news-style writing. Conversational text and code-mixed text like Hinglish behave differently. Paste a real sample into the calculator and get exact counts from Claude and Gemini before you commit.
- Remember the reply is inflated too. The same tokenizer encodes the model's answer, and output is usually priced three to five times higher than input. If your users read responses in Tamil, the premium applies to the expensive half of the bill as well.
- Keep fixed instructions in English where quality allows. A system prompt sent on every request costs less in English. User-facing text should stay in the user's language.
- Cache long prompts you repeat. Prompt caching discounts repeated input heavily, which offsets more of the premium the longer your fixed prompt is.
Method
The corpus is the devtest split of FLORES+: 1,012 sentences professionally translated into each language and aligned line by line, so every language expresses identical content. For each tokenizer we counted the tokens needed for the whole set in each language and divided by the count for English. Holding the content fixed means any difference comes from the tokenizer, not the text.
Open tokenizers were run locally. Claude and Gemini publish no tokenizer, so we measured them through each provider's free token-counting endpoint, sending each language as a single request and subtracting the fixed per-request overhead. As a check, our figure for Odia on cl100k, 12.40×, matches the more than twelvefold premium Petrov et al. reported for the same tokenizer in 2023.
We report premiums rather than tokens per word, because counting words by splitting on spaces is unreliable for scripts that don't separate words that way.
| Tokenizer | How measured | Exact source |
|---|---|---|
| Gemini | Provider counting API | gemini-3.6-flash (countTokens) |
| GPT o200k | Open tokenizer, run locally | tiktoken o200k_base |
| Gemma 2 | Open tokenizer, run locally | mlx-community/gemma-2-2b |
| Claude | Provider counting API | claude-sonnet-5 (count_tokens) |
| Qwen 2.5 | Open tokenizer, run locally | Qwen/Qwen2.5-0.5B |
| Llama 3 | Open tokenizer, run locally | Xenova/llama3-tokenizer |
| Mistral | Open tokenizer, run locally | Xenova/mistral-tokenizer-v1 |
| GPT cl100k | Open tokenizer, run locally | tiktoken cl100k_base |
Limitations
- Claude and Gemini were each measured on one model,
claude-sonnet-5andgemini-3.6-flash, in October 2026. Other models from the same provider may use different tokenizers, and tokenizers change between generations. - Gemma 2, Llama 3 and Mistral were measured with community copies of their tokenizers, which may differ slightly from the originals.
- FLORES+ is formal, news-domain text. Everyday writing, transliterated text and code-mixed text may give different premiums.
- We measured input tokens only. Output pricing and quality, which matter as much in practice, are outside this study.
Related work
The premium on open tokenizers has been measured before, and our results for those tokenizers largely confirm earlier findings. What this page adds is the commercial tokenizers, Claude and Gemini, measured on Indian languages, and the comparison of absolute token counts between providers.
- Petrov et al. (2023). Language Model Tokenizers Introduce Unfairness Between Languages.
- BrahmicTokenizer-131K: An Indic-Capable Drop-In Replacement for o200k_base (2026). Evaluates thirteen open tokenizers across twenty-two Indian languages and proposes a replacement.
- The African Language Tax (2026).
- Meister, Altıntaş and Bosselut (2026). Language-Specific Effects of Tokenizer Choice in Multilingual Language Models. Preprint. Trains 123 small models that differ only in their tokenizer, using the same FLORES+ sentences as this study, and measures quality rather than cost. Languages with less training data, including Tamil and Bengali, were the most sensitive to tokenizer choice, and giving those languages a larger share of the tokenizer’s training data did not reliably help them.
- Ali et al. (2026). Latent Core Tokenizer: Compress, but Meaningfully. Under review. A method for building tokenizers from the structure of words, tested on 104 languages. It reports fewer tokens per word and better results on multilingual benchmarks, while the cost gap between languages stays comparable to standard methods.
- The Invisible Language Tax: Token Premiums of French and Regional Languages in 2026 LLM Tokenizers (2026). Measures Claude's tokenizer through its counting API, for French.
Data
language-tax-premiums.csv has every premium in the table, plus total token counts for Claude and Gemini. It's released under CC BY-SA 4.0, matching the corpus it was measured on. The FLORES+ sentences themselves aren't included: the dataset's terms ask that they not be re-hosted where web crawlers can reach them.
Every number on this page came from counting real text. You can do the same with yours, across every major model, with exact counts from Claude and Gemini.
Measure your own prompt