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
Both variants
Select a column to sort. Scroll sideways for all metrics →
| # | Model | Rating 95% interval | Games | Illegal / invalid | API cost / game | Sec / move | Min / game |
|---|---|---|---|---|---|---|---|
| 1 | GPT-6.1 Solreasoning medium | 1,524 | 48 | 1.7%29 / 1,741 | $0.897 | 41.6 | 24.7 |
| 2 | GPT-6 Astrareasoning medium | 1,442 | 48 | 1.7%26 / 1,529 | $2.38 | 32.9 | 17.2 |
| 3 | GPT-6 Solreasoning medium | 1,427 | 48 | 1.2%19 / 1,567 | $0.881 | 43.6 | 23.5 |
| 4 | Claude Opus 5.5reasoning medium | 1,361 | 48 | 4.4%78 / 1,762 | $0.910 | 12.5 | 7.3 |
| 5 | Claude Sonnet 5.5reasoning medium | 1,185 | 48 | 6.7%120 / 1,788 | $0.468 | 10.0 | 5.8 |
| 6 | Claude Haiku 5.5reasoning medium | 1,113 | 48 | 3.1%51 / 1,631 | $0.051 | 15.0 | 8.2 |
| 7 | Claude Fable 5.1reasoning medium | 1,105 | 48 | 8.1%128 / 1,572 | $2.90 | 25.1 | 12.6 |
| 8 | gpt-oss 20Blocal, thinking low · open weights | 1,082provisional | 2 | 11.9%5 / 42 | n/a | 1,168.9 | 360.4 |
| 9 | GPT-6 Lunareasoning medium | 784 | 48 | 10.4%150 / 1,445 | $0.021 | 11.2 | 5.1 |
| 10 | Ministral 3 8Blocal, no thinking · open weights | 655provisional | 3 | 47.8%22 / 46 | n/a | 17.4 | 2.5 |
| 11 | Qwen3.5 9Blocal, no thinking · open weights | 655provisional | 3 | 78.6%11 / 14 | n/a | 195.6 | 6.5 |
| 12 | Qwen3.8 27Blocal, no thinking · open weights | 655provisional | 3 | 39.0%16 / 41 | n/a | 1,112.9 | 173.1 |
| 13 | Gemma 3 4Blocal, no thinking · open weights | 474provisional | 4 | 57.1%20 / 35 | n/a | 18.0 | 1.4 |
| 14 | Qwen3.8 Flash-Nextlocal, thinking low · open weights | 355provisional | 8 | 18.5%46 / 249 | n/a | 293.5 | 125.4 |
No models match your search.
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
| Model | Standard | Chess960 | Rating gap | Accuracy | Blunders /100 | Engine match | Forfeits | Output tokens / move |
|---|---|---|---|---|---|---|---|---|
| GPT-6.1 Solreasoning medium | 1,497 | 1,543 | -46 | 86.1 | 5.9 | 38.8% | 0 | 1,191 |
| GPT-6 Astrareasoning medium | 1,569 | 1,305 | 265 | 86.9 | 4.7 | 39.6% | 0 | 584 |
| GPT-6 Solreasoning medium | 1,684 | 1,157 | 527 | 86.2 | 5.7 | 35.0% | 0 | 1,872 |
| Claude Opus 5.5reasoning medium | 1,463 | 1,258 | 205 | 85.4 | 7.1 | 33.8% | 0 | 859 |
| Claude Sonnet 5.5reasoning medium | 1,287 | 1,094 | 193 | 83.1 | 7.2 | 31.5% | 0 | 902 |
| Claude Haiku 5.5reasoning medium | 1,145 | 1,085 | 59 | 80.4 | 8.4 | 29.2% | 0 | 2,647 |
| Claude Fable 5.1reasoning medium | 1,162 | 1,052 | 109 | 83.9 | 7.4 | 34.9% | 0 | 1,482 |
| gpt-oss 20Blocal, thinking low · open weights | 1,427 | 809 | 618 | 82.5 | 8.1 | 29.7% | 0 | 10,484 |
| GPT-6 Lunareasoning medium | 875 | 697 | 178 | 77.3 | 12.1 | 25.5% | 4 | 643 |
| Ministral 3 8Blocal, no thinking · open weights | 809 | 713 | 97 | 68.7 | 29.2 | 16.7% | 2 | 24 |
| Qwen3.5 9Blocal, no thinking · open weights | 809 | 713 | 97 | 92.7 | 0.0 | 0.0% | 3 | 1,784 |
| Qwen3.8 27Blocal, no thinking · open weights | 809 | 713 | 97 | 68.9 | 20.0 | 20.0% | 3 | 4,334 |
| Gemma 3 4Blocal, no thinking · open weights | 713 | 506 | 206 | 80.1 | 13.3 | 20.0% | 4 | 20 |
| Qwen3.8 Flash-Nextlocal, thinking low · open weights | 204 | 645 | -441 | 72.3 | 16.3 | 24.6% | 2 | 4,909 |
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 →
| # | Model | Rating 95% interval | Games | Illegal / invalid | API cost / game | Sec / move | Min / game |
|---|---|---|---|---|---|---|---|
| 1 | GPT-6 Solreasoning medium | 1,684 | 24 | 0.9%8 / 893 | $0.854 | 36.2 | 22.3 |
| 2 | GPT-6 Astrareasoning medium | 1,569 | 24 | 1.2%10 / 811 | $2.23 | 26.3 | 14.6 |
| 3 | GPT-6.1 Solreasoning medium | 1,497 | 24 | 1.5%14 / 923 | $0.835 | 34.5 | 21.7 |
| 4 | Claude Opus 5.5reasoning medium | 1,463 | 24 | 4.0%39 / 972 | $0.917 | 11.3 | 7.3 |
| 5 | gpt-oss 20Blocal, thinking low · open weights | 1,427provisional | 1 | 7.7%2 / 26 | n/a | 969.6 | 387.9 |
| 6 | Claude Sonnet 5.5reasoning medium | 1,287 | 24 | 5.6%47 / 844 | $0.404 | 9.2 | 5.1 |
| 7 | Claude Fable 5.1reasoning medium | 1,162 | 24 | 4.8%36 / 757 | $2.37 | 20.4 | 10.2 |
| 8 | Claude Haiku 5.5reasoning medium | 1,145 | 24 | 2.7%20 / 737 | $0.041 | 13.5 | 6.7 |
| 9 | GPT-6 Lunareasoning medium | 875 | 24 | 9.6%73 / 761 | $0.021 | 10.4 | 5.0 |
| 10 | Ministral 3 8Blocal, no thinking · open weights | 809provisional | 1 | 22.2%4 / 18 | n/a | 13.7 | 3.2 |
| 11 | Qwen3.5 9Blocal, no thinking · open weights | 809provisional | 1 | 60.0%3 / 5 | n/a | 109.3 | 5.5 |
| 12 | Qwen3.8 27Blocal, no thinking · open weights | 809provisional | 1 | 20.0%3 / 15 | n/a | 735.5 | 159.4 |
| 13 | Gemma 3 4Blocal, no thinking · open weights | 713provisional | 2 | 53.3%8 / 15 | n/a | 15.2 | 1.1 |
| 14 | Qwen3.8 Flash-Nextlocal, thinking low · open weights | 204provisional | 4 | 17.9%22 / 123 | n/a | 295.1 | 126.6 |
No models match your search.
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
| Model | Accuracy | Blunders /100 | Engine match | Forfeits | Output tokens / move |
|---|---|---|---|---|---|
| GPT-6 Solreasoning medium | 89.2 | 4.8 | 39.2% | 0 | 1,514 |
| GPT-6 Astrareasoning medium | 89.2 | 3.9 | 44.4% | 0 | 450 |
| GPT-6.1 Solreasoning medium | 88.4 | 4.4 | 40.2% | 0 | 959 |
| Claude Opus 5.5reasoning medium | 88.7 | 4.8 | 35.7% | 0 | 748 |
| gpt-oss 20Blocal, thinking low · open weights | 85.9 | 8.3 | 41.7% | 0 | 11,555 |
| Claude Sonnet 5.5reasoning medium | 84.7 | 7.3 | 35.6% | 0 | 796 |
| Claude Fable 5.1reasoning medium | 85.0 | 6.8 | 39.1% | 0 | 1,162 |
| Claude Haiku 5.5reasoning medium | 82.7 | 7.2 | 32.9% | 0 | 2,355 |
| GPT-6 Lunareasoning medium | 81.9 | 9.9 | 30.5% | 2 | 585 |
| Ministral 3 8Blocal, no thinking · open weights | 63.0 | 35.7 | 21.4% | 0 | 24 |
| Qwen3.5 9Blocal, no thinking · open weights | 92.8 | 0.0 | 0.0% | 1 | 1,055 |
| Qwen3.8 27Blocal, no thinking · open weights | 73.1 | 16.7 | 41.7% | 1 | 2,589 |
| Gemma 3 4Blocal, no thinking · open weights | 76.4 | 28.6 | 14.3% | 2 | 16 |
| Qwen3.8 Flash-Nextlocal, thinking low · open weights | 72.2 | 17.8 | 25.7% | 2 | 4,548 |
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 →
| # | Model | Rating 95% interval | Games | Illegal / invalid | API cost / game | Sec / move | Min / game |
|---|---|---|---|---|---|---|---|
| 1 | GPT-6.1 Solreasoning medium | 1,543 | 24 | 1.8%15 / 818 | $0.959 | 49.8 | 27.8 |
| 2 | GPT-6 Astrareasoning medium | 1,305 | 24 | 2.2%16 / 718 | $2.53 | 40.4 | 19.7 |
| 3 | Claude Opus 5.5reasoning medium | 1,258 | 24 | 4.9%39 / 790 | $0.903 | 14.0 | 7.3 |
| 4 | GPT-6 Solreasoning medium | 1,157 | 24 | 1.6%11 / 674 | $0.908 | 53.5 | 24.6 |
| 5 | Claude Sonnet 5.5reasoning medium | 1,094 | 24 | 7.7%73 / 944 | $0.531 | 10.8 | 6.5 |
| 6 | Claude Haiku 5.5reasoning medium | 1,085 | 24 | 3.5%31 / 894 | $0.060 | 16.2 | 9.7 |
| 7 | Claude Fable 5.1reasoning medium | 1,052 | 24 | 11.3%92 / 815 | $3.42 | 29.8 | 15.0 |
| 8 | gpt-oss 20Blocal, thinking low · open weights | 809provisional | 1 | 18.8%3 / 16 | n/a | 1,536.9 | 333.0 |
| 9 | Ministral 3 8Blocal, no thinking · open weights | 713provisional | 2 | 64.3%18 / 28 | n/a | 21.7 | 2.2 |
| 10 | Qwen3.5 9Blocal, no thinking · open weights | 713provisional | 2 | 88.9%8 / 9 | n/a | 281.9 | 7.0 |
| 11 | Qwen3.8 27Blocal, no thinking · open weights | 713provisional | 2 | 50.0%13 / 26 | n/a | 1,440.0 | 180.0 |
| 12 | GPT-6 Lunareasoning medium | 697 | 24 | 11.3%77 / 684 | $0.021 | 12.2 | 5.2 |
| 13 | Qwen3.8 Flash-Nextlocal, thinking low · open weights | 645provisional | 4 | 19.0%24 / 126 | n/a | 292.0 | 124.1 |
| 14 | Gemma 3 4Blocal, no thinking · open weights | 506provisional | 2 | 60.0%12 / 20 | n/a | 20.5 | 1.7 |
No models match your search.
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
| Model | Accuracy | Blunders /100 | Engine match | Forfeits | Output tokens / move |
|---|---|---|---|---|---|
| GPT-6.1 Solreasoning medium | 83.6 | 7.6 | 37.2% | 0 | 1,453 |
| GPT-6 Astrareasoning medium | 83.7 | 5.7 | 34.1% | 0 | 737 |
| Claude Opus 5.5reasoning medium | 81.2 | 10.0 | 31.4% | 0 | 997 |
| GPT-6 Solreasoning medium | 81.6 | 6.9 | 29.4% | 0 | 2,351 |
| Claude Sonnet 5.5reasoning medium | 81.4 | 7.1 | 27.8% | 0 | 999 |
| Claude Haiku 5.5reasoning medium | 78.4 | 9.4 | 26.2% | 0 | 2,889 |
| Claude Fable 5.1reasoning medium | 82.9 | 8.0 | 30.7% | 0 | 1,802 |
| gpt-oss 20Blocal, thinking low · open weights | 78.5 | 7.7 | 7.7% | 0 | 8,507 |
| Ministral 3 8Blocal, no thinking · open weights | 74.9 | 20.0 | 10.0% | 2 | 24 |
| Qwen3.5 9Blocal, no thinking · open weights | 92.5 | 0.0 | 0.0% | 2 | 2,512 |
| Qwen3.8 27Blocal, no thinking · open weights | 65.7 | 23.1 | 0.0% | 2 | 5,847 |
| GPT-6 Lunareasoning medium | 71.6 | 14.7 | 19.8% | 2 | 708 |
| Qwen3.8 Flash-Nextlocal, thinking low · open weights | 72.4 | 14.7 | 23.5% | 0 | 5,273 |
| Gemma 3 4Blocal, no thinking · open weights | 83.3 | 0.0 | 25.0% | 2 | 24 |
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.
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.
| Opponent | Rating | Where the rating comes from |
|---|---|---|
| Random mover | -99 | measured from 119 engine games |
| Skill 0, 75% random moves | 136 | measured from 121 engine games |
| Skill 0, 50% random moves | 411 | measured from 159 engine games |
| Skill 0, 25% random moves | 785 | measured from 200 engine games |
| Skill 0, 10% random moves | 1,063 | measured from 120 engine games |
| Stockfish 1320 | 1,320 | Stockfish calibration (pinned) |
| Stockfish Skill 0 | 1,369 | measured from 241 engine games |
| Stockfish 1500 | 1,500 | Stockfish calibration (pinned) |
| Stockfish Skill 2 | 1,519 | measured from 121 engine games |
| Stockfish 1700 | 1,700 | Stockfish calibration (pinned) |
| Stockfish Skill 4 | 1,793 | measured from 118 engine games |
| Stockfish 1900 | 1,900 | Stockfish calibration (pinned) |
| Stockfish 2100 | 2,100 | Stockfish calibration (pinned) |
| Stockfish 2300 | 2,300 | Stockfish calibration (pinned) |
| Stockfish 2500 | 2,500 | Stockfish calibration (pinned) |
| Stockfish 2800 | 2,800 | Stockfish calibration (pinned) |
| Stockfish 3190 | 3,190 | Stockfish 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.
Sudoku
Shared puzzles across seven difficulty tiers.390 answers
Sudoku leaderboard
| # | Model | Score | 95% interval | Solved per tier (of 6)CozGenSteTriDevExpBey | Cells right | Broke the rules | Sure but wrong | Calibration | API cost / grid | Output tokens / grid | Sec / grid |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Claude Opus 5.5reasoning medium | 100 | 6666666 | 100.0% | 0 | 0 of 0 | 0.000 | $0.244 | 11,827 | 101 | |
| 2 | Claude Fable 5.1reasoning medium | 93 | 6664566 | 97.6% | 2 | 2 of 3 | 0.047 | $0.894 | 16,999 | 173 | |
| 3 | GPT-6 Solreasoning medium | 90 | 6666464 | 93.7% | 2 | 2 of 4 | 0.048 | $0.149 | 12,925 | 142 | |
| 4 | Claude Sonnet 5.5reasoning medium | 88 | 5556466 | 99.5% | 1 | 5 of 5 | 0.111 | $0.138 | 13,462 | 91 | |
| 5 | GPT-6.1 Solreasoning medium | 83 | 6645545 | 94.1% | 7 | 5 of 7 | 0.119 | $0.112 | 8,723 | 195 | |
| 6 | GPT-6 Astrareasoning medium | 76 | 5454464 | 94.0% | 9 | 10 of 10 | 0.238 | $0.453 | 6,987 | 226 | |
| 7 | Claude Haiku 5.5reasoning medium | 31 | 3113221 | 93.1% | 8 | 29 of 29 | 0.643 | $0.015 | 30,157 | 111 | |
| 8 | GPT-6 Lunareasoning medium | 0 | 0000000 | 8.6% | 3 | 3 of 42 | 0.075 | $0.0024 | 1,779 | 24 | |
| 9 | Qwen3.8 Flash-Nextlocal, thinking low · open weights | 5221 of 42 | 2311220 | 51.0% | 0 | 0 of 10 | 0.000 | n/a | 64,273 | 3,414 | |
| 10 | gpt-oss 20Blocal, thinking low · open weights | 405 of 42 | 01100·· | 74.7% | 0 | 2 of 3 | 0.500 | n/a | 24,740 | 2,702 | |
| 11 | Qwen3.8 27Blocal, no thinking · open weights | 07 of 42 | 0000000 | 29.5% | 2 | 4 of 7 | 0.593 | n/a | 12,309 | 1,325 | |
| 12 | Ministral 3 8Blocal, no thinking · open weights | 07 of 42 | 0000000 | 12.4% | 0 | 7 of 7 | 1.000 | n/a | 108 | 20 | |
| 13 | Qwen3.5 9Blocal, no thinking · open weights | 07 of 42 | 0000000 | 9.3% | 0 | 0 of 7 | 0.000 | n/a | 2,402 | 242 | |
| 14 | Gemma 3 4Blocal, no thinking · open weights | 07 of 42 | 0000000 | 6.7% | 0 | 7 of 7 | 0.925 | n/a | 177 | 18 |
No models match your search.
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.
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
Output tokens by difficulty
Average output tokens per grid, reasoning included. Token counts include reasoning when reported by the provider.
| Model | Cozy | Gentle | Steady | Tricky | Devious | Expert | Beyond |
|---|---|---|---|---|---|---|---|
| Claude Opus 5.5 | 4,521 | 8,296 | 12,067 | 16,782 | 8,398 | 11,761 | 20,962 |
| Claude Fable 5.1 | 5,128 | 10,788 | 16,626 | 11,143 | 9,188 | 23,410 | 42,711 |
| GPT-6 Sol | 4,229 | 9,606 | 11,675 | 15,702 | 7,839 | 12,594 | 28,828 |
| Claude Sonnet 5.5 | 5,884 | 10,288 | 14,392 | 17,670 | 8,807 | 14,058 | 23,134 |
| GPT-6.1 Sol | 3,938 | 6,007 | 8,432 | 8,794 | 6,595 | 9,598 | 17,701 |
| GPT-6 Astra | 2,768 | 4,133 | 10,358 | 5,546 | 8,886 | 5,917 | 11,303 |
| Claude Haiku 5.5 | 15,853 | 22,690 | 34,434 | 33,600 | 20,784 | 38,906 | 44,833 |
| GPT-6 Luna | 1,826 | 1,485 | 1,971 | 1,748 | 1,836 | 2,203 | 1,381 |
| Qwen3.8 Flash-Next | 37,321 | 36,521 | 91,260 | 72,341 | 54,011 | 64,097 | 94,361 |
| gpt-oss 20B | 8,212 | 18,046 | 16,661 | 64,841 | 15,941 | n/a | n/a |
| Qwen3.8 27B | 18,402 | 10,077 | 11,476 | 11,251 | 10,583 | 9,257 | 15,116 |
| Ministral 3 8B | 108 | 108 | 108 | 108 | 108 | 108 | 108 |
| Qwen3.5 9B | 3,000 | 3,000 | 3,000 | 3,000 | 1,606 | 1,605 | 1,605 |
| Gemma 3 4B | 142 | 295 | 133 | 259 | 132 | 149 | 127 |
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.
| Model | coz | 2 | 3 | 4 | 5 | 6 | gen | 2 | 3 | 4 | 5 | 6 | ste | 2 | 3 | 4 | 5 | 6 | tri | 2 | 3 | 4 | 5 | 6 | dev | 2 | 3 | 4 | 5 | 6 | exp | 2 | 3 | 4 | 5 | 6 | bey | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Claude Opus 5.5 | ||||||||||||||||||||||||||||||||||||||||||
| Claude Fable 5.1 | ||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Sol | ||||||||||||||||||||||||||||||||||||||||||
| Claude Sonnet 5.5 | ||||||||||||||||||||||||||||||||||||||||||
| GPT-6.1 Sol | ||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Astra | ||||||||||||||||||||||||||||||||||||||||||
| Claude Haiku 5.5 | ||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Luna | ||||||||||||||||||||||||||||||||||||||||||
| Qwen3.8 Flash-Next | ||||||||||||||||||||||||||||||||||||||||||
| gpt-oss 20B | ||||||||||||||||||||||||||||||||||||||||||
| Qwen3.8 27B | ||||||||||||||||||||||||||||||||||||||||||
| Ministral 3 8B | ||||||||||||||||||||||||||||||||||||||||||
| Qwen3.5 9B | ||||||||||||||||||||||||||||||||||||||||||
| Gemma 3 4B |
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.
| Tier | Hardest technique needed | Givens |
|---|---|---|
| Cozy | Singles only | 31 to 42 |
| Gentle | Scanning | 25 to 30 |
| Steady | Locked candidates | 27 to 32 |
| Tricky | Hidden pairs and triples | 24 to 27 |
| Devious | Wings and fish | 26 to 41 |
| Expert | Deep wings and fish | 23 to 28 |
| Beyond | No human technique finishes it | 21 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.
Looking for published evaluations from other sources? Browse leaderboards →