Repository navigation
Conversation
Refs simonw#46. Values are taken verbatim from the "Cache Hits & Refreshes" column of Anthropic's own pricing table at https://platform.claude.com/docs/en/about-claude/pricing (read 2026-08-22). Every filled value is also 0.1x that model's base input price, which is the documented multiplier on the same page: "Cache read (hit) | 0.1x base input price". Left as null: claude-3.7-sonnet, claude-3.5-sonnet, claude-3-opus, claude-3-haiku and claude-sonnet-4.5-200k. Those no longer appear in that per-model table, so there is no live vendor page to quote for them.
|
Found something while checking this that I think upgrades it from "a column is blank" to "the comparison picks the wrong winner", so I want to put it in front of you before this sits any longer.
// index.html:422 (and the sort comparator, :395/:398)
const cachedInputCost = model.input_cached || model.input;So when a Claude model is compared against one that does have At an agent-shaped mix (95.64% cache reads / 4.07% miss / 0.29% output, 10M tokens) 37 of the 289 Claude x cache-priced pairings currently sort the wrong way round. Worst offenders:
Fair caveat on scope: this only bites when the cached-tokens field is actually visible, and Two ways to read that, and it's your call which:
I'd lean on doing both, but (2) is the one that keeps this from recurring the next time a vendor ships before the data lands. Offer from the original description still stands, no rush: the remaining five ( |
Refs #46. All 17 Anthropic entries currently have
input_cached: null; this fills in 12 of them.Source: the Cache Hits & Refreshes column of Anthropic's own pricing table, https://platform.claude.com/docs/en/about-claude/pricing, read 2026-08-22. Every value below is quoted from that column, and every one is also exactly
0.1 × input— the multiplier documented in the prompt-caching section of the same page ("Cache read (hit) — 0.1x base input price").Left as
nullon purpose:claude-3.7-sonnet,claude-3.5-sonnet,claude-3-opus,claude-3-haiku,claude-sonnet-4.5-200k. These are no longer in that per-model table, so there's no live vendor page to quote for them. The 0.1x rule has held for every one of them since prompt caching shipped, so if you'd rather have 0.3 / 0.3 / 1.5 / 0.025 / 0.6 in there on the strength of the documented multiplier, say the word and I'll push a second commit. I didn't want to put a derived number into a file whose whole value is that it's quoted.python3 scripts/build.pyruns clean:current-v1.jsonpicks up 12 more non-nullinput_cachedvalues and is otherwise byte-identical.Two things I noticed while checking, happy to send either as its own PR:
data/anthropic.json.Why I bothered with this column. For coding-agent workloads
input_cachedisn't a footnote, it's the answer. hungson175 measured one agent's real token mix over 8.04B tokens and got 95.6% cache reads, 4.1% cache misses, 0.29% output. At that mix the effective price is almost entirely the column that'snullhere. I ran 60 models through it and list input price overstates the real bill by a median 6.5x (range 3.4x–7.9x); the ranking barely moves, but the absolute numbers do.nullisn't wrong today — it just hides the number that matters most for that one (increasingly common) use case.