TESTED BY MODEL CADENCE

Our benchmarks

Chess and Sudoku evaluations run by Model Cadence. Compare performance, cost and response time from our own runs. Open each benchmark for its results and methodology.

Chess

Standard chess and Chess960 against fixed engine opponents.
407 games
14 model settings407 games12,741 moves gradedUpdated 2026-10-25

Ratings use our fixed engine scale. Under 10 games: provisional. Overlapping 95% intervals leave the order uncertain.

Both variants

Select a column to sort. Scroll sideways for all metrics →

#ModelRating 95% intervalGamesIllegal / invalidAPI cost / gameSec / moveMin / game
1GPT-6.1 Solreasoning medium1,524481.7%29 / 1,741$0.89741.624.7
2GPT-6 Astrareasoning medium1,442481.7%26 / 1,529$2.3832.917.2
3GPT-6 Solreasoning medium1,427481.2%19 / 1,567$0.88143.623.5
4Claude Opus 5.5reasoning medium1,361484.4%78 / 1,762$0.91012.57.3
5Claude Sonnet 5.5reasoning medium1,185486.7%120 / 1,788$0.46810.05.8
6Claude Haiku 5.5reasoning medium1,113483.1%51 / 1,631$0.05115.08.2
7Claude Fable 5.1reasoning medium1,105488.1%128 / 1,572$2.9025.112.6
8gpt-oss 20Blocal, thinking low · open weights1,082provisional211.9%5 / 42n/a1,168.9360.4
9GPT-6 Lunareasoning medium7844810.4%150 / 1,445$0.02111.25.1
10Ministral 3 8Blocal, no thinking · open weights655provisional347.8%22 / 46n/a17.42.5
11Qwen3.5 9Blocal, no thinking · open weights655provisional378.6%11 / 14n/a195.66.5
12Qwen3.8 27Blocal, no thinking · open weights655provisional339.0%16 / 41n/a1,112.9173.1
13Gemma 3 4Blocal, no thinking · open weights474provisional457.1%20 / 35n/a18.01.4
14Qwen3.8 Flash-Nextlocal, thinking low · open weights355provisional818.5%46 / 249n/a293.5125.4

Illegal / invalid = rejected answers ÷ answered requests, including retries. Time includes all model replies, retries and queue wait. Per move counts each model turn, including a final forfeit. Per game excludes engine time.

Move quality and additional metrics
ModelStandardChess960Rating gapAccuracyBlunders /100Engine matchForfeitsOutput tokens / move
GPT-6.1 Solreasoning medium1,4971,543-4686.15.938.8%01,191
GPT-6 Astrareasoning medium1,5691,30526586.94.739.6%0584
GPT-6 Solreasoning medium1,6841,15752786.25.735.0%01,872
Claude Opus 5.5reasoning medium1,4631,25820585.47.133.8%0859
Claude Sonnet 5.5reasoning medium1,2871,09419383.17.231.5%0902
Claude Haiku 5.5reasoning medium1,1451,0855980.48.429.2%02,647
Claude Fable 5.1reasoning medium1,1621,05210983.97.434.9%01,482
gpt-oss 20Blocal, thinking low · open weights1,42780961882.58.129.7%010,484
GPT-6 Lunareasoning medium87569717877.312.125.5%4643
Ministral 3 8Blocal, no thinking · open weights8097139768.729.216.7%224
Qwen3.5 9Blocal, no thinking · open weights8097139792.70.00.0%31,784
Qwen3.8 27Blocal, no thinking · open weights8097139768.920.020.0%34,334
Gemma 3 4Blocal, no thinking · open weights71350620680.113.320.0%420
Qwen3.8 Flash-Nextlocal, thinking low · open weights204645-44172.316.324.6%24,909
Cost frontierToken cost at API list prices, including retries and CLI context. Local models have no API price and are omitted.
Closed weightsOpen weightsPareto frontier
1,0001,500$0.030$0.100$0.300$1.00$3.00API-equivalent USD / game (log scale)RatingGPT-6.1 SolGPT-6 AstraGPT-6 Sol
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
05001,0001,50010301003001000Seconds per move (log scale)RatingGPT-6.1 SolGPT-6 Sol
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
05001,0001,500131030100300Minutes per game (log scale)RatingGPT-6.1 SolGPT-6 Sol

