vccs
Composable charting components for Vue 3, ported from Recharts
Rank 364 AI models by independently measured capability, then compare what they actually cost across 55 providers. 92% of rated, priced models have another on the list that scores at least as high, co
DataPython · JavaScriptGitHub @LenvanderhofOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Compare AI models and prices. Inspect the evidence. Install skills, agent profiles and read-only MCP tools.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Best first. Then price. Compare models. Inspect the evidence. Bring the checks into your own workflow.
Undominated.ai compares AI models by independently measured capability and published price. The website brings together model comparisons, provider offers, cost tools and reviewed AI resources. This repository supplies the installable skills, portable agent profiles, CLI and read-only MCP server, plus a public place to report corrections.
Live skills directory captured on 2026-10-07. Browse the current page for the latest reviews.
The website directories contain **71 skills, 72 agent defiRead the full README ↗Most AI “value” tables invent a score, then sort by it.
Undominated.ai does the opposite. It ranks language models on independently measured capability first, then compares what they actually cost across providers. A model is named as dominated when another scores at least as high and costs no more, and is better on one of the two. A model that has not been measured is unrated, never zero.
130 of 142 rated, priced models have an alternative on the board with a higher score or a lower price, with neither dimension worse. They cost a median 6.6× the cheapest such alternative. 12 are not. That set is the value frontier.
Every catalogue and directory figure on this page is generated from the live site by scripts/refresh-readme.mjs and scripts/build-floor-table.mjs, last on 2026-10-29 (437 catalogue listings, 58 provider labels). CI checks them, because a README that states a number by hand states a wrong one within the week. The live board is still the source.
The dearest input price in the catalogue is about 3,214× the cheapest. That is not a rounding error. It is the reason a “value score” is a marketing instrument: it can hide a worse-and-dearer row behind a single attractive number.
Undominated.ai publishes the uncomfortable version:
| Claim the market likes | What this index actually does |
|---|---|
| A blended “value” rank | Capability first, effective price second. Never mixed into one score. |
| Unrated at the bottom | Unrated is not zero. Models with no score on the benchmark the board ranks on are listed by price and kept out of quality order. The methodology page states the current share. |
| Integer ranks as fact | Significance ranks. Models the benchmark cannot separate share a rank: today the published confidence intervals leave 73 distinct ranks across 142 positions. |
| “Cheaper is better” | Cheaper is cheaper. A model is dominated when another scores at least as high and costs no more, and is better on one of the two. The other is a clean replacement only when it keeps every recorded capability: context window, maximum output, input modalities, tool use and reasoning. |
| Headline $/M | 72 of the 437 catalogue listings change rate past a context threshold. The board reprices the row when your prompt crosses it. |
| Affiliate “best” lists | No cut of inference. No affiliate. No paid placement. No gateway. |
The method, the hedges and the licensing limits: undominated.ai/methodology.
Every route answers a decision, not a document type.
Choose a model
| You want to | Open |
|---|---|
| See what is actually worth buying | Leaderboard · Best by lens |
| See the 12 nothing dominates | Frontier · Quality knee |
| Test the model you already use | Check · Check a repo |
| Filter by requirements | Model finder · Comparisons · Alternatives |
| Find the cheapest model above a quality floor | Cheapest at |
| Replace a retiring model like for like | Migration guide · Deprecations |
| Browse every publishable model | All models · New releases |
| Rank image, video or embedding models the same way | Images · Video · · |
Understand the price
| You want to | Open |
|---|---|
| Estimate a workload or check a bill | Cost calculator · Bill audit (client-side; no upload) |
| Compare subscription plans to API | Plans |
| See whether shopping around is worth it | Providers · Spreads · OpenRouter or direct |
| See where a headline rate changes | Context cliffs · Reasoning price · Reasoning effort |
| Use cheaper delivery conditions | Batch · Cached input · Off-peak |
| Follow what moved | Price changes · The wire · Now |
| Avoid named pricing failure modes | Traps |
Run it yourself
| You want to | Open |
|---|---|
| Ask whether an open-weight model fits your machine | Self-host · Open weights · Open against closed |
| Check what a weight licence allows | Licences |
Build with AI
| You want to | Open |
|---|---|
| Pick a coding agent, editor or model client | AI tools |
| Find reviewed instructions, roles and integrations | Skills · Agents · MCP servers · Workflows |
Check the method
| You want to | Open |
|---|---|
| Read how ranking is computed | Methodology · Benchmark guide · Glossary |
| See which adjacent ranks the benchmark cannot separate | Significance · Blind rank test · Disagreement |
| Hold the commercial boundaries | Independence |
| See applied corrections, or file one | Corrections · Report |
| Read the data as JSON, or embed a verdict | API · Badges · Press kit |
flowchart LR
Q["What am I buying?"] --> L["Leaderboard"]
L --> F["Frontier"]
L --> C["Check my model"]
L --> P["Price: calculator · plans · providers"]
L --> N["Now · dated stamp"]
L --> B["Build: tools · skills · agents · MCP · workflows"]
C --> M["Methodology"]
F --> M
P --> M
N --> M
M --> R["Report a wrong figure"]
English is the source language. Other locales ship as machine translation with numbers, model names and provider names left untouched. Model pages stay English-only.
The Skills, Agents, MCP servers and Workflows directories list 759 skills, 401 agent definitions, 333 MCP servers and 88 workflows, from the published indexes reviewed 2026-10-14. Each third-party entry is read at a pinned source revision and records its licence, permissions and what was not tested. A source review is not a runtime test or a security certificate.
This repository supplies the installable skills, portable agent profiles, CLI and read-only MCP server.
Check a model and quote its published verdict:
npx [email protected] google/gemini-3.7-flash --json
Use a skill. Run this in your terminal. The Skills CLI lets you choose your AI tools, project or global scope, and installation method:
npx skills add Lenvanderhof/Undominated.ai --skill undominated-evidence-audit
Our own installer also offers guided setup:
npx undominated-check install
# Or open setup for one bundled resource:
npx undominated-check install undominated-evidence-audit
Choose one or more supported tools and project/global scope, review the destinations, then confirm. Cancel before confirmation to leave files untouched. Version 0.5.0 bundles eleven original skills, six agent profiles and the MCP server; it verifies file hashes and refuses existing destinations. Explicit flags remain available for scripts, and MCP registration remains a separate manual step. Supported targets and scope. Node.js 22.12+ is required; offline skill checks use Python 3.10+.
Connect an MCP client. Use npx with arguments ["--yes", "[email protected]"]. Its five read-only tools retrieve model details, verdicts, the frontier and resource reviews. It does not install resources or route inference. MCP setup and examples →
Portable agent profiles define specialist roles; copying an AGENT.md does not register a native subagent. Choose a role →
Copy a badge. The SVG is the published verdict. Swap the key for the model you ship.
[](https://undominated.ai/models/google__gemini-4-argon/)
<key> is the same segment as /models/<key>/. Replace / and : in the model id with __. The badge states one model's dominance verdict at the balanced workload on the LMArena lens, with the date it was computed. It changes when that verdict changes. Unrated is labelled unrated, not scored zero. All badge forms.
Warn on a dominated model in pull requests (GitHub Action):
# .github/workflows/undominated-warn.yml
name: undominated-warn
on:
pull_request:
jobs:
warn:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: Lenvanderhof/Undominated.ai/actions/dominated-warn@v1
continue-on-error: true
Warns. Never fails the job. Do not add it to required checks.
Resource reviews record source revisions, licences, permissions and untested scope. The original skills check explicit inputs with synthetic examples; a passing check does not certify source truth or production suitability.
| Explore further | What you will find |
|---|---|
| Getting started | Installation, examples and troubleshooting |
| Source library | Skill use cases, agent roles and version-specific installation coverage |
| Installer | Supported targets, scope and limits |
| Evidence | Release verification and claim boundaries |
| Platform guide | Pricing tools, research downloads, data APIs and dated observations |
| Contributing | Resource improvements, reproducible bugs and primary-source corrections |
| Security · Licence map | Reporting channels and component/data boundaries |
A model is dominated when another model in the catalogue scores at least as high and costs no more under the selected workload, and is better on one of the two. A higher score at the same price counts, and so does the same score at a lower price. Scores are compared as published LMArena Elo point estimates, not significance ranks. The dominating model is a clean replacement only when it can also do everything the first one can: context window, maximum output, input modalities, tool use and reasoning. Otherwise the index names what you would give up.
A model is on the frontier when nothing in the catalogue dominates it under the selected lens and workload: nothing scores at least as high for less, or higher for the same price.
That is a Pareto statement, not a vibe. Chartreuse in the interface is reserved for frontier membership. It is not a brand highlight colour.
Quality on the board is LMArena Elo, from the official CC BY 4.0 dataset, with the published confidence interval. Unrated is not zero. Artificial Analysis figures are not published here. Switching the task lens re-ranks the same prices; it does not invent a hybrid score.
Undominated.ai lives at undominated.ai. This GitHub repository is its public face: a landing page you can star, cite and link; the public tools and resource source; a public issue tracker for corrections; Discussions for questions; and dated catalogue dumps you can download without scraping the live board.
It is not a place to send scraped prices, and it is not the production application or a live price-feed checkout. The live board remains the source.
| In this repo | On the live site |
|---|---|
| This README and the platform guide | The ranked board, updated from sourced pages |
| Releases: dated JSON/CSV dumps and CLI releases | Prices, scores, significance ranks |
| The CLI, installer, read-only MCP server, original skills and agent profiles | Reviewed third-party skills, agents, MCP servers and workflows |
| Issue templates and Discussions | Methodology, independence, corrections log |
| Brand mark and screenshots | Dated stamps, Markdown, JSON and RSS |
Machine-readable surfaces stay on the origin, where they can carry provenance:
/llms.txt: facts for agents/data/catalogue.json: the public catalogue/data/frontier.json: the published frontier/data/resources/skills.json: reviewed resource indexes (also agents, mcp-servers, workflows)/badge/<key>.svg: README dominance badge/?format=md: any page as Markdown/now/: dated frontier stamp (hash on the page)/data/citation.json: what is citable, with hashesThe live board is rebuilt in place. A citation needs bytes that will still be there next year.
| What | Where |
|---|---|
| Dated dumps (JSON + CSV, no Artificial Analysis fields) | GitHub Releases named catalogue-YYYY-MM-DD |
| The same dumps on Hugging Face | LPH98/undominated-ai-model-pricing |
| How to cite | CITATION.cff · datasets/README.md |
| What is not citable | catalogue.json and per-model JSON: rebuilt on every deploy, no date in the path |
LMArena Elo in the dump is CC BY 4.0 from the official Hugging Face dataset. Vendor list prices are facts the vendor published. Artificial Analysis fields are not in the file.
If a live price, score or rank disagrees with a primary source, file it here. The form requires the model, what the page shows, what it should be, a source URL and the date you checked.
Security reports: open an advisory on this repository. Do not use a public issue for anything that would let someone alter rankings.
The charter: undominated.ai/independence.
Everyone publishes today's prices. Nobody publishes what the cheapest model clearing a fixed quality bar costs, tracked across dated snapshots, and that is the only series that answers the question, because a discount on one SKU is not the same as capability getting cheaper.
| Capability floor (LMArena) | 2026-08-24 | 2026-10-29 | Move | Cheapest today |
|---|---|---|---|---|
| ≥ 1200 | $0.0525 | $0.036 | -31% | openai/gpt-oss-20b |
| ≥ 1350 | $0.0525 | $0.06 | +14% | openai/gpt-oss-120b |
| ≥ 1400 | $0.0611 | $0.1125 | +84% | deepseek/deepseek-v4-flash |
| ≥ 1450 | $0.4961 | $0.145 | -71% | xiaomi/mimo-v2.6-flash |
Effective $/M on the balanced workload, from 28 dated snapshots. Generated by scripts/build-floor-table.mjs. The floors are append-only — a threshold is never edited in place, because a moved goalpost turns a series into marketing.
The floors are defined once and never moved. Every point comes from a dated, hashed snapshot that is published and citable; the archive only grows, so this series cannot be back-filled by anyone starting tomorrow.
Three families, shot around the Dual Witness mark. They are scene treatments, not a second logo: use them with attribution and never redraw the mark from a photograph.
The full set at full resolution, with the mark, the lockups and the usage rules: undominated.ai/press/.
LMArena leaderboard data on the site is used under CC BY 4.0 from the official dataset.
Artificial Analysis figures are not published on the site. There is no redistribution licence, so they inform what gets checked and never what a reader sees. This repository does not grant a sublicence to republish those scores, and it does not copy them into Git.
Vendor prices are facts the vendor published. Every live row is supposed to carry a source link and a fetch date. If one does not, that is a correction.
Software, skills, data dumps and brand assets carry different terms: see the licence map.