Models don't read characters; they read tokens — chunks of text produced by a tokenizer. Anthropic documents that Claude Opus 4.7 and later Opus models, Claude Fable 5 (which uses the same tokenizer introduced with Opus 4.7), Mythos 5 and Mythos Preview, and Claude Sonnet 5 use a newer tokenizer that produces approximately 30% more tokens for the same text; the migration guide puts the range at 1x to 1.35x depending on content. Sonnet 4.6 and earlier use the previous tokenizer. Since you are billed, rate-limited, and context-limited in tokens, this one change touches almost every number in your capacity plan.
Context windows: same size, less text
The window is still 1M tokens on the affected models — but a token now covers less text. Anthropic's own figures: 1M tokens is roughly ~555k words (~2.5M unicode characters) on the new tokenizer, versus ~750k words (~3.4M characters) on Opus 4.6's. Practical consequences:
- Prompts that comfortably fit before may now overflow. Input alone exceeding the window returns a 400 "prompt is too long" on every model.
- Any token-denominated trigger you configured — compaction's default 150,000-token trigger, context-editing thresholds, your own truncation logic — now fires at less accumulated text than before. Recalibrate them, or conversations will compact or truncate earlier than intended.
- On Vertex AI specifically, requests at or above 200K tokens are charged at long-context rates — so tokenizer inflation can push borderline requests over that pricing threshold even though the text didn't change. (Anthropic bills the full 1M window at standard rates; never generalize one platform's pricing to the other.)
Costs: re-measure, don't multiply blindly
Per-token list prices did not rise with the tokenizer — Opus 4.7 and 4.8 cost the same $5/$25 per million tokens as Opus 4.6 — but the same workload consumes more tokens, so spend per document rises with the token count. The honest way to rebaseline is empirical: the token-counting endpoint is free (with its own rate limits) and model-specific, so run your real prompt corpus through it against the target model:
from anthropic import Anthropic
client = Anthropic()
for model in ("claude-opus-4-6", "claude-opus-4-8"):
n = client.messages.count_tokens(
model=model,
messages=[{"role": "user", "content": corpus_sample}],
)
print(model, n.input_tokens)
Two cautions from the official docs: counts are model-specific, so recount against the model you will actually run; and never estimate Claude tokens with OpenAI's tiktoken — it undercounts Claude tokens by roughly 15–20% on typical text, more on code and non-English content. Note that Sonnet 5's pricing moves the other way during its introductory window ($2/$10 through August 31, 2026), which can mask the tokenizer effect in your invoices until standard pricing resumes.
Rate limits and quotas inflate too
Input-tokens-per-minute limits are consumed by whatever the tokenizer counts. The same traffic, measured ~30% larger, eats headroom faster — on the Claude API's ITPM limits, on Bedrock's token-per-minute quotas, and on Foundry's ITPM-based limits alike. If your dashboards track "documents per minute," the ceiling just moved even though the published quota didn't.
Caches: invalidated at the moment of upgrade anyway
Prompt caches don't survive a model switch regardless of tokenizer: changing the model string invalidates the existing cache, and the first request on the new model writes it fresh. Your cache_control breakpoints keep working unchanged. What the tokenizer changes is the economics around them: cached prefixes are now more tokens, so cache writes (1.25x or 2x base input price) and reads (0.1x) both scale up ~30% in absolute terms — while the relative savings of caching stay the same. Watch the minimums, too: cacheable-prefix thresholds differ by model and platform (Fable 5 has a 512-token minimum versus 1,024 on Opus 4.8 — but still 1,024 on Bedrock). Expect a one-time cache-write cost spike at cutover and a brief dip in hit-rate metrics.
count_tokens against the target model → update cost-per-request estimates and budget alerts → re-derive truncation/compaction thresholds → check Vertex workloads against the 200K long-context boundary → expect a cache-write spike on day one → confirm ITPM headroom at peak traffic.Where to go next
The tokenizer is one of several breaking changes in this generation — see the thinking API upgrade path and cache invalidation on model change for the others, and the token counting guide for endpoint mechanics.