The Pareto frontier connects results where no other model is both at least as strong and cheaper or faster, with one strict improvement. Higher and further left is better. Based on point estimates, including provisional results; bars show 95% intervals. Short games can reduce per-game cost and time.

Standard

Select a column to sort. Scroll sideways for all metrics →

#ModelRating 95% intervalGamesIllegal / invalidAPI cost / gameSec / moveMin / game
1GPT-6 Solreasoning medium1,684240.9%8 / 893$0.85436.222.3
2GPT-6 Astrareasoning medium1,569241.2%10 / 811$2.2326.314.6
3GPT-6.1 Solreasoning medium1,497241.5%14 / 923$0.83534.521.7
4Claude Opus 5.5reasoning medium1,463244.0%39 / 972$0.91711.37.3
5gpt-oss 20Blocal, thinking low · open weights1,427provisional17.7%2 / 26n/a969.6387.9
6Claude Sonnet 5.5reasoning medium1,287245.6%47 / 844$0.4049.25.1
7Claude Fable 5.1reasoning medium1,162244.8%36 / 757$2.3720.410.2
8Claude Haiku 5.5reasoning medium1,145242.7%20 / 737$0.04113.56.7
9GPT-6 Lunareasoning medium875249.6%73 / 761$0.02110.45.0
10Ministral 3 8Blocal, no thinking · open weights809provisional122.2%4 / 18n/a13.73.2
11Qwen3.5 9Blocal, no thinking · open weights809provisional160.0%3 / 5n/a109.35.5
12Qwen3.8 27Blocal, no thinking · open weights809provisional120.0%3 / 15n/a735.5159.4
13Gemma 3 4Blocal, no thinking · open weights713provisional253.3%8 / 15n/a15.21.1
14Qwen3.8 Flash-Nextlocal, thinking low · open weights204provisional417.9%22 / 123n/a295.1126.6

Illegal / invalid = rejected answers ÷ answered requests, including retries. Time includes all model replies, retries and queue wait. Per move counts each model turn, including a final forfeit. Per game excludes engine time.

Move quality and additional metrics
ModelAccuracyBlunders /100Engine matchForfeitsOutput tokens / move
GPT-6 Solreasoning medium89.24.839.2%01,514
GPT-6 Astrareasoning medium89.23.944.4%0450
GPT-6.1 Solreasoning medium88.44.440.2%0959
Claude Opus 5.5reasoning medium88.74.835.7%0748
gpt-oss 20Blocal, thinking low · open weights85.98.341.7%011,555
Claude Sonnet 5.5reasoning medium84.77.335.6%0796
Claude Fable 5.1reasoning medium85.06.839.1%01,162
Claude Haiku 5.5reasoning medium82.77.232.9%02,355
GPT-6 Lunareasoning medium81.99.930.5%2585
Ministral 3 8Blocal, no thinking · open weights63.035.721.4%024
Qwen3.5 9Blocal, no thinking · open weights92.80.00.0%11,055
Qwen3.8 27Blocal, no thinking · open weights73.116.741.7%12,589
Gemma 3 4Blocal, no thinking · open weights76.428.614.3%216
Qwen3.8 Flash-Nextlocal, thinking low · open weights72.217.825.7%24,548
Cost frontierToken cost at API list prices, including retries and CLI context. Local models have no API price and are omitted.
Closed weightsOpen weightsPareto frontier
1,0001,500$0.030$0.100$0.300$1.00$3.00API-equivalent USD / game (log scale)RatingGPT-6 SolGPT-6 AstraGPT-6.1 Sol
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
01,0002,00010301003001000Seconds per move (log scale)RatingGPT-6 SolGPT-6.1 Sol
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
01,0002,000131030100300Minutes per game (log scale)RatingGPT-6 SolGPT-6.1 Sol

