Tiago Sampaio

main ai engineering career

ai

9 min read

Why Portuguese Costs More Tokens Than English (and Why the Gap Is Shrinking)

Same message, two languages: I counted the tokens. Why Portuguese costs more in AI, why removing accents doesn't help, and how the new tokenizer cut the gap.

portuguese-vs-english-tokens.png — 1920 × 1080

Cover: "Why Portuguese costs more tokens." A panel shows the Portuguese premium for the same paragraph: +49.4% on the older cl100k_base encoding and +23.9% on the newer o200k_base encoding.

Imagine an airline that charges by the kilo. You and a friend pack exactly the same clothes, but your suitcase weighs more because of the language you packed it in. That sounds absurd, and it is roughly what happens when you talk to an AI model in Portuguese.

This is the companion article to episode 2 of “IA sem Mistério” (AI without the mystery), my short video series in Portuguese. In episode 1 I explained that language models don’t read words. They read tokens, small pieces of text, and every limit and every bill is counted in tokens. This time I wanted to answer the question that came right after: if a Brazilian and an American ask for the same thing, do they pay the same?

Short answer: usually not. I ran the experiment myself, I checked it against the research and against OpenAI’s own numbers, and the result has a twist. Portuguese still costs more, but the gap is much smaller today than it was in 2023.

AI Without the Mystery · Episode 2. A series that explains how AI tools like ChatGPT and Claude work, one concept per episode: a short video in Portuguese on Instagram, TikTok and YouTube Shorts (@tiagoosampaio) and a deep-dive article here.

  • Ep. 1: What is a token?
  • Ep. 2: Why Portuguese costs more tokens than English (you are here)

See all episodes →

A 30-second recap of tokens

A tokenizer is the program that cuts your text into tokens before the model sees it. Many modern tokenizers use a technique called byte pair encoding (BPE), which builds a vocabulary of text pieces from a training corpus. Sequences that show up often get their own token. Rare sequences get split into smaller pieces.

That last sentence is the whole story of this article. A word that the tokenizer saw millions of times becomes one piece. A word it saw less often becomes two, three or four pieces. And every piece is billed.

If you want the full version, with code to count tokens yourself, episode 1’s article covers it.

The experiment: same message, two languages

I wrote seven common work requests in English, translated each one into natural Brazilian Portuguese, and counted the tokens with o200k_base, the encoding OpenAI’s tiktoken library maps to GPT-4o. I used the gpt-tokenizer package (version 2.9.0) in Node, the same setup as in episode 1.

RequestEnglishPortugueseDifference
Write a LinkedIn post about remote work.913+44.4%
Our checkout is failing for customers in Brazil… (support message)2534+36.0%
Summarize this contract in five bullet points…1618+12.5%
I need a polite email to tell the client that the project will be delayed…1922+15.8%
Hello, how are you?660%
Thank you very much for your help.86−25.0%
Artificial intelligence is changing the job market.811+37.5%
Total91110+20.9%
My own runs of the o200k_base encoding (gpt-tokenizer 2.9.0), November 5, 2026.

Short sentences can mislead, so I also tested a longer paragraph, about 80 words, describing a client whose AI assistant was getting slower and more expensive. The English version came out at 88 tokens and the Portuguese one at 109, a 23.9% premium.

Two things stand out. First, Portuguese usually costs more, but not always: “Muito obrigado pela sua ajuda” used fewer tokens than “Thank you very much for your help”, because the Portuguese sentence is shorter and its words are common. Second, the premium depends a lot on the content. Everyday phrases stay close to parity. Technical and business vocabulary is where Portuguese pays the most.

Why Portuguese gets cut into more pieces

Here are the individual words that explain most of the table. Each one was tokenized on its own, without a leading space, so the counts are slightly different from the same word inside a sentence.

EnglishTokensPortugueseTokensHow Portuguese was split
developer1desenvolvedor3des · envol · vedor
payment1pagamento2pag · amento
termination1rescisão3res · cis · ão
thanks1obrigado3ob · rig · ado
also1também2tamb · ém
My own runs, o200k_base encoding, November 5, 2026.

Reason 1: the vocabulary follows frequency

BPE gives whole tokens to the sequences it saw most often. In this encoding, “payment” and “termination” made it into the vocabulary as single pieces. “Pagamento” and “rescisão” did not. It is the same idea as a tourist phrasebook: the phrases everyone uses get their own entry, and everything else you have to spell out.

Reason 2: longer words and rich endings

Portuguese builds meaning into word endings. One verb can have dozens of forms, and suffixes like “-ção”, “-mente” and “-amento” appear everywhere. The tokenizer often keeps the ending as its own piece and splits the stem. When I tokenized “integração” on its own, it became “inte · gra · ção” (inside a sentence, with its leading space, it happened to be a single token, which shows how much context matters). English tends to use shorter words and separate helper words, and many of those short words are single tokens.

Reason 3: accents take more bytes

Modern tokenizers work on bytes, and in UTF-8 an accented letter like “ç” or “ã” takes two bytes, while a plain “c” or “a” takes one. The word “informação” is 10 characters but 12 bytes. That doesn’t automatically mean more tokens, because frequent accented chunks get their own tokens too (“ação” is a single token in my run). It does mean the tokenizer has more raw material to cover.

The myth: “just remove the accents”

The first idea most people have is to drop the accents and save money. I tested it, and it doesn’t work:

