Skip to content

16 models. 9 suites.
Know what each model is good at.

CrystalBench measures whether a model can safely build and edit a living software spec. We run 9 tests through the real product and score the resulting database state, not the model's claims.

Overall winner
Kimi K382% weighted
Best under a dollar
$0.43GLM 5.2 · default — 71.8%, 12th of 34
Effort verdict
UnsettledNo model peaks at medium; higher effort takes up to 4.1× as long, and one rerun flipped the result
Routing ceiling
89%3 models routed per task, 7.1 above the best single model

All model runs, ranked

  • The rest
  • Anthropic
  • OpenAI
1Kimi K3defaultcurrent fixture
82.0
80.1$2.27100.0k
2Fable 5lowcurrent fixture
81.4
82.1$11.3263.5k
3Opus 5xhicurrent fixture
80.7
79.8$8.64188.7k
4Sonnet 5lowcurrent fixture
75.3
74.9$4.0684.9k
5Terrahighcurrent fixture
72.1
72.4$2.0429.7k
6GLM 5.2defaultcurrent fixture
71.8
68.9$0.4379.3k
7DeepSeek V4 Flash 0731defaultcurrent fixture
70.7
69.4$0.12263.2k
8Solxhicurrent fixture
67.8
66.4$6.6279.1k
9Lunahighcurrent fixture
67.8
68.6$0.2682.1k
10Grok 4.5defaultcurrent fixture
66.9
65.7$0.9748.8k
11Deepseek 4 Prodefaultprevious fixture
64.9
64.7$1.20284.2k
12Minimax M3defaultcurrent fixture
64.2
60.9$0.1655.9k
13Gemini 3.5 Flashdefaultprevious fixture
60.0
59.5$0.55166.2k
14Tencent HY3defaultcurrent fixture
59.8
59.0$0.22306.3k
15Qwen 3.8 Maxdefaultcurrent fixture
59.6
60.6$2.69322.9k
16Qwen 3.7Fdefaultprevious fixture
46.4
47.7$0.10337.9k

Scores are percentages, 0–100, graded by code against seeded database state. ▫ marks a row whose eight non-restraint benches ran on the previous fixture: rank it, but do not read a single cell against a ▪ row. Costs come from three different bases — see the run economics below. Output tokens are observed completion tokens for that row's nine-bench run: a workload and verbosity signal, not a quality score.

Not every bench is worth the same

Scaffold roundtrip

build a full spec from a brain-dump

×3

53.199.3

Build a complete project specification from a loose product brief. It checks whether the model captures the structure, details, and relationships the product needs.

Proposal gauntlet

exact spec edits via chat proposals

×2

12.587.5

Make precise changes to an existing specification through chat proposals. It checks whether the model edits the requested parts without damaging unrelated ones.

Inconsistency needle

find planted spec defects

×2

0.080.0

Find deliberate contradictions and missing links planted in a specification. It checks whether the model identifies real defects without inventing extra problems.

False-positive discipline

stay silent on clean specs — re-measured on fixed fixture v3

×1.5

0.0100.0

Read a clean specification and leave it alone when there is nothing wrong. It checks whether the model resists inventing defects or proposing unnecessary changes.

Schema stress

structured output across surfaces

×2

15.084.8

Return structured data in the shape the product expects across several specification surfaces. It checks whether the model keeps fields, types, and nesting intact while doing the work.

Enumerated data model

transcribe an explicit field list

×1

0.082.0

Turn an explicit list of fields into the product's data-model format. It checks faithful transcription of names, types, and optionality, with little room for interpretation.

Trap references

resolve near-duplicate entity names

×1

25.0100.0

Resolve references when entity names are almost, but not exactly, the same. It checks whether the model links to the intended entity instead of taking a plausible near-match.

Grounded QA

literal answers from the spec, no invention

×1.5

83.3100.0

Answer questions using only facts present in the specification. It checks whether the model finds the right detail and says when the answer is not there.

Stability

same analysis five times, scored on consistency

×2

0.080.0

Run the same analysis repeatedly on the same specification. It checks whether the result stays consistent instead of changing from one run to the next.

The observed range is the lowest and highest score any configuration reached on that bench. A tenth bench, context scaling, was excluded for every model: it never produced a graded case, so it is not on this page and not in any score.

What drives the ranking