The Pareto frontier connects results where no other model is both at least as strong and cheaper or faster, with one strict improvement. Higher and further left is better. Based on point estimates, including provisional results; bars show 95% intervals. Short games can reduce per-game cost and time.

Chess960

Select a column to sort. Scroll sideways for all metrics →

#ModelRating 95% intervalGamesIllegal / invalidAPI cost / gameSec / moveMin / game
1GPT-6.1 Solreasoning medium1,543241.8%15 / 818$0.95949.827.8
2GPT-6 Astrareasoning medium1,305242.2%16 / 718$2.5340.419.7
3Claude Opus 5.5reasoning medium1,258244.9%39 / 790$0.90314.07.3
4GPT-6 Solreasoning medium1,157241.6%11 / 674$0.90853.524.6
5Claude Sonnet 5.5reasoning medium1,094247.7%73 / 944$0.53110.86.5
6Claude Haiku 5.5reasoning medium1,085243.5%31 / 894$0.06016.29.7
7Claude Fable 5.1reasoning medium1,0522411.3%92 / 815$3.4229.815.0
8gpt-oss 20Blocal, thinking low · open weights809provisional118.8%3 / 16n/a1,536.9333.0
9Ministral 3 8Blocal, no thinking · open weights713provisional264.3%18 / 28n/a21.72.2
10Qwen3.5 9Blocal, no thinking · open weights713provisional288.9%8 / 9n/a281.97.0
11Qwen3.8 27Blocal, no thinking · open weights713provisional250.0%13 / 26n/a1,440.0180.0
12GPT-6 Lunareasoning medium6972411.3%77 / 684$0.02112.25.2
13Qwen3.8 Flash-Nextlocal, thinking low · open weights645provisional419.0%24 / 126n/a292.0124.1
14Gemma 3 4Blocal, no thinking · open weights506provisional260.0%12 / 20n/a20.51.7

Illegal / invalid = rejected answers ÷ answered requests, including retries. Time includes all model replies, retries and queue wait. Per move counts each model turn, including a final forfeit. Per game excludes engine time.

Move quality and additional metrics
ModelAccuracyBlunders /100Engine matchForfeitsOutput tokens / move
GPT-6.1 Solreasoning medium83.67.637.2%01,453
GPT-6 Astrareasoning medium83.75.734.1%0737
Claude Opus 5.5reasoning medium81.210.031.4%0997
GPT-6 Solreasoning medium81.66.929.4%02,351
Claude Sonnet 5.5reasoning medium81.47.127.8%0999
Claude Haiku 5.5reasoning medium78.49.426.2%02,889
Claude Fable 5.1reasoning medium82.98.030.7%01,802
gpt-oss 20Blocal, thinking low · open weights78.57.77.7%08,507
Ministral 3 8Blocal, no thinking · open weights74.920.010.0%224
Qwen3.5 9Blocal, no thinking · open weights92.50.00.0%22,512
Qwen3.8 27Blocal, no thinking · open weights65.723.10.0%25,847
GPT-6 Lunareasoning medium71.614.719.8%2708
Qwen3.8 Flash-Nextlocal, thinking low · open weights72.414.723.5%05,273
Gemma 3 4Blocal, no thinking · open weights83.30.025.0%224
Cost frontierToken cost at API list prices, including retries and CLI context. Local models have no API price and are omitted.
Closed weightsOpen weightsPareto frontier
5001,0001,500$0.030$0.100$0.300$1.00$3.00API-equivalent USD / game (log scale)RatingGPT-6.1 SolGPT-6 AstraClaude Opus 5.5
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
05001,0001,50010301003001000Seconds per move (log scale)RatingGPT-6.1 SolGPT-6 AstraClaude Opus 5.5
Time frontierObserved model response time, including reasoning, retries and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
05001,0001,50031030100300Minutes per game (log scale)RatingGPT-6.1 SolGPT-6 AstraClaude Opus 5.5

