Claude Code · Feb 17 to Sep 3 · updated daily from my own logs

18,040,836,087

tokens through Claude Code since February.

Not a flex. A ledger. A token is about four characters, and every message you send re-reads the whole conversation, so the number gets big fast. What matters is not the size. It is that 94% of it was cache reads at a tenth of the input price, that the model only wrote 0.8% of it, and that the bill that actually hurts is the session limit, not the invoice.

  • $18,045at API list price
  • $926paid for Max seats
  • 5,975prompts typed
  • 410Mbiggest day, Sep 2
  • 199days on record

01

A token has four prices, and you mostly pay the cheapest one.

The API bills four kinds of token. Fresh input you send. Output the model writes. Cache writes, when new context gets stored. And cache reads, when the model re-reads what it already stored. On Opus those run $5 / $25 / $6.25 / $0.5 per million. Output is fifty times the price of a cache read.

Here is my whole ledger split that way. The purple is the conversation being re-read on every turn. The sliver at the end is everything the model ever wrote back.

  • cache reads 93.8%

    16.92B tokens · $0.50 per million · the conversation re-read from cache on every turn

  • cache writes 5.3%

    958M tokens · $6.27 per million · new context written into the cache

  • fresh input 0.09%

    16.9M tokens · $5.02 per million · uncached prompt tokens

  • output 0.82%

    148M tokens · $25.08 per million · what the model actually wrote

This is why a 400M-token day is not a $4,000 day. It is also why the one thing that wrecks a session is anything that breaks the cache, because the same tokens suddenly cost ten times more and eat the limit ten times faster.

03

Every day since Feb 17.

The ramp is the story. Spring was a few million tokens a day on Opus 4.6 and 4.7. Summer, once agents started running agents, is hundreds of millions. The plan bands are shaded. The grey block in July is the fortnight where no log survived.

Tokens per day, Claude Code and Codex

as of Sep 3
stacked: cache reads under everything else. Before Jul 16 only the thin line (input + output) exists.
Before Jul 16 only input and output exist per day (the dashed line), because Claude Code deletes session logs after about a month and its stats cache stops at June 30. Cache reads for those days are only known as a lifetime lump. 14 days in July carry prompt counts and nothing else. Codex logs also begin Jul 16, so the Codex view is not a spring-to-summer comparison.
  • Feb1.1Min+out only
  • Mar30.8M$32
  • Apr1.6M$3
  • May11.9M$14
  • Jun1.0M$2
  • Jul1.33B$1,159
  • Aug2.29B$3,350
  • Sep505M$1,039

04

The limit is the real bill.

A seat does not charge per token. It gives you a 5-hour window and a 7-day window and meters both. So the question that matters on a seat is not what a million tokens costs, it is how many million fit in a window before the window closes on you. I poll both accounts every ten minutes and divide the movement in the window by the tokens burned between polls.

Max 5x personal32.5 Mtok per window

3.07% of the window per million tokens · peak 97% · pinned at 100% in 0 of 17 polls · measured on 27 Mtok

Team work59.9 Mtok per window

1.67% of the window per million tokens · peak 100% · pinned at 100% in 35 of 142 polls · measured on 159.2 Mtok

At my cache profile a Team seat holds about 59.9 Mtok per 5-hour window and Max 5x about 32.5 Mtok. On a heavy day I burn 13 Mtok an hour, which is 2.5 hours of runway on 5x and 4.6 on Team. The poller caught the Team window pinned at 100% in 35 of 142 polls. Every one of those is ten minutes of work that did not happen.

Polling started Sep 2. polled every 10 minutes since the tracker went live; small sample, read as a data point. Anthropic does not publish the window sizes; these are measured, not quoted.

05

By model, and the Codex column.

modelsharetokensat listin / out / cw / cr per Mtok
opus-4-844.4%8,003,110,215$7,4035 / 25 / 6.25 / 0.5
opus-4-621.1%3,800,495,054$3,9985 / 25 / 6.25 / 0.5
haiku-4-511.2%2,025,004,798$4451 / 5 / 1.25 / 0.1
opus-4-78.4%1,520,936,324$1,6825 / 25 / 6.25 / 0.5
fable-57.4%1,336,916,102$2,64110 / 50 / 12.5 / 1
opus-53.9%699,861,042$6325 / 25 / 6.25 / 0.5
fable-5-12.4%428,012,023$95210 / 50 / 12.5 / 1
sonnet-4-61.1%205,312,531$2833 / 15 / 3.75 / 0.3
sonnet-50.1%21,187,998$93 / 15 / 3.75 / 0.3

