Skip to content

Usage CSV Analyser

Paste a usage export, pick any column, and get spend per group with shares and cost per request.

Total spend in this file
$116.62

4 groups by feature. The largest is doc-summary at 30.3%, and the top three are 81.1% of the spend.

doc-summary
$35.35 · 30.3% · $0.04/req
search-answers
$31.29 · 26.8% · $0.0085/req
chat-assistant
$27.93 · 23.9% · $0.0037/req
tagging
$22.05 · 18.9% · $0.0012/req
Rows parsed
8
Columns found
date, feature, model, requests, total_tokens, cost_usd
Grouping column
feature
Cost column
cost_usd
Request column
requests
Distinct groups
4
Total tokens
33,320,000
Total requests
30,540
Average cost per request
$0.0038
Share held by the top 3 groups
81.1%
What this assumes: Nothing you paste leaves this page. The parsing and the arithmetic run in your browser; there is no upload, no request and nothing stored. Check the network tab, or turn the connection off before you paste — the tool keeps working. The pasted text is also the one field kept out of the shareable URL, so a link you send carries the settings and not your usage. Column names are matched case-insensitively with spaces and underscores ignored, against these lists: grouping — feature, model, tag, user, userid, apikey, key, project, team, endpoint, service, label, name; cost — cost, costusd, totalcost, amount, amountusd, spend, charge, usd; tokens — totaltokens, tokens, tokensused, tokencount, numtokens; requests — requests, requestcount, numrequests, calls. If the automatic pick is wrong, the dropdown lists every column in your file. A row with no request count is counted as one request. Where there is no cost column, cost is derived from tokens at the single blended rate you enter, which will be wrong wherever input and output are priced apart — treat those figures as proportions, not as money.

Attribution is the first question, not the second

A total tells you what you spent. It never tells you what to do. The useful move on any usage export is to collapse it along one dimension — feature, model, key, customer, endpoint — and look at the shares, because spend on any of those is almost always concentrated. One feature, or one customer, or one model, is usually most of the bill, and it is frequently not the one anyone assumed.

Two columns in the output are worth more than the totals. The share column tells you where optimisation effort is worth spending: a 30% saving on something that is 4% of the bill is not a project. The cost per request column tells you something different and more actionable — whether a group is expensive because it is popular or because each call is heavy. A high-volume feature with a low per-request cost is working as designed; a low-volume feature with a very high per-request cost is usually a prompt that grew, a retry loop, or an agent with no step limit, and it is the one to open first.

The limits are worth stating. This reads what your export contains, and exports differ: some give you cost, some give only tokens, and if input and output tokens are billed apart then a single blended rate cannot reproduce the real figure. Rows that carry no cost and no tokens contribute nothing rather than an error. And attribution is only as good as your tagging — if half your traffic goes out under a single shared key with no feature tag, the biggest group in this table will be "the untagged half", which is itself the finding.

Usage CSV Analyser · Multigrid