A weighted composite of human preference, automated benchmarks, pricing efficiency, multimodal coverage, and context length — scored from a single canonical dataset.
Failed to load data/models.json — {{ err }}
Loading models…
| # | Model | Vendor | Arena 30% | AI Index 30% | Price15% | Multi15% | Ctx10% | Total |
|---|---|---|---|---|---|---|---|---|
| {{ m._rank + 1 }} {{ m._rank + 1 }} |
{{ m.region }}
{{ m.name }}
{{ statusLabel(m.status) }}
|
{{ m.vendor }} | {{ m.sArena == null ? '—' : m.sArena }} | — {{ m.ai_imputed ? '~' : '' }}{{ m.sAI }} |
{{ m.sPrice }}
${{ fmtPrice(m.effective_price_usd) }}/M
—
|
{{ m.sMulti }} |
{{ m.sCtx }}
{{ fmtCtx(m.ctx) }}
|
{{ m.total.toFixed(1) }}
{{ tier(m.total).l }}
|
| No models match this filter. | ||||||||
Scores are computed client-side from data/models.json
{{ r.d }}
Coverage model, data provenance, and how to read each row
Each model is scored on two independent measurements: an Arena rating and an Artificial Analysis Intelligence Index. These boards do not always agree on which models exist. A model can be listed on both, listed on only one, or drop off one board after having been listed before. Requiring both boards to agree for a model to appear would silently delete legitimately ranked models — that is what this scheme replaces. A model is now ranked whenever it has an Arena rating, and its coverage is declared explicitly instead of being decided by deletion.
When a model has an Arena rating but no published AI Index, it borrows an estimate from models that sit close to it on the Arena scale:
Imputation only runs in one direction. Because Arena is a directly measured rating, models within a narrow Arena band are genuinely comparable, and their AI Index is the best available stand-in. The reverse — guessing an Arena rating from AI Index — is deliberately not done: the two boards measure different quantities, so their neighbourhoods are not interchangeable.
A model without an AI Index is not penalised to zero. That dimension is removed from the denominator and the remaining weights are re-normalised so they still sum to 100%. A missing score therefore costs a model its evidence, not marks.
The multimodal dimension is not a hand-maintained label. It is recomputed on every run from the model's declared input modalities (image, file, video, audio) as published by OpenRouter, by counting how many non-text modalities the model accepts:
Hand-assigned tags tended to drift: two models advertising the same modalities could carry very different values, which made the 15% weight impossible to compare fairly. Deriving the tier from a published list removes that inconsistency. A model with no OpenRouter listing keeps its previous tier, since there is no modality data to derive from.
Capability first. Arena 30% · AI Index 30% · Price 15% · Multimodal 15% · Context 10%. Price, multimodal capability and context are always available, so they never need imputation.
Every row states how much of it is actually measured. The overall total is only as trustworthy as its weakest input.
The Arena rating and the AI Index are both live values read from their boards on the most recent run. Nothing on this row is inferred. These rows are directly comparable with one another.
The AI Index was not published for this model, so it was imputed from Arena-nearby
models (±20 points) and is shown with a leading ~. The total is
provisional: it can be read as a reasonable placement, but it is not a measurement and
should not be compared too finely against a Verified row. The tooltip names how many
models contributed.
No longer listed on one or both boards, or no comparable neighbour existed to impute from. Its previous values are kept so it does not silently disappear, but the total is struck through and the row is dimmed. Treat it as an archived entry, not a current ranking. Shown by default; use “Hide stale” above the table to filter them out.
A dashed — in the AI column means both that the index is unpublished and that no
model within ±20 Arena points had one to borrow from. Rather than invent a number, the column is
left empty and the row is labelled Stale.
Canonical JSON · external leaderboards · price audit
{{ s.d }}