Use about 1.3 tokens per English word for most labs, so 1,000 words is roughly 1,300 tokens. Anthropic's tokenizer is the exception: in my runs it produced about 1.8 tokens per word. A 10,023-word document came to 12,987 input tokens on GPT-6 Luna and 18,004 on Claude Haiku 5.5, a gap of about 39%.
What I measured
I ran two text inputs through the models in my data:
- Summary input: a 20-page PDF, which is 10,023 words of J. S. Mill's On Liberty.
- Translation input: 1,017 words of The Prince, translated to Spanish.
The counts below are input tokens only. Output and reasoning tokens are billed separately, and I cover them later.
Input tokens for 10,023 words
| Model | Input tokens | Tokens per 1,000 words* |
|---|---|---|
| Gemini 3.1 Flash Lite | 12,741 | 1,271 |
| MiniMax M3 | 12,901 | 1,287 |
| DeepSeek V4.1 Flash | 12,970 | 1,294 |
| GPT-6 Luna | 12,987 | 1,296 |
| GLM 5.3 Flash | 12,995 | 1,296 |
| Kimi K3 | 13,113 | 1,308 |
| Qwen3.8 Flash | 13,119 | 1,309 |
| Mistral Large 4 | 13,373 | 1,334 |
| Grok 4.7 | 13,954 | 1,392 |
| Claude Haiku 5.5 | 18,004 | 1,796 |
*Measured input count divided by 10.023, rounded. Approximate.
Most models fall between about 1,270 and 1,335 tokens per 1,000 words. Grok 4.7 and Claude Haiku 5.5 sit above that range. Claude Sonnet 5.5 used the same 18,004 input tokens as Haiku.
Some rows here (Kimi K3, Gemini 3.1 Flash Lite) are estimated rather than fully measured. See how I measure.
Input tokens for 1,017 words
| Model | Input tokens | Tokens per word* |
|---|---|---|
| Gemini 3.8 Flash | 1,308 | 1.29 |
| GPT-6 Luna | 1,330 | 1.31 |
| GLM 5.3 Flash | 1,330 | 1.31 |
| DeepSeek V4.1 Flash | 1,354 | 1.33 |
| Qwen3.8 Flash | 1,386 | 1.36 |
| MiniMax M3 | 1,473 | 1.45 |
| Claude Haiku 5.5 | 1,832 | 1.80 |
| Grok 4.7 | 2,542 | 2.50 |
*Measured input count divided by 1,017, rounded.
The translation run agrees with the summary run for the core group, which lands near 1.3 tokens per word. Haiku is again about 1.8.
Two results stand out. MiniMax M3 came in higher than on the summary run (1.45 against about 1.29). Grok 4.7 was the larger surprise: its summary input was about 7% above Luna's, in line with its tokenizer ratio, but its translation input was almost twice Luna's. I do not have a cause for either gap, so I report them as measured. Note that the translation prompt includes instructions and a Spanish target, which may add tokens beyond the raw word count.
Rule of thumb
- OpenAI, Z.ai, DeepSeek, Qwen, Google and MiniMax: about 1.3 tokens per word. 1,000 words is about 1,300 tokens, and 1,000 tokens is about 770 words.
- Anthropic: about 1.8 tokens per word. 1,000 words is about 1,800 tokens, and 1,000 tokens is about 550 words.
- Grok 4.7: variable, from about 1.4 on the summary run to about 2.5 on the translation run.
If you budget by word count, budget for the lab you use. A fixed 1.3 ratio undercounts Claude inputs by about a third.
Why labs differ
My method notes give tokenizer ratios for the same English document, with OpenAI set to 1.00:
| Lab | Ratio |
|---|---|
| Anthropic | 1.39 |
| xAI | 1.07 |
| Mistral | 1.03 |
| Qwen | 1.01 |
| Moonshot AI | 1.01 |
| OpenAI, Z.ai, DeepSeek, Meta | 1.00 |
| MiniMax | 0.99 |
| 0.98 |
Only Anthropic sits far from 1.00, which matches the Haiku and Sonnet input counts. The other labs stay within about 7% of OpenAI's tokenizer.
Input is not the whole bill
Reasoning tokens are billed as output tokens, and output counts vary by model. On the summary task, Qwen3.8 Flash used 2,141 reasoning tokens, while Claude Sonnet 5.5 used none. On the translation task, Claude Haiku 5.5 produced 2,153 output tokens against 1,328 for GPT-6 Luna, and GLM 5.3 Flash used 8,761 reasoning tokens.
Measured cost per summary task, from my data:
| Model | Cost per task | Per 1,000 tasks | Tokens in / out / reasoning |
|---|---|---|---|
| GPT-6 Luna | 0.16¢ | $1.57 | 12,987 / 449 / 84 |
| Claude Haiku 5.5 | 0.22¢ | $2.20 | 18,004 / 672 / 118 |
| GPT-6.1 Sol | 3.1¢ | $31.05 | 12,987 / 482 / 26 |
| Claude Sonnet 5.5 | 4.5¢ | $44.58 | 18,004 / 857 / 0 |
The median across all 326 models is 0.83¢ per summary task. Use the full cost figure for planning, not the input count alone.
| # | Model | Cost per task | Text score | Tokens in / out | Basis | |
|---|---|---|---|---|---|---|
| 1 | GLM 5.3 FlashZ.ai | 0.10¢$0.99 / 1,000 | 1474 | 12,995 / 1,814 | measured best value | |
| 2 | DeepSeek V4.1 FlashDeepSeek | 0.12¢$1.22 / 1,000 | 1475 | 12,970 / 1,992 | measured best value | |
| 3 | GPT-6 LunaOpenAI | 0.16¢$1.57 / 1,000 | 1443 | 12,987 / 533 | measured | |
| 4 | Claude Haiku 5.5Anthropic | 0.22¢$2.20 / 1,000 | - | 18,004 / 790 | measured | |
| 5 | Qwen3.8 FlashAlibaba Qwen | 0.32¢$3.21 / 1,000 | - | 13,119 / 2,642 | measured |
To price your own workload, use the calculator. For task details, see summarize a PDF and translate 1,000 words.
How I measured
Each measured model ran once per task, with default settings, through OpenRouter. Output was capped at 16,000 tokens. Estimated rows use the same method without a full run. Read the methodology for the full procedure.
FAQ
How many tokens is 1,000 words?
About 1,300 tokens for most labs in my runs, and about 1,800 for Claude Haiku 5.5 and Claude Sonnet 5.5.
Why does Anthropic use more tokens for the same text?
My method notes give Anthropic a tokenizer ratio of 1.39 against OpenAI's 1.00. My counts match: 18,004 input tokens for the summary document against 12,987 for GPT-6 Luna.
Should I budget by words or by tokens?
Budget by tokens, using the model you plan to run. Words are a quick estimate, but a 1.3 ratio undercounts Claude inputs by about a third.