TL;DR A "token" is not a fixed amount of text. Each vendor's tokenizer cuts the same file into a different number of pieces, and you pay per piece. So $/Mtok is not comparable across vendors.
Anthropic's newest tokenizer (Sonnet 5, Opus 4.8, Fable 5) produces ~30% more tokens from the same code than their previous one. The list price did not change.
On identical files, it produces 1.36-1.73x GPT's token count. TypeScript is the worst case at 1.73x.
In effective terms, Opus 4.8's $5 / $25 behaves like $7.50 / $37.50, and Sonnet 5 after its intro window like $4.50 / $22.50.
This measures input tokenization only. Output verbosity, thinking, and caching move whole-task bills further; details near the end.
We counted the same bytes under every frontier tokenizer, using each vendor's own counting endpoints, and cross-checked the counts against real paid requests. Below are the numbers and what they do to the prices on the rate cards.
Why $/Mtok is not a comparable price
A model's bill is two numbers multiplied together:
cost = (tokens your content becomes) x (price per token)
The pricing page shows the second number and treats the first as a constant. It is not a constant. It depends on the model's tokenizer, and tokenizers differ a lot between vendors. Two models can list the same "$5.00 / 1M input tokens" and produce meaningfully different bills for the same paragraph, because one of them turns that paragraph into more tokens. Since nobody publishes tokens-per-content numbers, we measured them.
... continue reading