Do Non-English Prompts Cost More Tokens? I Measured 28 Languages, article cover in AI Tools on learnai24.com

Do Non-English Prompts Cost More Tokens? I Measured 28 Languages

I ran two texts through the real o200k_base tokenizer in 28 languages. Article 1 of the Universal Declaration takes 33 tokens in English and 72 in Japanese, using half the characters. Here is the tool, the full dataset, and what it costs you.

Everybody who works with an AI API learns quickly that you pay per token. Almost nobody checks whether the language they write in changes how many tokens they get. I assumed the effect was small. It is not small, and the direction surprised me.

So I measured it properly. Not with a rule of thumb, not with the usual “one token is about four characters” line, but with the actual vocabulary file. Everything below comes from o200k_base, the vocabulary OpenAI maps to its GPT-4o and GPT-5 model names. Two texts, translated into 28 languages, run through the real thing. Start with the tool below, then take the full index further down.

Split a sentence yourself

Click a sample and watch it come apart, one token at a time

Tokenizer, real o200k_base splits

0tokens
0characters
0characters per token
$0per 1M prompts like this
a whole word a piece of a word half a character

The same instruction, eight languages, measured

Instruction used: Please summarise this customer email in three bullet points and suggest a reply. Translated, then run through o200k_base on 4 September 2026. Dollar figure uses the GPT-5.6 Terra input rate of $2.00 per million tokens.

Fewer characters, more tokens

The result that made me check my own code twice

Look at the Japanese line. That instruction is 33 characters. The English version is 80 characters. Japanese is less than half the length on screen, and it costs 73 percent more tokens.

That is not a rounding error and it is not a translation artefact. It is how the tokenizer was trained. A tokenizer learns its vocabulary from a training corpus, and that corpus is overwhelmingly English. Common English strings like ” customer” or ” reply” earn their own single entry because they turn up billions of times. Japanese gets far less of the budget, so it falls back to smaller and smaller pieces.

You can watch this happen in the tool. Switch to the Japanese sample and look for the pink chips. Those are tokens that are not even a whole character. The tokenizer ran out of vocabulary and split a single Japanese character across two tokens. You are paying twice for one character.

Character count tells you nothing about your bill. A shorter prompt in the wrong language is a more expensive prompt.

What a German compound noun does to your bill

One word, nine pieces

German has a different problem, and it is a fun one to look at. Pick the compound noun sample. The word Krankenversicherungsbeitragsberechnung is one word to a German reader and to a dictionary. To the tokenizer it is nine separate pieces: Kranken, vers, icher, ungs, be, itr, ags, bere, chnung.

Every technical German document is full of words like that. Every legal one, every insurance one, every administrative one. If you are building anything that processes German business text, this is where your budget goes, and it does not show up in a word count or a character count anywhere.

The full index: 28 languages, two texts

The tool above uses one instruction in eight languages, which is enough to see the effect but not enough to trust it. So I measured a second text as well: Article 1 of the Universal Declaration of Human Rights, in the official UN translations, across 28 languages. Both texts are in the table below, and the whole dataset is downloadable.

0most expensive language, versus English
0languages measured
0cheapest language other than English
0tokens for the JSON block, in every language

Measured on 5 September 2026 with the o200k_base encoding, the vocabulary OpenAI maps to its GPT-4o and GPT-5 model names. Version 1.2.

Click any column heading to sort. Both texts shown so you can see where they disagree.

What the numbers actually say

Four findings, one of which surprised me

Character count tells you nothing

Japanese writes Article 1 of the Universal Declaration in 85 characters against English’s 170, and pays 72 tokens against 33. Half the text on screen, more than double the bill. Korean does the same thing in a milder form. If you have been estimating cost from length, you have been estimating the wrong quantity.

Chinese breaks the rule everyone assumes

The lazy version of this finding is that non-Latin scripts are penalised. Chinese refutes it: 43 characters, 35 tokens, six percent above English and the cheapest language in the set other than English. Whether a language is expensive depends on how much of it the tokenizer saw in training, not on its alphabet.

Grammar inside words costs money

Hungarian, Finnish, Romanian, Ukrainian, Czech and Polish all land well above English. These languages carry grammar inside the word, where English uses separate words the tokenizer has seen a billion times. Turkish behaves the same way at word level: evlerinizden, meaning from your houses, is four tokens on its own.

The tax depends on the text, not just the language

This is the finding that keeps the index honest, and it is why two texts are better than one. Arabic costs 33 percent more than English on the declaration and 7 percent less on the working instruction. Swahili is 9 percent above on one and 40 percent above on the other. Anyone quoting a single per-language multiplier is overselling it. Measure your own text.

Structured data pays no tax at all. The JSON request body is the same 41 tokens whether your users write in English, Japanese or Swahili. Only the human language moves.

