# Prompt cache cost teardown, from a real month > A real month of Anthropic API usage, measured. The account wrote 2,810,172 tokens into caches and read 571,898 back, which is below break-even. URL: https://getculpa.com/prompt-cache-cost-teardown Last reviewed: 2026-08-02 ## Answer This is a real month of Anthropic API usage, measured rather than modelled. The account wrote 2,810,172 tokens into prompt caches and read 571,898 back, which is 0.204 reads per write against a break-even of 0.28. Culpa, a local-first LLM cost, margin, and forecast ledger, meters cache writes and reads separately, which is the only way that gap becomes visible. ## Why this happens Prompt caching is sold as a saving and it's really a bet. A write costs more than plain input and a read costs far less, so the feature pays only once enough reads land on each write. Anthropic publishes the multipliers that set the threshold, 1.25 times input to write a five-minute cache and a tenth of input to read one, and the algebra puts break-even a little over a quarter of a read per write. Below that line caching is a surcharge, and nothing in a dashboard announces which side of it you're on. ## What this usually looks like - Caching was switched on months ago and nobody has measured what it returned. - Cache writes and cache reads appear as one number, or reads never appear at all. - Spend rose in the same period caching went live and the two were treated as unrelated. - Something variable sits near the top of the cached prefix, so it changes between calls. ## Common mistakes - Treating caching as a saving rather than as a bet with a threshold. Why it hurts: Below roughly 0.28 reads per write it costs more than not caching, and the direction is invisible without the two counts. Do instead: Compute reads per write from your own export before assuming the feature is helping. - Caching a prefix that changes between calls. Why it hurts: Every call writes a fresh cache and none of them ever read one, so the write premium applies to everything. Do instead: Order the prompt most-stable first and put anything variable after the breakpoint. - Enabling caching per model without checking each one. Why it hurts: One model in this month wrote 434,738 tokens into caches and read back exactly zero. Do instead: Read the ratio per model. An account-level average hides a model that never reads at all. ## Self-check - Download a usage export from your provider for a full month. - Total the cache-write tokens and the cache-read tokens separately. - Divide reads by writes. Below about 0.28 the caching cost you money. - Do it again per model, because one model can be far worse than the account average. - Read the top of your cached prefix and mark anything that could differ between two calls. ## One real month of Anthropic API usage Taken from the provider's own usage export for a single month, aggregated and stripped of workspace, key and account identifiers. The token counts and the two cache line items are the provider's figures. Everything below them is arithmetic on those figures. Cache-write tokens: 2,810,172 Cache-read tokens: 571,898 Reads per write = 571,898 / 2,810,172 = 0.204 Break-even = 0.28, from Anthropic's published 1.25x write and 0.1x read multipliers With caching, in input-rate units: (2,810,172 x 1.25) + (571,898 x 0.10) = 3,569,905 Without caching, the same tokens as plain input: 2,810,172 + 571,898 = 3,382,070 Caching cost 5.55% more than not caching at all that month Spend on writes was 27.2% of the month's bill against 0.45% on reads, about 60 to 1 The cache was working exactly as designed and losing money doing it. At 0.204 reads per write the feature was a 5.55% surcharge, and one model on the account wrote 434,738 tokens into caches it never read once. ## Cost figures Every figure carries its confidence and its source. No figure on this site is provider-reported. - 27.2% — share of one real month's Anthropic API bill spent creating prompt caches [provider-reported] Source: Anthropic usage export for the month, input_cache_write_5m line item, aggregated by scripts/analyse-usage-export.py. Account and workspace identifiers stripped on load. - 0.45% — share of the same month's bill spent reading those caches back [provider-reported] Source: Anthropic usage export for the same month, input_cache_read line item, from the same aggregation. The two line items stand at about 60 to 1. - 0.204 — measured cache reads per cache write, against a break-even of 0.28 [calculated] Source: 571,898 cache-read tokens divided by 2,810,172 cache-write tokens, both from the provider's usage export. - 5.55% — how much more the month cost with caching than the same tokens would have cost without it [calculated] Source: ((2,810,172 x 1.25) + (571,898 x 0.10)) divided by (2,810,172 + 571,898), using Anthropic's published cache multipliers on the export's token counts. ## FAQ Q: How many cache reads does a prompt cache need to pay off? A: A little over a quarter of a read per write on the five-minute duration. The write bills at 1.25 times input and the read at a tenth, so caching wins when 1.25 plus 0.1 reads comes in under 1 plus those same reads, which crosses at about 0.28. Q: Can prompt caching really cost more than not caching? A: Yes, and this month is a measured example. At 0.204 reads per write the arithmetic came out 5.55% above what the same tokens would have cost as plain input, because the write premium applied to everything and almost nothing was ever read back. Q: Why would a cache never be read? A: Usually because the cached prefix changes between calls, so every request writes a fresh entry and matches nothing. A timestamp, a session identifier or a retrieved document near the top of the prompt is enough to do it, and the feature still reports as enabled throughout. ## Sources - Anthropic pricing: https://platform.claude.com/docs/en/docs/about-claude/pricing Run the free Cost Leak Scan: https://app.getculpa.com/scan?source=pseo&slug=prompt-cache-cost-teardown&cluster=teardown Machine-readable index of every guide: https://getculpa.com/api/pages Human-readable index of every guide: https://getculpa.com/guides Site overview: https://app.getculpa.com/llms.txt Privacy: Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.