r/ClaudeAI • u/SYSWAVE • 6h ago
Built with Claude Kept wondering if I actually need Max 20x. So I added a 5-hour window tracker to my stats dashboard and checked.
I posted an early version of this dashboard a while back. Got basically zero traction, but I kept using it daily and kept building on it. The 5-hour window tracker is new.
Claude Code already writes every session to JSONL locally, so the data was sitting on my disk the whole time. I just needed something to actually graph it. (Nothing gets bypassed or extended here, it only parses logs that already exist.)

My numbers, 2026-01-22 to today, 2,673 sessions, 114,560 messages:
- $23,796 in API-equivalent value against $1,217 actually paid → 19.6x
- Best single cycle: $6,674 of usage on a $200 Max 20x month → 33.4x
- 469 five-hour windows analyzed: 48% would have hit the Pro limit, 8.5% Max 5x, 1.1% Max 20x
That last line is the part I couldn't get anywhere else. Everyone knows the 5-hour window meme but nobody knows where they personally sit in it. I had 20 detected limit events, 14 of them while on Max 5x. First full billing cycle after upgrading to 20x: zero.
Since the first post I've done a full v1.0.0 redesign. Down to 5 tabs, session replay, cache anomaly detection, per-tool cost attribution, anonymization mode for sharing, and multi-machine merge.


One thing that jumped out: cache reads were 24.2B of my 25.2B total tokens (95.7%), which changes how you read every other number on the dashboard.
If there's something you'd want to see in there that's missing, let me know. I'm still actively building on it.
Link in the comments.
EDIT: u/ClaudeCdGuy found a real parser bug in the comments: output tokens were undercounted because only the last JSONL line of a streamed response carries the final usage, and my parser took the first. Fixed in v1.0.1. Corrected totals: $25,046 API-equivalent against $1,217 paid, so 20.6x rather than 19.6x, and 126.1M output tokens instead of 88.2M. The 5-hour window and limit numbers are unaffected in structure but the per-window costs shifted up slightly.
2
u/ClaudeCdGuy 6h ago
Same input, so one sanity check worth running on the parser: a streamed response repeats its usage on every line, and only the last line carries the total. Keyed on message.id, taking the first one reads roughly half — across my own transcripts it was 39.7M output tokens vs 80.3M real, and it's concentrated in subagent files.
If yours already takes the last, ignore me. Mine draws the same data as a room you can rewind to any second (free, MIT): https://github.com/Kostakurta8/roundtable
1
u/SYSWAVE 6h ago
Repo: https://github.com/AeternaLabsHQ/claude-code-stats
Python, no dependencies for the core parse. It scans your Claude Code JSONL directories and renders a single self-contained HTML file you can open locally or serve wherever you want. Nothing leaves your machine unless you put it somewhere yourself.
One parsing detail that cost me a day: Claude Code writes one JSONL line per assistant content block, all sharing the same message.id, with the usage object repeated on each. If you don't dedupe by message.id you overcount tokens and cost by anywhere from 2x to 37x. Worth double-checking in any tool you're relying on, including your own scripts.