×3×2×2×1.5×2×1×1×1.5×2
Kimi K3defaultcurrent fixture99.375.080.060.084.881.575.087.578.082.080.1
Fable 5lowcurrent fixture93.587.560.086.765.082.0100.087.577.081.482.1
Opus 5xhicurrent fixture98.575.066.773.368.281.575.0100.080.080.779.8
Opus 5medcurrent fixture99.075.066.760.063.681.575.0100.079.078.977.8
Fable 5xhicurrent fixture97.987.560.066.765.081.575.0100.068.078.878.0
Fable 5medcurrent fixture97.775.066.773.363.681.575.087.578.078.677.6
Fable 5highprevious fixture91.787.560.086.762.581.575.087.571.678.578.2
Opus 5lowcurrent fixture99.350.066.766.766.782.075.087.580.075.874.9
Sonnet 5lowcurrent fixture93.950.066.760.066.782.075.0100.080.075.374.9
Sonnet 5medcurrent fixture93.462.566.740.066.781.575.087.580.073.772.6
Terrahighcurrent fixture84.150.060.080.062.574.175.087.578.072.172.4
GLM 5.2defaultcurrent fixture98.875.060.033.363.654.575.087.572.471.868.9
Terramedcurrent fixture87.350.060.080.065.076.875.087.563.771.471.7
Sonnet 5xhicurrent fixture98.750.066.726.765.081.575.087.577.271.469.8
Opus 5highprevious fixture73.075.066.746.760.081.575.0100.066.770.871.6
DeepSeek V4 Flash 0731defaultcurrent fixture98.145.866.737.857.282.075.083.379.170.769.4
Terralowcurrent fixture83.050.060.060.065.074.675.087.575.070.070.0
Sonnet 5highprevious fixture87.062.554.546.762.581.575.087.569.869.869.7
Solxhicurrent fixture84.962.566.76.763.672.875.087.578.067.866.4
Lunahighcurrent fixture67.950.066.753.366.772.275.087.578.067.868.6
Lunamedcurrent fixture53.162.560.080.066.776.875.087.568.667.470.0
Grok 4.5defaultcurrent fixture91.750.060.06.763.682.075.087.574.966.965.7
Deepseek 4 Prodefaultprevious fixture98.537.540.066.738.681.366.787.565.564.964.7
Minimax M3defaultcurrent fixture95.462.550.00.061.146.775.087.570.164.260.9
Terraxhiprevious fixture56.750.040.086.758.376.875.087.571.163.966.9
Solhighcurrent fixture86.050.066.76.763.675.575.087.552.763.562.6
Lunalowcurrent fixture62.750.066.780.065.074.250.087.542.163.264.2
Sollowcurrent fixture55.350.054.540.063.672.875.087.574.361.963.7
Solmedcurrent fixture61.050.060.020.063.672.875.087.572.461.562.5
Lunaxhiprevious fixture60.350.054.520.063.671.675.087.569.060.261.3
Gemini 3.5 Flashdefaultprevious fixture85.412.560.093.315.081.025.087.576.060.059.5
Tencent HY3defaultcurrent fixture78.062.546.273.366.727.375.087.514.159.859.0
Qwen 3.8 Maxdefaultcurrent fixture64.162.547.10.063.982.075.087.563.359.660.6
Qwen 3.7Fdefaultprevious fixture53.962.50.0100.050.00.075.087.50.046.447.7

Cell shading is the score itself, one hue, no thresholds. Bold is the column best. Every value is a single measurement: the same bench has swung more than thirty points between identical runs elsewhere in this campaign, so treat close cells as a tie. ▫ rows had their eight non-restraint benches measured on the previous fixture — the restraint column was re-measured on the current fixture for everyone, so that one column is comparable across the whole table.

More thinking costs time, not much score

Fable 5

Fable 5: weighted score and wall clock at each reasoning effort
low current fixture81.411.9m
med current fixture78.617.6m
high previous fixture78.522.9m
xhi current fixture78.831.2m

−2.6 quality · 2.6× time

Opus 5

Opus 5: weighted score and wall clock at each reasoning effort
low current fixture75.813.4m
med current fixture78.920.0m
high previous fixture70.830.4m
xhi current fixture80.735.2m

+4.9 quality · 2.6× time

Sonnet 5

Sonnet 5: weighted score and wall clock at each reasoning effort
low current fixture75.313.1m
med current fixture73.725.1m
high previous fixture69.830.6m
xhi current fixture71.448.5m

