Large language models don't read raw text — they read tokens, the subword chunks their tokenizer cuts a sentence into. Many widely used tokenizers were trained on a corpus that is overwhelmingly English and Latin-script, so when one of them meets Hindi, Marathi, Telugu, Kannada or any other Indic language, it frequently gives up on whole-word or whole-syllable chunks and falls back to small subword or raw-byte fragments. The word doesn't get smaller; it gets cut into more pieces.
We built the upstream half of this study first: a frozen, parallel, 1,012-sentence corpus (FLORES+ devtest) run through 13 tokenizers spanning open-weight Indic-aware models, generalist open models, and closed frontier APIs. It confirmed the fertility gap is real and large — see the tables below. What it couldn't tell us is whether that gap actually breaks a model's ability to think, or whether it's a cost that shows up on the invoice and nowhere else. That's the question this downstream extension exists to answer.
13 tokenizers × 5 languages (English, Hindi, Marathi, Telugu, Kannada) × 1,012 FLORES+ devtest sentences. Pure tokenization — no model generates anything here, so this phase measures the tokenizer alone, isolated from any model's reasoning ability.
A high upstream fertility number is a prediction, not a proof, that reasoning degrades. To test the prediction directly, we took the four Indic languages from Phase 1, pulled math questions from IndicMMLU-Pro, and ran each one through four open-weight models under four different strategies for handling the native-script input — from paying the full fertility cost throughout (native_cot) to removing it entirely before the model ever sees the question (trans_google). If fertility were purely a cost-and-latency issue, accuracy should barely move across these four conditions. If it's also a reasoning issue, it should move a lot for high-fertility models and barely at all for low-fertility ones.
Of the 13 tokenizers in Phase 1, 10 are open — Sarvam-1, Sarvam-30B, Google Gemma 2 9B, Google Gemma 3 4B, Meta Llama 3.1 8B, Qwen3 8B, Mistral Nemo (Tekken), BrahmicTokenizer-131K, OpenAI GPT-4o (o200k_base), and OpenAI GPT-3.5/GPT-4 (cl100k_base). 3 are API-only, with no public tokenizer — Claude Sonnet 4.5, Claude Opus 4.8, and Google Gemini 3.6 Flash (see methodology for how those were measured).
We deliberately kept Phase 2 to open-weight models only, so every accuracy number reflects the model itself and not a provider's server-side prompt wrapping or hidden reasoning mode.
| model | checkpoint |
|---|---|
| Gemma 3 4B open | google/gemma-3-4b-it |
| Qwen3-8B open | Qwen/Qwen3-8B |
| Llama 3.1 8B open | meta-llama/Llama-3.1-8B-Instruct |
| Sarvam-30B open · india | sarvamai/sarvam-30b |
Gemma-3-4B's tokenizer is far friendlier to Indic scripts than Qwen3-8B's (2.36 vs. 8.68 tokens/word, Indic-average — Gemma ranks 4th-best of the 13 tokenizers we measured, Qwen 3rd-worst), yet Gemma pays the far bigger downstream tax: translating its input to English before reasoning recovers 12.0 accuracy points (39.1%→51.1% average across languages), while the identical fix recovers just 1.6 points for Qwen (78.6%→80.2%). A friendlier tokenizer did not buy Gemma a smaller reasoning penalty here — tokenizer fertility alone doesn't predict which model needs rescuing.
We checked, expecting Sarvam-30B to run its own Indic-tuned vocabulary like Sarvam-1 does. The result was mixed: tokenizing all 1,012 FLORES+ sentences on both, Hindi and Marathi produce identical token-ID sequences (0 of 1,012 sentences differ), English is nearly identical (3 of 1,012 differ), and Telugu/Kannada clearly diverge — Sarvam-30B is more efficient than Gemma on those two specifically (2.06 vs. 2.36 tokens/word Indic-average). Averaged across all four downstream languages, Gemma-3-4B still loses 12.0 points reasoning natively vs. translated, while Sarvam-30B loses nothing — native-script reasoning (75.50%) slightly beats pre-translated English (74.35%). Tokenizer similarity alone doesn't explain that gap: on Hindi and Marathi specifically, where the token-ID sequences are provably identical between the two models, they still land on opposite sides of the reasoning-tax question — so for those two languages at least, it isn't the tokenizer doing the protecting.
Qwen3-8B (8.68) and Llama-3.1-8B (8.73) are the two worst upstream fertility scores in our roster after cl100k_base's raw byte-fallback figure — nearly indistinguishable as tokenizers. Downstream, Llama's native-to-translated gap (+17.73 points) is more than 11× Qwen's (+1.6). The same upstream number predicts almost nothing about which of these two needs rescuing.
Ranked by Indic-average fertility across Hindi, Marathi, Telugu and Kannada. Lower is better. The "API" models (Claude Sonnet 4.5, Claude Opus 4.8, Gemini 3.6 Flash) were measured through their chat completions endpoint by counting output tokens for deterministic prompts; see methodology for the exact procedure.
| rank | tokenizer / model family | en | hi | mr | te | kn | indic avg | parity | cost /1M chars | type |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Sarvam-1 india | 1.20 | 1.27 | 1.28 | 1.34 | 1.35 | 1.29 | 1.07× | — | open |
| 2 | Sarvam-30B india | 1.23 | 1.31 | 1.33 | 1.43 | 1.50 | 1.39 | 1.13× | — | open |
| 3 | BrahmicTokenizer-131K | 1.27 | 1.34 | 1.36 | 1.42 | 1.49 | 1.40 | 1.10× | — | open |
| 4 | Gemma 3 4B open | 1.31 | 1.68 | 1.70 | 2.91 | 3.15 | 2.36 | 1.80× | — | open |
| 5 | Gemma 2 9B open | 1.30 | 1.75 | 1.78 | 3.00 | 3.23 | 2.44 | 1.88× | — | open |
| 6 | GPT-4o api | 1.29 | 2.42 | 2.45 | 3.31 | 3.31 | 2.87 | 2.22× | $0.250 | api |
| 7 | Mistral Nemo (Tekken) | 1.31 | 2.44 | 2.49 | 3.40 | 3.48 | 2.95 | 2.25× | — | open |
| 8 | GPT-3.5 / GPT-4 api | 1.35 | 2.62 | 2.66 | 3.46 | 3.53 | 3.07 | 2.27× | $0.300 | api |
| 9 | Claude Sonnet 4.5 api | 1.32 | 2.75 | 2.79 | 3.62 | 3.69 | 3.21 | 2.43× | $0.600 | api |
| 10 | Claude Opus 4.8 api | 1.33 | 2.78 | 2.82 | 3.65 | 3.72 | 3.24 | 2.44× | $0.900 | api |
| 11 | Qwen3 8B open | 1.36 | 2.85 | 2.89 | 3.74 | 3.82 | 3.32 | 2.44× | — | open |
| 12 | Llama 3.1 8B open | 1.37 | 2.88 | 2.92 | 3.78 | 3.85 | 3.36 | 2.45× | — | open |
| 13 | Gemini 3.6 Flash api | 1.34 | 3.10 | 3.14 | 4.12 | 4.21 | 3.69 | 2.75× | $0.075 | api |
IndicMMLU-Pro mathematics, averaged across Hindi, Marathi, Telugu, Kannada. The four strategies are: native_cot (question and chain-of-thought both in native script), native_english_cot (question in native script, reasoning in English), trans_google (question translated to English before the model sees it, reasoning in English), and trans_sarvam (same, but translated with Sarvam-1 instead of Google Translate).
| model | native_cot | native_english_cot | trans_google | trans_sarvam | max Δ |
|---|---|---|---|---|---|
| Gemma 3 4B | 39.06 | 42.71 | 51.04 | 49.48 | +11.98 |
| Qwen3-8B | 78.65 | 79.17 | 80.21 | 80.21 | +1.56 |
| Llama 3.1 8B | 47.40 | 55.73 | 65.10 | 63.54 | +17.70 |
| Sarvam-30B | 75.52 | 75.00 | 74.48 | 74.48 | −1.04 |
Using the Phase-1 token counts and published API prices, the same 1,000-character input can cost very different amounts depending on which tokenizer is charging for it. The table below is for the four tokenizers with a direct owner-published price; the open models are shown for comparison using the same token count but no dollar rate attached.
| tokenizer | cost /1M input chars (en) | cost /1M input chars (indic avg) | indic premium |
|---|---|---|---|
| Gemini 3.6 Flash api | $0.10 | $0.28 | 2.75× |
| GPT-4o api | $0.32 | $0.72 | 2.22× |
| GPT-3.5 / GPT-4 api | $0.41 | $0.92 | 2.27× |
| Claude Sonnet 4.5 api | $0.79 | $1.93 | 2.43× |
| Claude Opus 4.8 api | $1.19 | $2.89 | 2.44× |
For a 1,000-character Hindi prompt, the cheapest API option (Gemini 3.6 Flash) is roughly one-thirtieth the price of the most expensive (Claude Opus 4.8). Fertility is the mechanism that turns the same sentence into a different number of tokens, and token count is what most APIs bill by.
The four downstream models split cleanly into two groups. Gemma-3-4B and Llama-3.1-8B lose large accuracy points when asked to reason in native script; Qwen3-8B and Sarvam-30B do not. The upstream fertility table alone cannot predict this split: Gemma has a much better tokenizer than Qwen, yet Gemma suffers the larger reasoning tax. Llama and Qwen have nearly identical fertility, yet Llama's tax is more than ten times larger.
This suggests the protecting factor is not the tokenizer itself but something correlated with it at the model-family level — most likely the language distribution and fine-tuning data the base model was exposed to. Models that have seen more native-script reasoning during training appear able to route around tokenizer fragmentation; models that haven't seen enough fall back to English-like reasoning patterns and pay the price when the input is forced to stay in script.