The Pareto frontier connects results where no other model is both at least as strong and cheaper or faster, with one strict improvement. Higher and further left is better. Based on point estimates, including provisional results; bars show 95% intervals. Short games can reduce per-game cost and time.

Why are these ratings lower than ChessBench?

The two sites use different scales. Ours fits results against fixed Stockfish opponents. ChessBench uses Glicko-2 in an LLM-only pool, starting each model at 1,500. A 1,500 on one site doesn't mean the same strength on the other.

The tests also differ: ChessBench supplies legal moves and a piece list and retains player conversation history. We send a fresh request with FEN and move history, without legal moves. Compare the same reasoning setting and use our Standard tab; Both variants includes Chess960.

Our 16 October 2026 check found gaps of 88 to 481 points across seven matched medium-reasoning models in standard chess. Recalculating all 38 published ratings from 335 game records reproduced them within one point. Removing our prior changed the seven matched standard ratings by at most nine points. These differences don't establish a conversion between the two scales.

Recent games and opponents

Latest games

The opponents

Each game is against one rung of this ladder, chosen near the model's current estimate. Stockfish's limited-strength levels are pinned at their nominal ratings. The weaker rungs are rated from games against them.

OpponentRatingWhere the rating comes from
Random mover-99measured from 119 engine games
Skill 0, 75% random moves136measured from 121 engine games
Skill 0, 50% random moves411measured from 159 engine games
Skill 0, 25% random moves785measured from 200 engine games
Skill 0, 10% random moves1,063measured from 120 engine games
Stockfish 13201,320Stockfish calibration (pinned)
Stockfish Skill 01,369measured from 241 engine games
Stockfish 15001,500Stockfish calibration (pinned)
Stockfish Skill 21,519measured from 121 engine games
Stockfish 17001,700Stockfish calibration (pinned)
Stockfish Skill 41,793measured from 118 engine games
Stockfish 19001,900Stockfish calibration (pinned)
Stockfish 21002,100Stockfish calibration (pinned)
Stockfish 23002,300Stockfish calibration (pinned)
Stockfish 25002,500Stockfish calibration (pinned)
Stockfish 28002,800Stockfish calibration (pinned)
Stockfish 31903,190Stockfish calibration (pinned)
MethodologyProtocol, scoring & limitations

A game

Every move is a fresh request. The model gets the variant, its colour, the starting position, the moves so far and the current position, and answers with one move inside a tag. It can think as long as its settings allow. It doesn't get a list of legal moves, because keeping track of the board is part of the test.

An illegal or unreadable answer gets one line of feedback and another try, up to 3 tries a move. After that the model forfeits. Every rejected try is kept and counted under Illegal / invalid. The denominator is answered requests, including retries, from finished games. Transport failures are excluded.

A game ends normally (mate, stalemate, repetition, the 50-move rule), or by adjudication: once Stockfish rates the position at 10 pawns or more for one side across 6 measured positions in a row, after a long dead-level stretch, or at 300 plies. Adjudicated games are flagged.

Ratings

Models only ever play the opponents in the ladder, never each other. Every game is one result against an opponent with a fixed benchmark rating, and each model's rating is fitted to its own results alone. Adding a model never moves anyone else's number. A Chess960 game uses the same start position for every model, in the same order. Colours alternate.

We pin Stockfish's limited-strength levels at their nominal UCI_Elo values and fit the weaker opponents against them. This is an internal engine-anchored scale. We haven't independently validated those nominal values at our 0.5-second move time or in Chess960. It isn't interchangeable with ChessBench, FIDE or Chess.com ratings.

Grading

Stockfish analyses the position before and after every model move at 1,000,000 nodes. From that we take the engine's best move, its top three, and how much winning chance the move gave up. Inaccuracies, mistakes and blunders use Lichess's thresholds (5, 10 and 15 points of winning chance). Accuracy is Lichess's per-move formula. Because that formula forgives every move in a position already won or lost, we report it only for moves made while the game was still open.

