The Multilingual Token Tax

GPT-4o's tokenizer turns an average English word into 1.16 tokens. The same word in Arabic takes 1.97, Russian 1.96, Hindi 1.89. Same prompt, same quality bar, a 60-70% higher bill before a single output token gets produced. The premium used to fall hardest on Chinese, Japanese, and Korean; bigger vocabularies mostly fixed that. It did not fix Hindi, Arabic, Russian, or Indonesian, and benchmarks show the models answer measurably worse in those languages too. Here is the actual size of the tax, why the cheapest-model ranking flips per language, and what a language-aware router does about it.

Published 2026-07-17 by Dor Amir on the Nadir blog.

Filed under Pricing & Models.

One prompt, priced differently depending on what language it's typed in

Every cost-optimization post on this blog, routing, compression, caching, starts from one assumption: the request is in English. That assumption is invisible right up until it isn't. Tokenizers are trained overwhelmingly on English text, and the vocabulary they learn compresses English into fewer tokens than it compresses almost anything else. The result is a tax nobody bills you for by name: the same question, asked with the same intent and answered to the same quality bar, costs more tokens, and therefore more money, depending on which language it was written in.

An analysis of OpenAI's o200k_base tokenizer, the one shipping in GPT-4o, measured this directly across the 50,000 most frequent words in 12 languages. English needs 1.16 tokens per word on average. Arabic needs 1.97, a 70% premium, before the model has generated a single output token. Source: Kathane, "Not Speaking English to ChatGPT Costs You Millions of Tokens," Nov 2025.

The premium, by language

LanguageTokens per wordPremium vs. EnglishCost per 1M words @ $2.50/M tokens
English1.16—$2.90
Chinese1.32+14%$3.30
French1.52+31%$3.80
German1.52+31%$3.80
Spanish1.56+34%$3.90
Indonesian1.84+58%$4.60
Hindi1.89+63%$4.73
Russian1.96+69%$4.90
Arabic1.97+70%$4.93

Source: Kathane, "Not Speaking English to ChatGPT Costs You Millions of Tokens," Nov 2025.

The same request priced by tokenizer fertility: tokens needed per word on GPT-4o's o200k_base tokenizer, from 1.16 for English up to 1.97 for Arabic
The same request priced by tokenizer fertility: tokens needed per word on GPT-4o's o200k_base tokenizer, from 1.16 for English up to 1.97 for Arabic

Run that per-word rate at the volume a real product sees and it stops looking like rounding error. A company processing 100 million words a month pays about $290,000 a year in English tokens and about $473,000 a year for the same content in Hindi, a $183,000 annual surcharge for serving one market instead of another, with identical prompts and identical model quality. Scaled down, the same math is why the substack piece above lands on a clean, quotable framing: for every dollar an English speaker spends on the same request, a Hindi speaker's equivalent costs about $1.63.

It used to be CJK. Now it's Indic, Cyrillic, and Arabic scripts

The popular version of this story is a few years stale. Chinese, Japanese, and Korean used to carry the worst penalty of all, running close to one token per character on older byte-pair tokenizers, roughly 4x worse than English on the same text. Bigger vocabularies fixed most of that: OpenAI's 200k-token o200k_base and Gemini's 256k-token SentencePiece vocabulary both allocate enough dedicated tokens to CJK scripts that Chinese now sits at a 14% premium, closer to French than to Arabic.

That fix does not generalize. Hindi, Arabic, Russian, and Indonesian remain 58-70% more expensive per word on the newest tokenizers, because the problem for those languages isn't script coverage, it's morphology. A vocabulary can learn "the" as one token because English inflects almost nothing. It cannot as easily learn every case-marked, prefixed, or agglutinated form a Hindi or Arabic word can take, so those words keep fragmenting into two, three, or four pieces regardless of how large the vocabulary gets. A November 2024 evaluation across the 22 official Indian languages confirms the tokenizers are improving, GPT-4 scored zero best-fertility placements across those languages; GPT-4o scored 5, a real jump, but the paper's own framing is that the improvement narrows a gap, it does not close it. Source: Tamang & Bora, "Evaluating Tokenizer Performance of Large Language Models Across Official Indian Languages," Nov 2024.

