Bill audit
Import OpenRouter activity or a normalized OpenAI or Anthropic usage CSV. We keep unmatched models and rejected rows visible. Supported workloads compare catalogue rates at the supplied input:output mix and mean prompt length. Missing spend stays unknown. The file is read with FileReader only; nothing is uploaded, and parse plus verdict use the catalogue already on this page.
Checking a repository rather than a bill export? Check a repo reads a README or package.json in this browser too.
Choose a provider when the headers are ambiguous. OpenAI and Anthropic support uses the normalized formats shown here, not an assumed native dashboard layout.
Example headers and limits
OpenRouter activity CSV
date,model,provider_name,requests,prompt_tokens,completion_tokens,usage
OpenAI usage — normalized CSV
model,input_tokens,output_tokens,num_model_requests,input_cached_tokens,input_cache_write_tokens,batch,service_tier,spend_usd,currency
Anthropic usage — normalized CSV
model,uncached_input_tokens,output_tokens,requests,cache_read_input_tokens,cache_creation_input_tokens,service_tier,spend_usd,currency
Required: model and both token columns. Counts must be non-negative whole numbers. Supply a request count for a mean prompt length. Missing or blank spend is unknown; explicit 0 is zero. Currency must be USD. Cached tokens, batch, non-standard service tiers, and unrecognised billing columns withhold affected comparisons. For normalized imports, missing cache or tier flags also withhold comparisons. Do not turn unknown fields into zero.
Every sample is synthetic demonstration usage, not a customer bill. The transparent OpenRouter sample and normalized provider samples use the same parser as your file. Each includes an unmatched model. Normalized samples also demonstrate unknown spend.
Questions this page answers
Does this audit upload my bill?
No. The CSV is read with FileReader in your browser. Parse and verdict use the catalogue already on this page. Nothing is uploaded.
What does strictly dominated mean here?
At the observed input:output mix and mean prompt length, another catalogue model scores at least as high and costs no more under standard uncached rates, with at least one strict improvement and a matching capability envelope. This is a catalogue scenario, not invoice savings. Unrated is not scored zero. Unmapped rows stay in a visible bucket.
Are Artificial Analysis scores used?
No. Public dominance verdicts on this page use the LMArena lens already in the catalogue. Artificial Analysis figures are not published as ranking headlines here.