With accentsTokensWithout accentsTokens
não1nao2
você2voce2
informação2 (inform · ação)informacao2 (inform · acao)
My own runs, o200k_base encoding, November 5, 2026.

“Não” is a single token because it is extremely common. “Nao”, without the tilde, is a spelling the tokenizer saw much less, so it costs two. Removing accents makes your text harder to read, can confuse the model about which word you mean, and in my tests saved nothing. Keep the accents.

The good news: the new tokenizer cut the gap

The most interesting result came when I ran the same tests on cl100k_base, the previous OpenAI encoding, which tiktoken maps to GPT-3.5 Turbo and GPT-4, and compared:

Testcl100k_baseo200k_base
Seven requests (total)+39.6%+20.9%
Longer paragraph+49.4%+23.9%
“desenvolvedor”4 tokens3 tokens
“não”2 tokens1 token
Portuguese premium over English, my own runs with gpt-tokenizer 2.9.0, November 5, 2026.

In my samples, the newer encoding cut the Portuguese premium roughly in half. That matches what the research found before it. In 2023, Aleksandar Petrov and colleagues measured the same 2,000 sentences translated into 200 languages (the FLORES-200 dataset) and wrote that “Portuguese is closest to parity with English for the ChatGPT and GPT-4 tokenizer but still requires about 50% more tokens for the same content” (arXiv:2305.15425). My 49.4% on the paragraph test with the older encoding lands right there.

OpenAI’s own GPT-4o announcement from May 2024 shows the change from the other side. For its sample text, the new tokenizer took Portuguese “from 30 to 27” tokens and English “from 27 to 24”. Even after the improvement, the Portuguese version of their sample was 12.5% longer.

To keep perspective: Portuguese is one of the lucky ones. In the same OpenAI table, Gujarati went from 145 to 33 tokens, and Petrov’s paper found languages like Shan needing about 15 times more tokens than English on the 2023 tokenizer. For many people in the world, this is a much bigger problem than it is for Brazilians.

What the premium means in money, speed and context

Petrov’s paper is direct about the consequences. Because APIs charge per token, “the tokenization premiums discussed in Section 4 directly map to cost premiums.” Longer inputs also mean “longer processing times”. And since the context window is measured in tokens, a heavier language fits less content into the same window. A second 2023 study, by Orevaoghene Ahia and colleagues, looked at OpenAI’s API across 22 languages and concluded that “speakers of a large number of the supported languages are overcharged while obtaining poorer results” (arXiv:2305.13707).

A quick illustration with round numbers. Say a company sends 100 million input tokens a month in English to Claude Opus 5.5, which Anthropic lists at $4 per million input tokens. That is $400. If the same workload in Portuguese carried a 24% premium, like my paragraph test, it would be 124 million tokens and $496. The difference is small for one person chatting. It adds up for a company running a support bot, a catalog enrichment job or an agent that runs all day.

One important caveat: all my numbers come from OpenAI encodings. Claude uses its own tokenizer, and I can’t run it locally. If you build on Claude, Anthropic’s free token counting endpoint will give you the real number for your own prompts in both languages. That is the test that matters for your bill.

Does the AI understand Portuguese worse?

This is where the story flips in Portuguese’s favor. Cost and quality are different questions. Anthropic publishes how each Claude model scores in other languages as a percentage of its English score on Global-MMLU, a multilingual version of a well-known knowledge benchmark. For Portuguese (Brazil), Claude Opus 5.5 scores 99.2% of its English result, and Sonnet 5.5 scores 98.7% (Anthropic multilingual support). Anthropic notes that differences under about 1 percentage point are within measurement noise.

So on that benchmark, the model understands Brazilian Portuguese about as well as English. What changes is mostly how many tokens the same message takes.

Should you write your prompts in English?

My take, after running these tests and working with AI tools in both languages:

  • For everyday chat use, write in the language you think in. A clear prompt in Portuguese beats a clumsy one in English. On a subscription plan, a 20% token difference matters far less than a confusing request that needs three follow-ups.
  • For API workloads at scale, test both. If you run thousands of requests a day, count tokens for the Portuguese and English versions of your system prompt and your typical inputs. One option is to keep the fixed instructions in English and let user content stay in Portuguese.
  • Keep the accents. In my tests, removing them saved nothing and sometimes cost more.
  • Recount when the model changes. The jump from cl100k_base to o200k_base cut the gap in half in my samples. A new tokenizer can move your numbers in either direction.

A quick checklist before you decide:

  1. Have I counted tokens for both languages on the model I actually use?
  2. Is the premium on my real content closer to 0% or to 40%?
  3. Is the cost difference worth more than the clarity I lose writing in my second language?
  4. Would caching the fixed part of the prompt matter more than the language choice?

Your suitcase in Portuguese is a little heavier. The airline has been making suitcases lighter, and you can repack the heavy parts. Just don’t throw away the accents to save weight.

Do you write your prompts in Portuguese, in English, or do you mix both?

Sources

Written by

TS

Tiago Sampaio

Adobe Commerce & Magento 2 Expert

Senior developer with 15+ years building software. Writes practical fixes for Magento 2 and Adobe Commerce, and honest notes on growing as a developer.

$ git remote add inbox

Get new commits by email

New posts from both branches, engineering and career. No spam, unsubscribe any time.

One response to “Why Portuguese Costs More Tokens Than English (and Why the Gap Is Shrinking)”

$ git notes show

Leave a Reply