Cost and time

Claude models run through Claude Code and OpenAI models through the Codex CLI, on a subscription, with our own instructions and every tool switched off. Local models run on our own DGX Sparks. Nobody is billed per request, so the cost we show is API-equivalent: what the same tokens, rejected tries included, would cost at the lab's list price. Local models have no list price, so their cost shows as n/a, not zero.

Token counts are what each request actually used. The Codex CLI adds about 9,800 tokens of its own context to every request and Claude Code about 640, so input tokens are higher than the chess prompt alone. Time is the wall-clock wait for each answer, including any queue on our side, so compare it within a route rather than across them.

What it doesn't show

Chess is one skill. A strong rating says a model can track a board and plan within these rules. It doesn't say how good the model is at your work. Models with no reasoning setting run at their provider's default. A request that fails on our side (a timeout, an outage, a usage limit) aborts the game, and an aborted game never counts against the model.

Data: JSON · CSV · PGNUse with credit to Model Cadence.

Sudoku

Shared puzzles across seven difficulty tiers.
390 answers
14 model settings390 answers249 solvedUpdated 2026-10-25

Sudoku leaderboard

#ModelScore95% intervalSolved per tier (of 6)CozGenSteTriDevExpBeyCells rightBroke the rulesSure but wrongCalibrationAPI cost / gridOutput tokens / gridSec / grid
1Claude Opus 5.5reasoning medium1006666666100.0%00 of 00.000$0.24411,827101
2Claude Fable 5.1reasoning medium93666456697.6%22 of 30.047$0.89416,999173
3GPT-6 Solreasoning medium90666646493.7%22 of 40.048$0.14912,925142
4Claude Sonnet 5.5reasoning medium88555646699.5%15 of 50.111$0.13813,46291
5GPT-6.1 Solreasoning medium83664554594.1%75 of 70.119$0.1128,723195
6GPT-6 Astrareasoning medium76545446494.0%910 of 100.238$0.4536,987226
7Claude Haiku 5.5reasoning medium31311322193.1%829 of 290.643$0.01530,157111
8GPT-6 Lunareasoning medium000000008.6%33 of 420.075$0.00241,77924
9Qwen3.8 Flash-Nextlocal, thinking low · open weights5221 of 42231122051.0%00 of 100.000n/a64,2733,414
10gpt-oss 20Blocal, thinking low · open weights405 of 4201100··74.7%02 of 30.500n/a24,7402,702
11Qwen3.8 27Blocal, no thinking · open weights07 of 42000000029.5%24 of 70.593n/a12,3091,325
12Ministral 3 8Blocal, no thinking · open weights07 of 42000000012.4%07 of 71.000n/a10820
13Qwen3.5 9Blocal, no thinking · open weights07 of 4200000009.3%00 of 70.000n/a2,402242
14Gemma 3 4Blocal, no thinking · open weights07 of 4200000006.7%07 of 70.925n/a17718

Scroll for all metrics. Score is the solve rate averaged over the seven tiers, each tier weighted the same, from 0 to 100. A model still working through the set shows how many of the 42 grids it has answered, and ranks after the models that have finished. Click a column to sort.

Cost frontierAPI-equivalent cost per grid. Local models have no list price and are omitted. Bars show 95% intervals.
Closed weightsOpen weightsPareto frontier
050100$0.0030$0.010$0.030$0.100$0.300$1.00API-equivalent USD / grid (log scale)ScoreClaude Fable 5.1Claude Opus 5.5GPT-6 Sol
Time frontierObserved response time, including reasoning and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
05010001,0002,0003,000Seconds / gridScoreClaude Fable 5.1Claude Opus 5.5

The Pareto frontier shows where no other model scores at least as well for less cost or time, with one strict improvement. Partial sets are included and may cover different puzzles. Use completed sets for direct comparisons.

