BENCH / CHESS

Chess benchmark

Standard chess and Chess960 against fixed engine opponents. Compare ratings, rejected moves and the cost and time of each game.

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.

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,370measured 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.