Point this at your Claude Code folder (100% private). It reads your own transcripts and shows what you really spent: which scheduled task, on which model, how many tokens each run took, and what that work would cost at metered API rates. Then it says which changes are worth making, and what each one is worth.
Two things surprise most people. Almost all of the cost is the conversation being re-sent on every turn, not the prompts they wrote. And a scheduled job that runs just before you sit down has already spent part of your plan’s limit, so you hit that limit sooner during your own work.
Runs entirely in your browser · nothing is uploaded · open your network tab and check
Choose your .claude folder
Choose the .claude folder in your HOME directory, which is where skills and scheduled tasks live: C:\Users\you\.claude on Windows, ~/.claude on macOS and Linux.
Most projects have a .claude folder too, and it is not the one you want: it holds settings and launch config, no skills and no routines. The folder is hidden on every platform, so if the dialog will not show it, type the path straight into the dialog's folder box.
It reads only definition files: skills, scheduled tasks, agents, commands, CLAUDE.md and the memory index. Transcripts, caches and node_modules are skipped and never opened.
Skips the dialog and re-reads the folder you chose last time. Your browser will ask permission again, which it always does after a reload.
or drop one here
Your browser will ask about uploading, and will count every file in the folder. That is its wording for giving a page access to a folder, and the count is of what it offered, not of what is read or sent. This page reads only the definition files listed above and sends nothing anywhere. If the number looks alarming, it means a parent folder was chosen: pick the .claude folder itself and it will be small.
Newer versions of Chrome and Edge ask a narrower question instead, and on those this page never enumerates the folders it skips.
Cannot pick a folder? Paste one file instead
Paste the contents of a single SKILL.md, agent or CLAUDE.md. Give it a path so it can be classified, for example skills/my-skill/SKILL.md.
What Claude actually used
These are measured numbers, not estimates. Every assistant message in your transcripts records the token counts the API returned, so this is what was really spent, and the model column names the model that actually served it.
Your transcripts are read in this page and go nowhere. They are streamed line by line and only the usage records are kept, which is about 7% of the bytes. Nothing is uploaded, and the network tab will show you that. It is the most private data on your machine, so it is worth saying exactly when it is read: from the moment you choose your folder, in this page, and nowhere else. The button below re-reads it after you have changed something.
Each row carries its own model, because a digest that runs a script and a task that writes an article are not the same job. Only models whose context window held that run are offered. Which of them does the work well enough is yours to judge: this page prices models and does not rank them.
Task or sessionRunsModelTokens / runAs meteredCould save
"As metered" is not your bill. It is what these tokens would cost at published API rates; a subscription has no per-token invoice. Cache writes cost more than our archive records, so the true figure runs a little higher.
"Could save" is a ceiling, not a promise. It prices the same tokens on the model in the selector, and only offers models whose context window held the run's largest single request. It cannot tell you whether the cheaper model does the work as well: move one task, then check it in the comparison further down.
Interactive sessions show no figure: you choose that model in the moment. The jobs that run unattended are the ones worth tuning.
What to do about it
Hand this prompt to Claude Code to implement the savings
Run it in Claude Code, in the folder these routines live in. A chat window cannot: it edits files.
The changes above, written against your routines with your numbers in them.
Written to be checked, not obeyed.
It makes Claude verify every number against your files, back up each routine, change one thing at a time, show the diff and wait for your yes. It cannot know your work, so read it before you run it and keep the last word.
Then come back and see if it worked
Press Compare. Each task is split at the moment its own model changed, found in your transcripts, so there is no date to remember. It then shows what actually happened to the tokens and the cost.
Nothing is stored to make this work: every run already records its own date, model and token counts. A model change is the only kind this can find on its own. If you changed something else, a prompt you shortened or a schedule you moved, put that moment in the box and it splits there instead.
What every session pays before it starts
Do not expect a big number here. This is the fixed part, and it is usually a tiny fraction of what you actually spend.
For scale: on one real setup a week of ordinary use came to 959 million tokens, and this fixed part was 0.03% of it. Almost everything was the conversation being re-sent on every turn.
It still matters, because it is paid on every run forever and it is easy to change. But the money is in how you work: shorter sessions, less carried along, and a smaller model on the jobs that do not need a large one.
Separately from the work above, a fixed block of text goes out at the top of every session and every scheduled run: your skill and agent descriptions, your CLAUDE.md, the memory index. It is sent whether or not anything uses it. It is small next to the work, and it is the one part you change by editing files rather than by changing how you work.
Loaded every session
0
tokens
Per month
$0
What is in that fixed part
Scheduled runs
A scheduled run sends that whole fixed block again, plus its own instructions, every time it fires. Three columns are yours to set, because none of the three is recorded on disk: the cadence, which Claude Code keeps server-side; the model, which a scheduled task does not declare; and the tokens a run, which starts at what the task itself costs to load.
A scheduled time is not a promise. If the machine is asleep or the app is closed when the time passes, the run happens at the next launch instead, which is usually the moment you start work. That is worth knowing before you move anything to the small hours.
Change that last one and this stops being a projection. The starting figure counts only the task's own text plus the fixed block, re-sent every run. What a run actually costs also includes the files it reads, the tool results it takes back and the text it writes, and none of that exists on disk to be counted. Take the real figure from a usage export in the bill auditor, type it in, and every column here is about what you are paying.
RoutineRuns / monthTokens / runModelPer month
The alternatives under each cost say FITS, not good enough. A model qualifies when its published context window holds the run and it does not publish a lack of tool-calling support. Both are specs. Whether it does your job well is a question about your work, and this site publishes no quality score for any model, so it cannot answer it and does not pretend to.
The second line, where one appears, is the cheapest that fits from the same provider. That is usually the one you can actually switch to: an agent runner is tied to its provider, so the cross-provider figure shows the size of the gap rather than a move you can make today.
What the numbers show
What this cannot see
Worth reading before you act on any of it. A cost tool that implies it counted everything is worse than no cost tool.
Tool schemas from MCP servers, in the estimated figures. They are usually the largest single item a session loads, often several times everything else, and they are produced by the servers when they connect rather than stored on disk, so nothing on your filesystem can count them. The measured numbers from your transcripts are unaffected: those are the counts the API returned, and they already include everything.
The scheduled-runs table is a projection, not a measurement. It starts from what a task costs to load and cannot know what a run then reads, writes or takes back from a tool. The usage section above does measure that, from your transcripts, so trust those numbers over the projection wherever both appear.
Anything a plugin brings with it. A plugin marketplace on disk is a catalogue of skills and agents you could install, and nothing there says which are actually installed and loading. Counting the catalogue overstated one real setup by 31 skills and 34 agents, so it is excluded entirely. If you run installed plugins, the fixed part is larger than shown here, not smaller.
Whether any of it is worth keeping. This reports what text costs and where the same text is paid for twice. It has no opinion on whether a description is too long or a routine too frequent, because that is a question about your work and we publish no quality judgments about anything.
Tokens are estimated at four characters each, the same estimator used across this site. Real tokenisers differ by a few percent per provider, so treat these as close rather than exact. Rates come from our own price archive.