What changed when OpenAI doubled the vocabulary

The same 28 texts, run through the old tokenizer and the new one

The GPT-4 generation used a vocabulary called cl100k_base, with roughly 100,000 entries. The newer o200k_base, which OpenAI maps to its GPT-4o and GPT-5 model names, has roughly 200,000. Doubling a vocabulary is an expensive engineering decision, and the stated reason was better handling of languages other than English. I had both tokenisers available offline, so rather than take that on trust I ran all 28 declaration texts through each.

It worked, and the effect is not small. The languages that were punished hardest gained the most, and English gained exactly nothing.

Languagecl100k_base
(GPT-4 era)
o200k_base
(newer)
Tokens saved
Hindi1805470%
Hebrew1275061%
Greek1727159%
Arabic884450%
Russian744145%
Ukrainian945541%
Vietnamese845040%
Korean855140%
Chinese (Simplified)503530%
Portuguese513727%
Swahili483625%
Dutch534123%
Turkish604623%
Japanese937223%
Finnish685421%
French504118%
Danish574718%
Indonesian574718%
Czech605017%
Polish645317%
Swedish564716%
German443814%
Spanish443814%
Romanian675813%
Norwegian524612%
Hungarian696210%
Italian53514%
English33330%

Same input as text A above, Article 1 of the Universal Declaration of Human Rights in the official translations. Sorted by how much the newer vocabulary saves.

Hindi went from 180 tokens to 54, a 70 percent cut. Hebrew saved 61 percent, Greek 59, Arabic 50, Russian 45. English went from 33 to 33.

The token tax is real, and it has been shrinking fast for exactly the languages that were paying it. Any article quoting GPT-4 era token ratios for non-English text is now badly out of date.

Two things follow. First, if you read a piece about multilingual token costs written before 2025, treat its numbers as historical rather than wrong: the gap it describes was real and has since narrowed. Second, the ranking changed as well as the size. Japanese is still expensive in absolute terms, but its 23 percent saving is below average, while Hindi moved from one of the worst penalised languages to a middling one.

What this costs in real money

Where the small percentage stops being small

A twenty percent surcharge on one sentence sounds like nothing. It stops sounding like nothing when you notice two things.

First, the tax applies to everything in that language, not just your instruction. The customer email you feed in, the documents you retrieve, the history you carry. All of it.

Second, the model answers in the same language, and output tokens cost about six times what input tokens cost. So the surcharge lands on the expensive side of the bill too.

Put those together with a support desk handling 100,000 requests a month, each one roughly 2,000 input tokens and 500 output tokens, priced at the current GPT-5.6 Terra rate of $2.00 input and $12.00 output per million:

Pipeline languagePer 1,000 requestsPer monthPer year
English$10.00$1,000$12,000
German (+20%)$12.00$1,200$14,400
Japanese (+73%)$17.30$1,730$20,760

That is $8,760 a year between the English pipeline and the Japanese one, for identical work. Nobody in that company will ever see a line item explaining it.

To be precise about what this second table is. The token counts are measured, and the percentages here come from the working instruction, text B in the index above. On the declaration text the same two languages land differently: Japanese at plus 118 percent, German at plus 15. The projection applies that measured ratio to a plausible workload, and it assumes the reply comes back in the same language and carries the same surcharge. Your ratio will differ with your actual text, so treat the shape as real and the exact figure as an estimate. Run your own numbers in the AI API cost calculator.

What this does not mean

Three honest limits

It does not mean you should prompt in English. If your users write German, your system reads German. Translating first costs its own tokens and loses meaning. This is a number to plan with, not a trick to route around.

It does not transfer perfectly to other models. These are o200k_base counts, which OpenAI maps to its GPT-4o and GPT-5 model names. Claude and Gemini each use their own vocabulary, so exact counts differ, and neither lets you check a current model offline. Google does ship a local tokenizer in the older Vertex AI SDK, vertexai.preview.tokenization in Python and cloud.google.com/go/vertexai/genai/tokenizer in Go, which downloads the Gemma vocabulary once and then counts on your machine. Its supported list in the shipping package is Gemini 1.0 and 1.5 only, and that SDK has been superseded by the Google Gen AI SDK, so for current Gemini models, as for Claude, counting means calling the vendor’s count-tokens endpoint. The pattern holds everywhere, because every major tokenizer was trained on an English-heavy corpus. The size of the gap is what varies.

It does not mean short is cheap. That is the whole point of the Japanese result. If you want the concept behind this properly explained, I wrote up what tokenization actually is separately.

The mistake that cost me more than any language did

Where my own bill actually went

I should be honest with you: the language tax is not the most expensive thing I have ever done to myself. This is.

