AIContenders

Evidence, not claims.

AI models are judged by clips and by numbers. A clip shows the one attempt that worked. A number shows how a model did on a test you will never see. Neither lets you check anything.

AIContenders is built on one idea: the same task, run on every model, in one place — with everything you need to check each result yourself.

The output is the evidence.

Every result is the working page the model returned — running live, clickable, at a stable link. Not a video, not a screenshot, not a score.

One task, every model.

Not a random pair on a random prompt. The same task goes to every model we run, so every model’s result sits in one list — and you can open up to nine of them live, side by side, and judge them yourself.

Everything needed to check it is on the record.

The exact prompt, the system instruction* every model receives, default settings for all, and the model version that actually answered — plus provider, time, tokens and cost whenever OpenRouter reports them.

Anyone can rerun it — even without us.

Looking is free and needs no account. With your own OpenRouter key you can run the same task on the same model in your browser, or take the prompt and the instruction and call the model directly. If you get something different, publish it next to ours.

Only models anyone can call.

Every model here is available through OpenRouter’s public API. No anonymous pre-release variants, no private builds.

Failures stay in the frame.

Errors, blank screens and broken physics stay next to the results that worked. Official results are never re-run for a better look; a run is repeated only when our own pipeline failed.

One run is a sample, not a verdict.

Models are not deterministic. That is why every task can be run again — and why the goal is to show how often a model succeeds, not whether it succeeded once.

“Official” means controlled, not “best”.

Official comparisons are run by us with the same setup, and only they feed the model ranking. Everything else is labelled as a community result and shown as reported.

Tasks come from people, not only from us.

Anyone with an account can submit their own task — once they have run it and published the result. Every week people vote, and the winning task joins the permanent pool of official tasks, with its author’s name on it. When we run it officially on the models, it feeds the model ranking too. Nobody, us included, knows which task will win next, so no model can be prepared for it — while the prompts everyone already knows are exactly the ones new models get polished on.

The ranking comes last.

It comes from blind votes on official results and shows its uncertainty. It summarises the evidence. It never replaces it.

How it works

Diagram. Anyone runs their own task and publishes the result. Every week people vote, and the winning task joins the official task pool, which we also fill with tasks we pick. Official runs give every model the same task and the same instruction. The results are the evidence. Blind votes on official results build the model ranking, which comes last. Anyone can rerun any result with their own key and submit their own task.

The system instruction every model receives (v1)

* The system instruction is a fixed message sent to every model together with the task. It asks for one self-contained HTML page that runs in the browser as delivered, with no commentary around it. Without it, models answer in different shapes — code wrapped in explanations, several separate files, a project that needs building first — and there would be nothing to compare. Anyone rerunning a result has to send the same instruction, so here it is in full.

Sent word for word as the system message, before the task prompt, to every model. It is the same in every interface language.

Return a single, self-contained HTML document that runs in a browser exactly as delivered, with no build step and no server.

Any web technology is welcome — plain HTML, CSS and JavaScript, React, Vue, Svelte, Tailwind, TypeScript, canvas, SVG, WebGL, Web Audio — as long as everything is either inlined in the file or loaded from a public CDN, and anything needing compilation is compiled in the browser.

Put all of your own markup, styles and scripts inside that one file. Do not reference local files that do not exist.

Return the file itself. Do not explain the code and do not wrap the answer in commentary.

Don’t take our word for it. Open a comparison, check the prompt, run it yourself.