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.

Each cell is the token premium: how many times more tokens the language needs than English for identical content. Columns are ordered from cheapest to most expensive on average.
Geminivia APIGPT o200kopenGemma 2openClaudevia APIQwen 2.5openLlama 3openMistralopenGPT cl100kopen
Odia3.424.994.995.009.7012.1611.9712.40
PunjabiGurmukhi2.632.623.236.357.287.8110.407.85
Malayalam1.821.963.243.977.238.9410.828.94
Kannada1.891.973.315.706.928.866.278.86
Sinhala2.242.694.082.986.888.637.408.68
Telugu1.751.932.872.796.998.297.188.29
Gujarati1.831.793.022.736.747.678.637.66
Tamil1.451.982.603.026.117.655.847.64
AssameseBengali1.971.993.233.185.396.115.686.15
Bengali1.201.702.692.675.035.764.905.80
MarathiDevanagari1.381.812.262.384.622.804.665.05
NepaliDevanagari1.511.612.132.364.422.584.444.76
HindiDevanagari1.301.571.862.164.422.524.554.76
UrduArabic1.501.651.932.363.153.074.304.34
Average14 languages1.852.162.963.406.066.636.937.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.

LanguageGemini tokensClaude tokensClaude ÷ Gemini
English28,12542,9271.5×
Kannada53,191244,7444.6×
Punjabi74,056272,4243.7×
Bengali33,847114,7783.4×
Malayalam51,124170,3293.3×
Tamil40,841129,6243.2×
Marathi38,846102,3922.6×
Hindi36,53292,7252.5×
Assamese55,382136,6212.5×
Telugu49,159119,6392.4×
Urdu42,174101,3932.4×
Nepali42,460101,4572.4×
Gujarati51,454117,2652.3×
Odia96,210214,6872.2×
Sinhala63,077128,0012.0×

Total tokens to encode the full 1,012-sentence test set in each language.

Per-token prices can't be compared across providers on their own. Two models listing the same price per million tokens can differ in real cost by whatever their tokenizers differ by, and for Kannada that difference is more than fourfold.

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.

TokenizerHow measuredExact source
GeminiProvider counting APIgemini-3.6-flash (countTokens)
GPT o200kOpen tokenizer, run locallytiktoken o200k_base
Gemma 2Open tokenizer, run locallymlx-community/gemma-2-2b
ClaudeProvider counting APIclaude-sonnet-5 (count_tokens)
Qwen 2.5Open tokenizer, run locallyQwen/Qwen2.5-0.5B
Llama 3Open tokenizer, run locallyXenova/llama3-tokenizer
MistralOpen tokenizer, run locallyXenova/mistral-tokenizer-v1
GPT cl100kOpen tokenizer, run locallytiktoken cl100k_base

Limitations

  • Claude and Gemini were each measured on one model, claude-sonnet-5 and gemini-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.

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