Individual answers and confidence
Confidence and solve rateBelow the line: stated confidence exceeds the observed solve rate.
Closed weightsOpen weightsConfidence matches results
050100050100Average stated confidence (%)Grids solved (%)Claude Fable 5.1Claude Opus 5.5

Output tokens by difficulty

Average output tokens per grid, reasoning included. Token counts include reasoning when reported by the provider.

ModelCozyGentleSteadyTrickyDeviousExpertBeyond
Claude Opus 5.54,5218,29612,06716,7828,39811,76120,962
Claude Fable 5.15,12810,78816,62611,1439,18823,41042,711
GPT-6 Sol4,2299,60611,67515,7027,83912,59428,828
Claude Sonnet 5.55,88410,28814,39217,6708,80714,05823,134
GPT-6.1 Sol3,9386,0078,4328,7946,5959,59817,701
GPT-6 Astra2,7684,13310,3585,5468,8865,91711,303
Claude Haiku 5.515,85322,69034,43433,60020,78438,90644,833
GPT-6 Luna1,8261,4851,9711,7481,8362,2031,381
Qwen3.8 Flash-Next37,32136,52191,26072,34154,01164,09794,361
gpt-oss 20B8,21218,04616,66164,84115,941n/an/a
Qwen3.8 27B18,40210,07711,47611,25110,5839,25715,116
Ministral 3 8B108108108108108108108
Qwen3.5 9B3,0003,0003,0003,0001,6061,6051,605
Gemma 3 4B142295133259132149127

Every grid

One square per answer, filled when it solved the grid. Columns run from the easiest tier to the hardest. Click a square to see the answer.

MethodologyProtocol, scoring & limitations

The grids

Every grid comes from Cozy Sudoku's generator, and every one is checked to have exactly one solution. The first six tiers are the game's own difficulty bands. A grid's band is set by the hardest technique it needs, not by how many digits are given. The seventh tier, Beyond, holds grids that none of those techniques finishes. We generated 400 of them and kept the ones that need the most trial and error.

TierHardest technique neededGivens
CozySingles only31 to 42
GentleScanning25 to 30
SteadyLocked candidates27 to 32
TrickyHidden pairs and triples24 to 27
DeviousWings and fish26 to 41
ExpertDeep wings and fish23 to 28
BeyondNo human technique finishes it21 to 25

Every model gets the same 6 grids per tier from set v1. The grids are generated from fixed seeds, not taken from a puzzle book, so a model can't have memorised them. The set is published with the results, so when it's been around long enough to be trained on, we'll move to a new one and label it.

An answer

The model gets the grid once, as nine rows, and answers with the whole solution and a confidence from 0 to 100. It can think as long as its settings allow. There are no hints and no second try at a wrong answer. The one retry is for a reply with no readable grid in it, which is a formatting slip, not an answer.

We check every cell against the solution. An answer is either solved, wrong in some cells, left with cells empty, or one that changed a given digit. Cells right counts every blank cell filled correctly, so a near miss still shows up. Broke the rules counts complete grids that repeat a digit somewhere: the model said it was done without checking. On a model's own page, cell accuracy is split by the technique each cell needed.

Score

The score is the solve rate in each tier, averaged so every tier counts the same, from 0 to 100. Its 95% interval adds up each tier's uncertainty. With 6 grids a tier, two models a few points apart are not reliably different.

Confidence

We ask for a confidence on every answer and score it with the Brier score: the squared gap between what it said and what happened, averaged. 0 is perfect. Always saying 50% scores 0.25. Sure but wrong counts unsolved answers it called 90% certain or more.

Cost and time

Same as the chess benchmark: Claude models run through Claude Code and OpenAI models through the Codex CLI on a subscription, with every tool switched off, and local models on our own DGX Sparks. Cost is API-equivalent, what the tokens would cost at the lab's list price. Local models show n/a. Time is the wall-clock wait for the answer. A request that fails on our side is never counted against the model.

Data: JSON · CSVUse with credit to Model Cadence.

Looking for published evaluations from other sources? Browse leaderboards →