The rules
How every number is made
Every figure on this site is one of three things: a measured reading with a collection timestamp, a sourced vendor fact with a citation, or a declared assumption you can see and change. When none of the three exists, we show the reason there is no number — a wrong price is worse than no price.
What is measured, and how often
Four collectors run on our servers — no browser is involved, and they run whether or not anyone visits:
- + Hugging Face Hub, daily: downloads, likes and the Hub's own trending score for every tracked model. The download counter is the Hub's rolling 30-day window — not an all-time total, and not unique users.
- + OpenRouter, daily: API prices per million input and output tokens (catalogue licensed CC BY 4.0). Models are matched by their published Hugging Face id, never by name similarity.
- + Vast.ai, daily: rental offers per GPU class. We publish the median of verified, currently rentable on-demand offers; multi-GPU hosts are normalized to a per-GPU price. A price movement below 2% is displayed as steady — marketplace noise is not a trend.
- + The catalog itself, weekly: every curated model's published config.json and GGUF file listing is re-read, so a re-quantized repo updates our numbers without anyone remembering to run a script. Newly discovered releases wait in a review queue — a person assigns their roles before they appear anywhere.
The three badges
● Collected marks a measured reading and names its age; the exact instant sits in the markup, so the claim can be checked. A section's freshness is always its oldest contributing source — a fresh price run is not allowed to vouch for old download numbers.
◇ Estimated marks a figure computed from our curated catalog by a deterministic engine — real inputs, real arithmetic, but not a live reading.
◈ Demo data marks placeholder values that exist so the interface can be developed offline. You should not see this badge in production; if you do, a data source is down and the page is telling you so rather than pretending.
The Heat Score
Heat answers one question — how much momentum and relevance does this model have right now — and it refuses to pretend it is objective truth. It is a weighted average of five components, every one a measured signal expressed as the model's percentile among all models with a full week of history:
35% trending level (Hugging Face, today)
30% 7-day download growth (Hugging Face)
15% 7-day trending change (our own daily history)
15% 30-day downloads (Hugging Face)
5% Hub likes (Hugging Face)
heat = 100 × Σ(weight × percentile) / Σ(weight of available components)
Percentiles, not raw counts, so a four-digit trending score and a nine-digit download counter can share one scale without magic constants. When a component cannot be measured for a model, its weight is renormalized across the rest — and the coverage is published as the confidence figure next to every score. Absence lowers certainty; it never silently lowers the score.
The rules around the number: a model gets no score at all until its history spans seven days (“ collecting” is not “cold”); download momentum only counts on a baseline that is itself about a week old and at least 10,000 downloads deep, so a tiny new repo cannot fake a breakout; the direction arrow needs a move beyond ±5% of the trending baseline (downloads only ever vote “up” — a falling 30-day window usually means an old spike aging out, so only trending may vote “down”). BREAKOUT marks a model in the top 5% of download growth with confidence ≥ 65%; COOLING marks a previously relevant model whose trending score fell by a quarter or more over the week.
Two components of the original design are deliberately absent: cross-provider usage momentum (no public source exists — the one we wanted is login-gated) and benchmark quality (we refuse benchmarks entirely). The board keeps showing every raw signal beside the composite, and the score is recomputable from the stored daily history alone — there is no hidden state to trust.
The local-fit estimate
Whether a model runs on your machine is arithmetic, not opinion:
estimated memory = measured weights + computed context cache + runtime overhead
usable memory = your memory − safety margin
The weights figure is the byte size of a real, published GGUF file — never derived from a parameter count. The context cache is computed from the model's own config.json: layer by layer, respecting hybrid attention (many modern models cache full context on only a fraction of their layers), sliding windows, and latent attention (which stores one compressed vector instead of separate keys and values). The safety margin reserves 12% of memory for the display, the OS and allocator overhead — and on Apple Silicon we plan with only 70% of unified memory, because macOS caps what the GPU may take.
When a model's attention shape is unpublished or one we cannot model, the site says UNKNOWN instead of guessing. Fit labels are working comfort levels, not benchmarks: we publish no quality scores and no speed claims.
The cost comparison
The calculator prices the same model three ways. Cloud uses the measured per-token prices; your own machine uses a sourced vendor list price (editable — what you actually pay wins) plus electricity from the vendor's power figure and your rate; rental uses the cheapest measured GPU class that actually fits the model. Usage volume, active hours, the input/output token split and the amortization window are assumptions, listed next to the result, every one changeable. A configuration that cannot exist — a model too big for the card — gets a reason, never a price.
What we refuse to publish
- + No quality benchmarks. We measure adoption and prices, not intelligence. “Most adopted” is written where others would write “best”.
- + No composite score without explainable inputs. The board ran without one for its first week, until the momentum history existed; the Heat Score above publishes its full formula, and every raw signal stays visible beside it.
- + No street prices. Hardware prices are vendor list prices with their date — retail moves too fast to quote as fact, so the field is yours to edit.
- + No provider's usage numbers dressed up as market share. OpenRouter's catalogue is OpenRouter's view, and is labeled as such.
Independence
Outbound links to providers route through an internal redirect and currently carry no referral codes; if that ever changes, the legal notice will disclose it first. Referral revenue never influences a ranking, a recommendation or a fit verdict — all three are computed from the measured data by deterministic code, and this page is the standing promise that it stays that way.
Corrections
Found a number that looks wrong? The contact address is in the legal notice. A correction that survives checking updates the data — and, where the mistake was systematic, the rule that produced it.