Codex, side by side

2.74Btokens since Jul 16
21,162turns
$2,213at a proxy list price

priced with a gpt-5.x proxy table (5 / 30 / 0 / 0.5 per Mtok); Codex rollouts carry cached input, no cache-write. Same machine, same weeks, same kind of work; the Claude column is the one I read every day.

06

How I keep the meter down.

The biggest problem with these tools is not a bad answer. It is the session closing on you at 2pm, or paying API money for work a seat already covers. Everything below follows from the numbers above.

  1. Keep the cache warm. 94% of my tokens are cache reads at a tenth of the price. Editing early context, swapping system prompts mid-session, or letting a tool dump a huge file into the top of the conversation invalidates the cache and reprices the whole session upward.
  2. Compact before the window does. Every turn re-reads the conversation. A long session at 150K context costs 150K per turn even when the turn is one line. Compact when the work changes shape, not when the limit warning shows.
  3. Hand long reads to subagents. A subagent reads the ten files and returns a paragraph. The main conversation pays for the paragraph on every later turn instead of the ten files.
  4. Pick the plan from window math, not the price tag. Team holds 59.9 Mtok a window against 32.5 on Max 5x at my profile. Measure your own burn per hour, divide, and you know how many hours a window buys you before you sign up.
  5. Pay API rates only for work that cannot sit in a seat. Cron jobs, pipelines, anything that runs while you sleep. Interactive coding on an API key is the priciest way there is to buy tokens.

07

Method and gaps.

Every number on this page is read from files on my Mac, not from Anthropic. A small Python poller logs the OAuth limit windows every ten minutes and ingests the per-turn usage that Claude Code and Codex write to disk. A daily job aggregates it into a JSON feed and this page is built from that feed. No session transcripts, project names, or account identifiers leave the machine.

  • range2026-02-17 -> 2026-09-03 (America/New_York days)
  • stats-cache.jsonClaude Code's own /stats cache; dailyModelTokens = input+output only (no cache) per day per model 2026-02-18 -> 2026-06-30; modelUsage = lifetime per-model totals INCLUDING cache read/write through 2026-06-30; dailyActivity = messages/sessions/tool calls per day from 2026-03-19
  • history.jsonlevery prompt typed into Claude Code with timestamp, sessionId, project; 5,975 prompts
  • limits.db token_eventsper-turn usage from session JSONL (terminal ~/.claude/projects from Jul 16; Claude Desktop local-agent-mode-sessions Mar-Jul); dedup keep-max on requestId; cost = API list price
  • GAP2026-07-01 -> 2026-07-15: no token data anywhere local (stats cache stopped 2026-06-30, session JSONL older than ~30 days was cleaned by Claude Code, PokeTokenBar installed later). Prompt and session counts for those days still come from history.jsonl.
  • non_cache_tokens vs total_tokensnon_cache = input+output (what stats-cache tracks per day). total = input+output+cache_write+cache_read (what PokeTokenBar shows and what limits meter). Cache reads are ~90%+ of total on long sessions.
  • cache_incl_tokens before Jul 1Exact only as a Feb18-Jun30 lump (modelUsage). Split between Max 20x and Max 5x is an estimate: each model's lifetime total allocated by that epoch's share of the model's daily non-cache tokens.
  • plan epochsMax 20x 2026-02-17..2026-05-31 $200/mo; Max 5x 2026-06-01..2026-08-13 $100/mo; Team 2026-08-14..2026-12-31 $None/mo
  • pricing $/Mtok in/out/cache_write/cache_readfable 10/50/12.5/1 · opus 5/25/6.25/0.5 · sonnet 3/15/3.75/0.3 · haiku 1/5/1.25/0.1 (mirrors PokeTokenBar ModelPricing)
  • Team billingAug 14 onward is 'mixed': early Team usage was API-key billed, later covered by the seat; split date unknown, logs carry no billing marker.

generated 2026-09-03 04:32 · feed rebuilt daily · this page replaces a token tracker I ran in February and let die

built with Next.js · Tailwind · Claude · Remotion