The historical trend line backs that up. Hindi tokenization on OpenAI's own tokenizers ran at roughly 6.55 tokens per word in 2021 and sits at 1.89 today, a 71% reduction over three years. Source: Kathane, "Not Speaking English to ChatGPT Costs You Millions of Tokens," Nov 2025. That's real progress, and it means this post will read differently in another three years. It is also still a 63% premium today, which is the number that hits this quarter's invoice.

The tax shrinks your context window too

A token budget is a token budget whether it's priced per request or fixed as a context window. The same fertility gap that inflates the bill also eats the window. A 128,000-token context holds roughly 110,000 words of English. The same window holds only about 68,000 words of Hindi, 38% less usable context for an identical price and an identical window size. Source: Kathane, "Not Speaking English to ChatGPT Costs You Millions of Tokens," Nov 2025.

Same 128K-token context window: about 110,000 words of usable English versus about 68,000 words of usable Hindi before the window fills
Same 128K-token context window: about 110,000 words of usable English versus about 68,000 words of usable Hindi before the window fills

Every RAG pipeline, agent scaffold, or long-document workflow built and load-tested in English inherits an assumption about how much content fits, and that assumption is wrong by more than a third the moment the content is Hindi, Arabic, or Russian. A retrieval system tuned to pull "8 chunks" of context was tuned against English chunk sizes; the same 8 chunks in a high-fertility language can blow the same window that comfortably held them in English, exactly the failure mode covered in why over-retrieval quietly taxes your RAG bill, now compounded by language.

The quality gap doesn't go the other way either

The tax would sting less if the extra tokens at least bought better answers. They don't. MMLU-ProX, a 2025 reasoning benchmark spanning 13 typologically diverse languages, evaluated 36 frontier and mid-size models and found accuracy dropping sharply from high-resource to low-resource languages, models clearing roughly 70%+ on English versions of a reasoning question landing closer to 40% on the Swahili version of the identical question. Source: Xuan et al., "MMLU-ProX: A Multilingual Benchmark for Advanced Large Language Model Evaluation," arXiv:2503.10497, 2025. Paying 60-70% more tokens for a worse answer is the actual shape of the problem: the tax and the quality gap track the same axis, how much of a language's data the model actually trained on, and they compound rather than cancel.

The part that changes how you route: "cheapest" is not one ranking

Here's the mechanic most cost dashboards miss entirely. A router's cost ranking, which model is cheapest for a given quality bar, is built by measuring English tokens. That ranking is not portable to other languages, because tokenizer fertility does not move in lockstep across models. The same November 2024 study that measured the Indian-language gap also measured which tokenizer was most efficient per language, and no single model won:

TokenizerBest-fertility placements (of 22 Indian languages)
SUTRA14
MBZUAI Nanda6
GPT-4o5
Project Indus4
OpenHathi / MahaMarathi2 each
Indic Gemma / Microsoft Phi / Airavata1 each

Source: Tamang & Bora, "Evaluating Tokenizer Performance of Large Language Models Across Official Indian Languages," Nov 2024.

SUTRA wins on fertility in 14 of 22 languages and would lose badly on an English-only cost comparison against a frontier model. GPT-4o wins on exactly 5. A router that picks "the cheapest model" once, globally, and applies that pick to every request regardless of language is optimizing for a ranking that only holds for the slice of traffic written in English, the same blind spot covered from the caching side in why a router that ignores prompt-cache state fights its own cost model: the router is confident, and confidently wrong, because it's missing one input.

What a language-aware router actually needs to check