I had a stack of PDFs analyzed, and from that analysis I built a set of skills. Then I kept having those skills reviewed and extended, round after round. The cost climbed far faster than the work justified, and it took me a while to see why. The model was not extending the skill. It was rewriting the whole thing from scratch on every pass. And because I wanted the result checked, I had several agents on it, each one reading the entire input again.

So I was not paying for the paragraph I actually wanted added. I was paying to regenerate everything I already had, several times over, every single round.

The language tax is a percentage. Re-reading your own context on every pass is a multiple.

If I built the same thing today I would work with what I think of as brains: the important information parked somewhere permanent, and agents with narrow, specific jobs, so the context does not have to be read in from scratch on every run. Store the state, then send in something small that knows where to look.

That is worth saying next to all the numbers above, because a twenty percent language surcharge is a rounding error compared to an architecture that re-reads itself. Fix the architecture first. Then worry about the language.

Method

Everything you need to reproduce or refute this

Tokenizer. o200k_base, the vocabulary OpenAI maps to its GPT-4o and GPT-5 model names, via the gpt-tokenizer package, version 4.0.0. One caveat on reproducing this. The package version matters, and not equally for every language. I re-ran all 28 languages and both texts through gpt-tokenizer 2.9.0 against the same source strings you can download above. Twenty-six come out identical. Two do not: Hindi returns 99 tokens instead of 54 on the declaration and 37 instead of 22 on the instruction, and Arabic returns 45 instead of 44 on the declaration. Both are older-version handling of Devanagari and Arabic script, both are fixed in the current release, and the figures on this page are the current ones. So if you reproduce this with an older package and get a much larger number for Hindi, that is your tokenizer version, not this dataset. Pin 4.0.0 or later and the numbers match. Counts are computed at build time and baked into this page, so nothing is estimated at render.

Text A, the declaration. Article 1 of the Universal Declaration of Human Rights, in the official translations published by the UN Office of the High Commissioner for Human Rights. This text was chosen deliberately: the translations are official rather than mine, they are parallel by construction, and they are public domain, so the comparison is not an artefact of my own translation choices. Whitespace is normalised to single spaces before counting.

Text B, the working instruction. “Please summarise this customer email in three bullet points and suggest a reply.” These translations are mine, not official. They are included because they represent the kind of text people actually send to an API, but a clumsy translation would shift a count, so treat text A as the stronger evidence and text B as corroboration. Turn on “Show the source text” and check my work.

Text C, the constant. A JSON request body, identical in every row, included to show the floor: 41 tokens regardless of language.

What this does not cover. Claude and Gemini use their own vocabularies and neither publishes an offline tokenizer, so exact counts differ there. The direction holds everywhere, because every major tokenizer was trained on an English-heavy corpus. The size of the gap is what varies.

Second tokenizer. The comparison section above uses cl100k_base, the GPT-4 generation vocabulary, from the same package, on the identical text A inputs. Nothing else about the measurement changes between the two runs.

Changelog. Version 1.2, 5 September 2026: added the cl100k_base against o200k_base comparison for all 28 languages. Version 1.0, 5 September 2026: first publication. 7 September 2026: the index was merged into this article, which had covered the same ground for eight languages. The former standalone index page redirects here. No measurement changed. The version field inside the downloadable JSON had read 1.1 while the page read 1.2; both now read 1.2, and a file downloaded earlier under 1.1 has identical contents.

Corrections welcome. If you run these strings and get different numbers, or if you can improve a translation in text B, tell me and I will update the page and note the change.

Cite this page

Schulz, C. (2026). The Token Tax Index: token counts for 28 languages under o200k_base, version 1.2, measured 5 September 2026. In: Do Non-English Prompts Cost More Tokens? LearnAI24. https://learnai24.com/ai-tools/do-non-english-prompts-cost-more-tokens/

The dataset is free to reuse with attribution. The underlying declaration text is public domain.

The bottom line

Your prompt language is a pricing decision, and almost nobody treats it as one. On a short instruction, English, French, Spanish and Italian are roughly par. On a longer text they separate, with Italian at plus 55 percent. Polish costs you about half again. Japanese costs you three quarters more on a short instruction and more than double on a longer text, while looking shorter on screen.

Before you commit to a non-English pipeline, measure your real text rather than trusting a character count, and price it properly in the AI API cost calculator.

Prices move. These are a dated snapshot, not a live feed. Every figure on this page was read off the vendor's own pricing page on the date given next to it. The one page on this site that gets re-checked is the AI API cost calculator, which carries the date of its last check. If a number here and a number there disagree, the calculator is the newer one.

The same measurement at the scale of single symbols rather than languages: what 27 emoji cost in both vocabularies, including the three flags that got more expensive rather than cheaper.

Similar Posts