How we measure

Cheaper prints dollar figures. This page says exactly where they come from, what they prove, what they don't, and every pricing error we have found and corrected. If you only read one section, read Corrections.

Measured vs estimated

Measured — the gateway sat between your tool and the provider, so it recorded both the model you asked for and the model it served. The difference between them is arithmetic over two known prices. Shown without a qualifier.

Estimated — read from your local chat transcript after the fact. Cheaper infers which model was the session's baseline and assumes the cheaper calls would otherwise have run there. Shown as about $X.

The price catalog

Every rate is public list price in USD per million tokens, transcribed by hand from the provider's own pricing page, with the transcription date recorded as CATALOG_AS_OF. Nothing is interpolated, averaged, or inferred from a sibling model. A model we hold no published price for is unpriceable: it contributes exactly zero rather than borrowing a neighbour's rate.

The catalog models per-model cache read and write rates (including Anthropic's separate 1-hour cache-write rate, which is what Claude Code actually uses), long-context tiers, premium-latency SKUs, and dated promotional windows. The as-of date is shown on the gateway dashboard and in --json output, so you can always see how old the numbers are.

The baseline

The baseline is the priciest model your session's top-level turns ran on, ranked at published rates on a fixed 1M-in / 1M-out basket, at your session's own date.

Ties break on the model id, so the result never depends on the order lines happen to appear in your log files.

“Worth $X at list API rates”

Most people reading a Cheaper line are on a subscription. You are not being charged that number and we are not claiming you are. It is the metered value of the tokens that session moved: your tool's own token counts times the public per-token price of the exact models that ran, with the cache and long-context rules your provider would apply. On a flat-rate plan it is what you got for your fee.

It is not your invoice — we never see your invoice, and negotiated rates, committed-use discounts, credits and free tiers are invisible to us. It is not a savings claim — savings are a separate comparison against the baseline above.

What this does not prove

An estimated figure assumes you would otherwise have run that work on the baseline model. If you would have picked something cheaper yourself, your real saving is lower. Measured figures do not depend on that assumption.

Some harnesses make small-model calls natively, with no involvement from Cheaper. Where a harness tells us which calls were delegated, we credit only those.

Known limitations

Independent verification — pending. We intend to reconcile Cheaper's computed cost against real provider invoices monthly and publish the accuracy band here. That reconciliation has not been performed yet, so no accuracy figure is published on this page. We would rather say so than publish a number we cannot stand behind.

Corrections

Every pricing or presentation error we have found, what it did, and when it was fixed. The pricing errors below all made savings look bigger than they were.

FoundWhat was wrong
2026-08 Retired Opus rates on current Opus work. A single hardcoded tier bucket priced all top-tier Anthropic usage at $15/$75 per Mtok — Claude Opus 4's rate. Opus 5 costs $5/$25. Affected sessions were valued at 2.74× their real metered cost. Fixed by replacing tier buckets with a per-model catalog.
2026-08 Unknown models inherited a neighbour's price. Model ids resolved by longest prefix match, so an id the catalog had never seen adopted the nearest older entry's rate — claude-opus-4-9 resolved to claude-opus-4 and priced at the retired $15/$75. Fixed: matching is exact, and an unrecognized model is unpriceable.
2026-08 Savings compared capability instead of cost. A model's tier was inferred from regexes over its name, and the savings math used tier rank as a stand-in for price rank. Consequences: the baseline could vary with log line order (the same session could report $24 or $84), work that cost more than the baseline was discarded rather than subtracted, and the gateway priced routed calls at a tier average rather than the model actually served (a 50% over-report). All fixed; savings are now computed in dollars from the catalog.
2026-08 A fabricated counter on this website. The homepage footer displayed a “$X saved” figure generated by Math.random() on a timer, resetting on every page load. It was never connected to any data. It has been removed, and no aggregate savings figure is published in its place.
2026-08 An unlabelled example widget on the savings-tracker pages. The cheaper peek terminal mockup on the AI-tokens, Claude Code, Codex, Gemini, Grok, Qwen and DeepSeek tracker pages showed a specific, real-looking table of calls, tokens and dollar figures with nothing on the widget itself marking it as a sample. Surrounding prose called it illustrative, but a screenshot or a skim of the widget alone could read as real output. Fixed: every copy of the widget now carries an “Example output — not your data” label in its own title bar and again beneath the dollar figures, in real (non-decorative) text.
2026-08-07 A call the price catalog couldn't value was still booked as spend, at today's date. When the gateway could not price a routed call, it fell back to estimating that call at today's rate and still added the result to the spend total — so a call from a past date could be valued at a promotional rate that didn't exist yet on the day it actually happened, and the row was simultaneously counted as “excluded” and included in the dollar figures. Fixed: such a row now contributes to the exclusion count only, never to a dollar total.
2026-08-07 “vs all-frontier” could never show a loss. The comparison against an all-top-tier baseline was floored at zero, so a period where routing genuinely cost more than always using the top tier was reported as an honest-looking $0.00 instead of the real (small) loss. Fixed: the comparison is now signed, and a negative renders as one.

Spot a wrong price? The catalog is a single reviewed file in the open-source repo — open a PR against cli/src/peek/models.js with the provider URL.

← Back to Cheaper