Open source · Inspectable · Zero ads

Measure the model.
Hold everything else still.

FairBench runs every model through the exact same tasks and harness, then swaps the harness and runs it again. No sponsored rank. No hidden weighting. Every score comes with receipts.

24original tasks

2reference models

2pinned harnesses

24/24task records kept

The founding matrix

Same suite. Two honest comparisons.

Read down a column to compare models under one harness. Read across a row to see what the harness changes for the same model.

Suite FairBench Core v1 / Tasks 24 / Attempts 1

Showing FairBench Core v1 results for Minimal answer v1.

Swipe or scroll horizontally to inspect every column →

FairBench Core v1: models compared with Minimal answer v1, 24 tasks, one attempt per task.
RankModelScore (%)95% CICoverageProvenance
1=SmolLM2 1.7B InstructGGUF Q4_K_M51.7%32.3%–71.2%24/24reference
1=Qwen2.5 1.5B InstructGGUF Q4_K_M45.8%25.0%–66.7%24/24reference

Scores are macro-averaged across four categories. Missing tasks, malformed output, and timeouts count as zero.

Open the full explorer →

The fairness contract

A score is only as fair as its conditions.

FairBench treats the model, harness, suite, and runtime as separate versioned inputs. Change one, and it is a new result.

  1. 01

    Same constraints

    Identical tasks, token limits, sampling settings, retry policy, and scoring rules.

  2. 02

    Pinned harnesses

    Every prompt, parser, and adapter is versioned and hashed. The wrapper is part of the result.

  3. 03

    Receipts, not screenshots

    Scores ship with item outputs, parser outcomes, latency, recorded runtime fields, and a recorded-configuration command template.

  4. 04

    Uncertainty stays visible

    Coverage, category breakdowns, failures, and confidence intervals live next to the headline score.

Proposed controls · Anti-benchmaxxing v0.1

The benchmark is public

A plan to seal the next answers.

The proposal combines open methodology, rotating seasonal suites, timestamped manifest commitments, and contamination canaries. The aim is to make scoreboard-only optimization harder without blocking audit.

We cannot make post-release optimization disappear. We can label it, preserve old runs, and make provenance impossible to hand-wave away.

Run it yourself

Your machine. The same protocol.

The dependency-free runner speaks to any OpenAI-compatible local endpoint. It records coverage and hashes the complete result bundle; catalog inclusion remains a separate maintainer decision.

Terminal
$ npm run fairbench -- run \ --model qwen2.5:1.5b \ --harness minimal-answer/v1 \ --suite core-v1 \ --out result.json
✓ 24/24 tasks recordedbundle SHA-256 written

Because intelligence should be measured fairly.