−4.0 quality · 3.7× time

Luna

Luna: weighted score and wall clock at each reasoning effort
low current fixture63.211.3m
med current fixture67.414.9m
high current fixture67.830.2m
xhi previous fixture60.246.5m

−3.0 quality · 4.1× time

Terra

Terra: weighted score and wall clock at each reasoning effort
low current fixture70.011.7m
med current fixture71.413.9m
high current fixture72.114.8m
xhi previous fixture63.932.3m

−6.1 quality · 2.8× time

Sol

Sol: weighted score and wall clock at each reasoning effort
low current fixture61.914.3m
med current fixture61.534.0m
high current fixture63.524.9m
xhi current fixture67.834.8m

+6.0 quality · 2.4× time

Thick bar: weighted score on a 0–100 scale. Thin bar underneath: wall clock, scaled against the longest run on the board (48.5 minutes). The footer compares the lowest effort with the highest. Read only ▪-to-▪ pairs as a clean effort effect — a ▫ row had its eight non-restraint benches measured on the previous fixture. Wall clock is operational time, not model latency: the hosted model group is throttled and Anthropic/OpenAI runs pay process-spawn overhead per call.

The best team mixes strengths

  • 1 model

    82%

    • Kimi K3defaultcurrent fixture
  • 2 models

    87.6%+5.66

    • Kimi K3defaultcurrent fixture
    • Fable 5lowcurrent fixture
  • 3 models

    89%+7.08

    • Kimi K3defaultcurrent fixture
    • Fable 5lowcurrent fixture
    • Opus 5xhicurrent fixture

Three models, one team

The best three-model team combines:

  • Kimi K3defaultcurrent fixture
  • Fable 5lowcurrent fixture
  • Opus 5xhicurrent fixture

Fable 5 · low earns its place as a complement to the other two, not as a standalone recommendation. This is a perfect-router ceiling: it assumes every task reaches the strongest member, and a different workload could produce a different trio.

For the best 3-model team, the member that wins each bench
Scaffold roundtripKimi K3defaultcurrent fixture99.3×3
Proposal gauntletFable 5lowcurrent fixture87.5×2
Inconsistency needleKimi K3defaultcurrent fixture80.0×2
False-positive disciplineFable 5lowcurrent fixture86.7×1.5
Schema stressKimi K3defaultcurrent fixture84.8×2
Enumerated data modelFable 5lowcurrent fixture82.0×1
Trap referencesFable 5lowcurrent fixture100.0×1
Grounded QAOpus 5xhicurrent fixture100.0×1.5
StabilityOpus 5xhicurrent fixture80.0×2

This is a ceiling, not a result. It assumes a router that always picks correctly — nothing here demonstrates such a router, and building one is its own hard problem. Every cell behind it is a single measurement with real run-to-run variance. Treat 89% as the headroom a routing strategy could chase, not a score any deployment has achieved.

39× the cost buys 7.0 more points

Each dot is one full suite. Cost runs horizontally on a log scale; weighted score runs vertically. Hover any dot to see which reasoning effort it was. The connected lines walk one model up its own effort ladder, and their flatness is how little extra score spending more buys. GLM 5.2 · default costs $0.43 for 71.8%; Fable 5 · xhigh costs $16.61 for 78.8%. The cheapest row is Qwen 3.7F · default at $0.10, ranked 34th of 34.

  • The rest
  • Anthropic
  • OpenAI
405060708090$0.10$0.30$1$3$10Cost of one nine-bench suite (log scale)Weighted scoreQwen 3.7FDeepSeek V4 Flash 0731Minimax M3LunaTencent HY3GLM 5.2Gemini 3.5 FlashGrok 4.5Deepseek 4 ProTerraKimi K3Qwen 3.8 MaxSonnet 5SolOpus 5Fable 5

Dot size is reasoning effort — smallest low, largest xhigh; the hosted provider models ran at their provider's default and appear once. Costs are shown as the dollar total for each suite, and they are not all the same kind of number: some are returned by the provider, the rest are measured tokens times a published rate. Where a group bills against a subscription rather than per token, its dollars answer what the same work would have cost at usage rates, not what was charged. The run economics table below breaks that down row by row.

Come build a spec worth benchmarking

Every fixture behind CrystalBench is just an ordinary CrystalSpec project — typed flows, roles, data models, and test cases, all versioned and reviewable. Build one of your own and see what your coding agents make of it.

Start free