Token cost by language and script
Why the same sentence costs a different number of tokens in different languages, derived per script from how the tokenizer was built rather than asserted from a table.
A tokenizer is a lookup table built once, before training, from a corpus somebody chose. Modern ones are byte-level BPE: the text is encoded to UTF-8, every one of the 256 possible bytes is already a token, and on top of that sits a merge table — a learned list of byte pairs that get collapsed into single tokens, ordered by how often the pair appeared in that corpus. English is cheap not because English is simple but because the merge table is mostly English, so whole common words survive as one token. Everything below that is a fallback, and the last fallback is one token per byte. That floor is the single most useful fact in this cluster, because it means a script whose characters take three UTF-8 bytes cannot cost less than three tokens per character unless the merge table happens to contain that character.
So “language X costs more tokens” is never one reason. It is some combination of how wide the characters are in UTF-8, whether the orthography inserts combining marks and joiners that break merges apart, how much of the vocabulary budget the language was given, and how much meaning the language packs into a character in the first place. These pages take one language each and work out which of those is doing the damage, because the fixes differ: a vocabulary problem is solved by changing model, a byte-width problem is not solved at all, and a normalisation problem is solved before the text ever reaches the API. Published cross-language measurements exist — Petrov et al., “Language Model Tokenizers Introduce Unfairness Between Languages” (NeurIPS 2023) compares tokenised lengths of parallel text and reports ratios exceeding an order of magnitude between the best- and worst-served languages — and every page here tells you how to reproduce the number for your own corpus rather than quoting one.
Why Chinese Text Costs More Tokens Than English
Chinese costs roughly three to four times as many tokens per character as English, and close to parity per sentence — the two numbers point in opposite directions and only one of them is on your invoice.
9 min read
Why Japanese Text Costs More Tokens Than English
Japanese is three writing systems with three different token costs, and the expensive one is katakana — the script used for exactly the loanwords that are cheap in English.
9 min read
Why Korean Text Costs More Tokens Than English
Hangul is phonetic, so a Korean word needs several three-byte syllable blocks where Chinese needs one character — which is why Korean does not get the density discount that makes CJK sound like one problem.
9 min read
Why Arabic Text Costs More Tokens Than English
Arabic letters are two bytes, but the expensive parts are the optional ones: tashkeel adds a separate combining code point per consonant, and presentation forms from PDF extraction can double the count invisibly.
9 min read
Why Russian Text Costs More Tokens Than English
Cyrillic is two bytes per letter, but the real cost is six-case inflection: every noun exists in a dozen surface forms and the merge table can only afford the frequent ones.
9 min read
Why Hindi Text Costs More Tokens Than English
Devanagari costs three bytes per code point and spends several code points on a single visible letter, because vowel signs and conjunct-forming viramas are stored separately from the consonants they attach to.
9 min read
Why Thai Text Costs More Tokens Than English
Thai writes without spaces, which removes the whitespace anchor that byte-level BPE relies on to learn whole words — so the tokenizer falls back to short, numerous subword pieces.
9 min read
Why Greek Text Costs More Tokens Than English
Greek is alphabetic, two bytes a letter and structurally similar to Latin-script languages, so almost all of its extra token cost is vocabulary share rather than anything about the script.
8 min read
Why Hebrew Text Costs More Tokens Than English
Unvocalised Hebrew is unusually compact — an abjad that omits most vowels — so its penalty is mild until niqqud or final-form letters get involved, and then it is not.
8 min read
Why Vietnamese Text Costs More Tokens Than English
Vietnamese is written in the Latin alphabet and almost none of it is ASCII — the tone-bearing vowels live in three-byte Unicode ranges that the English merge table has never seen.
9 min read
Why Turkish Text Costs More Tokens Than English
Turkish barely costs more bytes than English and still costs more tokens, because agglutination and vowel harmony generate more distinct word forms than any merge table can afford to store.
9 min read
Why Persian Text Costs More Tokens Than English
Persian uses the Arabic script but four of its most common letters are different code points from their Arabic lookalikes, so merges learned on Arabic text do not fire on Persian at all.
9 min read
Why Bengali Text Costs More Tokens Than English
Bengali costs three UTF-8 bytes per code point and spends several code points on a single visible cluster, which is where the multiplier comes from.
9 min read
Why Tamil Text Costs More Tokens Than English
Tamil pays three bytes per code point and then packs a whole English clause into one agglutinated verb, so the penalty is multiplicative rather than additive.
9 min read
Why Urdu Text Costs More Tokens Than English
Urdu and Hindi can be the same spoken sentence and still differ by a third in token cost, because the Arabic script is two UTF-8 bytes per letter and Devanagari is three.
9 min read
Why Ukrainian Text Costs More Tokens Than English
Ukrainian and Russian cost almost exactly the same number of UTF-8 bytes, which proves the difference between their token counts is vocabulary coverage and not the alphabet.
9 min read
Why Polish Text Costs More Tokens Than English
Polish is Latin script and never falls back to bytes, yet still costs two to three times English, because eight diacritics per sentence split otherwise-common subwords.
9 min read
Why Amharic Text Costs More Tokens Than English
The Ge'ez syllabary encodes a whole consonant-vowel syllable in one three-byte code point, which halves the character count and triples the byte cost.
9 min read
Why Swahili Text Costs Fewer Tokens Than Most African Languages
Swahili is written in plain ASCII with no diacritics, so it skips the byte-width penalty entirely and pays only for its verb morphology.
9 min read
Why Georgian Text Costs More Tokens Than English
Mkhedruli is a three-byte alphabet with no relatives, so a vocabulary that has never seen enough Georgian has nothing to fall back on but raw bytes.
9 min read
Why Armenian Text Costs More Tokens Than English
Armenian sits in the two-byte region of UTF-8 while Georgian sits in the three-byte region, which shows that script rarity alone does not predict the multiplier.
9 min read
Why Khmer Text Costs More Tokens Than English
Khmer spends three bytes on a character that renders as nothing at all, and writes without spaces between words, so a tokenizer gets neither cheap code points nor boundary hints.
9 min read
Why Burmese Text Costs More Tokens Than English
Burmese stacks medials, vowels and the asat onto a single consonant, so one round glyph cluster can cost twelve UTF-8 bytes before the corpus problem is even considered.
9 min read
Why Mongolian Text Costs More Tokens Than English
Mongolian Cyrillic costs the same two bytes per letter as Russian and gets almost none of Russian's token efficiency, because merges are learned from words rather than alphabets.
9 min read
Why Punjabi Text Costs More Tokens Than English
Gurmukhi costs three UTF-8 bytes per codepoint before any merge helps, and Punjabi's split between two writing systems halves the corpus each script's merges are learned from.
9 min read
Why Malayalam Text Costs More Tokens Than English
Malayalam joins words with sandhi and carries two live orthographies, so the whitespace boundaries that BPE anchors its merges to are both rarer and split two ways.
9 min read
Why Telugu Text Costs More Tokens Than English
Telugu sits on the same three-byte floor as every other Indic script, so the interesting question is why its per-word ratio and its per-character ratio give different answers.
9 min read
Why Indonesian Tokenizes Almost as Efficiently as English
Indonesian scores well on both of the two independent axes that set token cost — one-byte characters and low inflection — which is exactly what a ratio near 1.0 requires.
9 min read
Why Compound Words Make German Text Cost More Tokens
German uses the same alphabet as English, so its token penalty comes entirely from morphology: closed compounds, linking morphemes, and a capitalisation rule that doubles vocabulary demand.
9 min read
Why Finnish Text Costs More Tokens Than English
Finnish suffix chains would be survivable if the stem stayed constant, but consonant gradation mutates the stem itself, so the merge learned for the base word does not fire on its inflected forms.
9 min read
Why Hungarian Text Costs More Tokens Than English
Vowel harmony gives every Hungarian suffix two or three written forms, assimilation dissolves the suffix boundary entirely, and two of its vowels sit outside the block where accented Latin is common.
9 min read
Why Icelandic Text Costs More Tokens Than English
Icelandic is Latin script with a normal alphabet and still tokenizes poorly, because BPE allocates merges by corpus frequency and Icelandic contributes a vanishing share of any web corpus.
9 min read
Why Nepali Text Costs More Tokens Than English
Nepali shares Devanagari with Hindi and free-rides on Hindi's merges wherever the two languages share vocabulary, so its multiplier is Hindi's plus a penalty on the fraction that is not shared.
9 min read
Why Sinhala Text Costs More Tokens Than English
Several Sinhala vowel signs have canonical decompositions, so the same word has two legitimate byte representations with different token counts, on top of a script the vocabulary barely covers.
9 min read
Why Lao Text Costs More Tokens Than English
Lao writes without spaces between words and spells many vowels as circumfixes around the consonant, so a single syllable can be five codepoints and there is no whitespace for BPE to anchor merges to.
9 min read
Why Tigrinya Text Costs More Tokens Than English
A derived token multiplier for Tigrinya, and why sharing the Ge'ez script with Amharic does not mean sharing Amharic's token efficiency.
9 min read
Why Kazakh Text Costs More Tokens Than English
A derived token multiplier for Kazakh, and why an agglutinative Turkic language in Cyrillic pays two penalties that compound rather than overlap.
9 min read
Why Azerbaijani Text Costs More Tokens Than English
A derived token multiplier for Latin-script Azerbaijani, used as the controlled comparison that separates script cost from morphology cost in Turkic languages.
9 min read
Why Serbian Text Costs More Tokens When Written in Cyrillic
Two derived multipliers for the same Serbian sentence in its two official orthographies, and what the choice actually costs.
9 min read
Why Bulgarian Text Costs More Tokens Than English
A derived token multiplier for Bulgarian, and why near-identical byte counts to Russian do not produce near-identical token counts.
9 min read
Why Macedonian Text Costs More Tokens Than English
A derived token multiplier for Macedonian, and why the shortfall begins during corpus construction rather than during tokenizer training.
9 min read
Why Kannada Text Costs More Tokens Than English
A derived token multiplier for Kannada, built from the fact that its code-point count is far higher than the number of shapes on the page.
10 min read
Why Gujarati Text Costs More Tokens Than English
A derived token multiplier for Gujarati, and why a language whose vocabulary largely overlaps with Hindi shares none of Hindi's tokenizer merges.
9 min read
Why Odia Text Costs More Tokens Than English
A derived token multiplier for Odia, including a Unicode normalisation rule that makes two of its everyday consonants cost six bytes instead of three.
9 min read
Why Yoruba Text Costs More Tokens Because of Tone Marks
A derived token multiplier for Yoruba, and the Unicode reason its accented vowels cost more bytes than Vietnamese ones carrying the same information.
9 min read
Why Zulu Text Costs More Tokens Than English
A derived token multiplier for Zulu, the case in this cluster where the script costs nothing at all and the multiplier comes entirely from word structure.
9 min read
Other topics
- LLM fundamentals & architecture
- Tokens, tokenization & context windows
- Prompt engineering
- Reasoning models & test-time compute
- Multimodal AI: vision, audio, video
- RAG & retrieval
- Embeddings & vector search
- AI agents & tool use
- Structured output & function calling
- Fine-tuning & post-training
- Local inference errors, string by string
- Running local models day to day
- Testing code that calls an LLM
- Snapshot and property testing for model output
- Regression suites for prompts
- Eval gates in CI
- Flaky tests against a model
- Determinism and the cost of testing
- Contract and streaming tests
- Testing tool calls and retrieval
- Inference, serving & latency
- Rolling out a prompt change
- Testing AI systems in practice
- Forecasting a time series
- Machine learning on tabular data
- Geospatial data and models
- Understanding audio that is not speech
- Understanding video
- Core computer vision tasks
- Machine learning on graphs
- Point clouds and 3D
- Evaluation, benchmarks & LLM-as-judge
- Sensor and IoT data
- Logs and event streams
- Models over biological sequences
- Machine learning on molecules
- Embedding and searching code
- Extracting invoices and purchase orders
- Receipts, statements and tax forms
- Insurance policies and contracts
- Deeds, court filings and patents
- Extracting from medical records
- Observability & LLMOps
- CVs, certificates and identity documents
- Shipping, customs and technical documents
- Meetings, email, chat and filled-in forms
- Building an extraction pipeline
- Business, property and inspection documents
- Contract clauses and insurance claims
- Regulated and compliance documents
- Consumer, travel and closing documents
- Mapping one chat API onto another
- SDK and framework migrations
- Hallucination & failure modes
- Re-embedding and model deprecation
- Cutting over between providers
- Parity gaps, shims and legacy endpoints
- Moving between model versions
- Migrating vector stores and caches
- Mapping capabilities and parameters
- Migrating pipelines and agents
- Contracts, runbooks and rollback
- Auditing a codebase before a cutover
- Compliance and fine-tune migration
- LLM cost engineering
- Routing, cost tracking and multi-tenancy
- What a migration does to your prompts
- AI security & prompt injection
- Privacy, compliance & data residency
- AI governance, policy & society
- Building reliable AI applications
- AI hardware, GPUs & compute
- Open-weight models & local inference
- AI for developers & coding agents
- AI in industry: vertical playbooks
- AGI, superintelligence, alignment & the long future
- Machine learning foundations
- NLP fundamentals & classical tasks
- Data engineering for AI
- Synthetic data & dataset curation
- AI product design & UX
- Search, ranking & recommendation
- Enterprise adoption & change management
- AI careers, skills & teams
- Reading AI research
- AI in science & discovery
- Robotics & embodied AI
- AI economics, markets & business models
- AI myths, hype & media literacy
- Context engineering
- Shipping AI features: patterns & anti-patterns
- Build it: end-to-end AI tutorials
- Python for AI: hands-on recipes
- TypeScript, React and the web
- Frameworks and SDKs
- Errors and troubleshooting
- AI facts, numbers and statistics
- The history of AI
- The maths behind AI
- Architectures beyond the transformer
- Reinforcement learning
- Diffusion and generative media
- Speech, audio and voice engineering
- Benchmarks, one at a time
- AI search visibility
- Infrastructure and operations
- Databases and storage for AI
- Knowledge graphs and structured knowledge
- Classical ML in production
- Regulation, jurisdiction by jurisdiction
- Prompt recipes and pattern library
- AI for people who do not write code
- Writing, media and creative work
- Edge and on-device AI
- Interpretability and model internals
- Field notes
- OpenAI model behaviour
- Claude model behaviour
- Gemini model behaviour
- Llama model behaviour
- Mistral model behaviour
- Qwen model behaviour
- DeepSeek model behaviour
- Cohere model behaviour
- Grok model behaviour
- Small model behaviour
- Hybrid model architectures
- Transliteration, romanization and script handling
- Locale-correct output
- Multilingual generation quality
- Multilingual pipelines
- The EU AI Act, article by article
- AI under the GDPR and EU data law
- US AI regulation, state and sector
- International AI governance and standards
- AI litigation and enforcement
- Running AI workloads on AWS
- Running AI workloads on Google Cloud
- Running AI workloads on Azure
- AI at the edge: Workers, Vercel and Netlify
- Serving models on Kubernetes
- Operating AI infrastructure
- Quantization formats and what they cost
- llama.cpp, flag by flag
- Ollama and the desktop local-model runtimes
- Local models on Apple Silicon
- Hardware for local inference
- Running speech and embedding models locally
- Model files, adapters and conversion
- VRAM arithmetic for local models