Migrating: Sonnet 4.6 to Sonnet 5
Claude Sonnet 5 has itself been superseded by Claude Sonnet 5.5. If you are migrating now, check whether you can go straight there.
What changes
| From | To | |
|---|---|---|
| Model | Sonnet 4.6 | Sonnet 5 |
| Input / MTok | $3 | $2 |
| Output / MTok | $15 | $10 |
| Cache read / MTok | $0.30 | $0.20 |
| Min cacheable prefix | 1,024 | 1,024 |
| Context window | 1M | 1M |
| Effort levels | low, medium, high, max | low, medium, high, xhigh, max |
| Effort default | high | high |
| Thinking | Off unless requested (adaptive) | On by default — can be disabled |
| Forced tool_choice | accepted | accepted |
Three changes bundled into one same-tier move
This migration looks like a straightforward same-tier upgrade and carries three genuine changes worth checking independently: a lower per-token price paired with a tokenizer that counts more tokens for identical text, thinking flipping from opt-in to on-by-default, and a new top-of-range effort tier that didn't exist on the source generation at all.
The order to check them in
Re-count real prompts against the destination model first — this is the change most likely to
affect your bill and the easiest to verify with a single endpoint. Then confirm max_tokens still
covers a full response now that thinking runs by default. The new effort tier is the lowest
priority of the three, since it's optional capability rather than a compatibility requirement —
evaluate it against your hardest tasks rather than adopting it in the same cutover.
Why the price cut is smaller than the rate card suggests
Sonnet 5 launched at a lower per-token rate than Sonnet 4.6, first described as introductory; that
rate has since become its standard price. A lower headline rate makes this migration look like a
straightforward saving, and the tokenizer is what shrinks it: the same text produces more tokens on
the destination, so part of the per-token cut is spent paying for extra tokens. Whether a real
saving remains depends on your content mix — measure it with count_tokens against both models
rather than carrying forward a projection built on the source model's counts. Pair that recount
with the max_tokens check; both changes are silent on their own.
Consider skipping a step
Sonnet 5 has itself been superseded by Sonnet 5.5 at identical prices and with the same tokenizer,
so the recount you do for this move is valid for both. The difference is behavioural: Sonnet 5.5
rejects thinking: disabled and forced tool choice. If your code uses neither, moving straight to
the current Sonnet saves a second migration.
Related
See migrating: Sonnet 4.6 to Sonnet 5.5 for the direct jump, and what actually changed from Sonnet 4.6 to Sonnet 5 for the narrative walkthrough.
Verified 2026-09-30 against claude-api skill — shared/models.md, model-migration.md + SKILL.md model table and Anthropic's pricing and model-deprecation pages (canonical: https://platform.claude.com/docs/en/about-claude/models/overview, https://platform.claude.com/docs/en/about-claude/pricing, https://platform.claude.com/docs/en/about-claude/model-deprecations).