Nadir's /v1/recommend takes an optional detected_language hint the same way it takes cache_state: the cost side of the recommendation is priced against that language's own tokenizer fertility instead of an English-token assumption, so a model that looks cheaper in aggregate doesn't get picked for a language where it's actually the expensive option.

curl https://api.getnadir.com/v1/recommend \
  -H "X-API-Key: $NADIR_API_KEY" \
  -d '{
    "prompt": "इस बग को ठीक करने में मदद करें",
    "detected_language": "hi"
  }'

Same quality bar, same cascade, priced against the tokenizer your actual traffic runs on rather than the one your benchmark happened to be written in. If your product serves more than one language, that's the fix worth checking before anything else on this list: start free, or read the complete guide to cutting LLM API costs for the rest of the levers that stack on top of this one.

More on pricing & models

What Nadir is

Nadir is an LLM router. Nadir sends each prompt to the cheapest model that can handle it. A small decision model reads each prompt against your model menu and picks the lowest-cost model it expects to handle it. When the decision model is uncertain or unavailable, the request goes to the strongest model on the menu. The routing step makes no call to your model provider.

Nadir runs two ways. The decision API returns a model, reasoning-effort, cache, context, and policy recommendation without calling a model provider, beside the gateway you already run. That is how a shadow-mode evaluation works, and its projected savings stay advisory. The OpenAI compatible managed proxy executes the route, and migration is a two-line change: point the base URL at api.getnadir.com and set model to auto. On that path an optional verifier can score a complete non-streaming answer and escalate to a stronger model when it misses the configured bar. Streaming bypasses post-generation verification. BYOK is supported on every tier.

For coding agents, Nadir Auto is a terminal launcher for Claude Code or Codex that asks Nadir for the main-session model before each turn, with your configured model as the fallback and cost ceiling. Delegation integrations for Claude Code, Codex, or Cursor instead recommend a model tier for subagent work, and the agent decides; the Claude plugin can also move a main-thread turn to Haiku when Nadir's cache check prices it cheaper, unless its switch_main_model option is off. Either way inference runs on your own provider account, so Nadir holds no provider keys on that path.

What the numbers are, and what they are not

Nadir publishes each evaluation with its scope. On checkable code, run-check-escalate solved 392 of 395 common HumanEval and MBPP problems (99.2%), graded by running the canonical tests; that applies only to tasks with runnable deterministic tests. Nadir-Tumbler posts an arena_score of 72.3 on RouterArena's public scorer, 5th of 23 routers, which measures the routing decision on RouterArena's own model pool. A reference-assisted RouterBench evaluation over 11,420 held-out triples produced a 60% lower projected cost than always-Opus with about 98% retained quality and a 1.7% catastrophic-route rate. That experiment gave the verifier the expensive-model reference answer, which production does not have, so it is a research ceiling and not the deployed path.

None of these is a production guarantee, a universal savings rate, or a forecast for any particular workload. Customer savings are reported from measured execution against a declared baseline, and customer quality only from outcome-labelled traffic. Projected savings and realized savings are separate artifacts and are never blended.

Design-partner program

Three rungs, picked by risk appetite. Rung 0 Shadow runs advisory decision calls alongside live traffic and returns a projected receipt, with nothing in the request path changed. Rung 1 Hosted is the two-line swap on a production slice and returns a realized receipt. Rung 2 On-prem is a supervised six-week proof of concept inside the partner's VPC, where no prompt, response, or usage reaches Nadir. The commitments are the same at every rung. Apply for a rung directly: Rung 0 Shadow, Rung 1 Hosted, or Rung 2 On-prem. Not sure which fits? Start at getnadir.com/contact/?reason=design-partner.

Licensing

NadirClaw is the self-hosted core, source-available under the PolyForm Noncommercial License. Source-available is the correct label; NadirClaw is not open source. Nadir Route's hosted plan has no base fee and charges a variable fee only on measured savings from requests Nadir executed.

Pages on this site

Machine-readable summaries of this site: llms.txt and llms-full.txt.