BENCH / PLANNING & CORRECTION

FreeCell benchmark

Classic numbered deals refereed with the rules of FreeCell on Crest Arcade, the same engine you can play. The tiers take free cells away. Compare deals won, how far lost games got, the moves the referee refused, and the cost and time of a game.

5 model settings29 games3 wonUpdated 2026-10-29

FreeCell leaderboard

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

#ModelScore95% intervalWon per tierEas4c3c2c1cCards homeRefused / gameMoves / replyPlanGamesAPI cost / gameSec / game
1GPT-6 Solreasoning medium205 of 301000015.45.005.1% of moves sent11.30 of 15$0.381735.2
2GPT-6 Astrareasoning medium205 of 301000014.24.405.5% of moves sent10.6n/a5$1.25659.4
3GPT-6.1 Solreasoning medium205 of 300100014.03.603.8% of moves sent11.90 of 15$0.267523.5
4GPT-6.1 Terrareasoning medium05 of 30000008.46.406.7% of moves sent9.40 of 15$0.063113.3
5GPT-6 Lunareasoning medium05 of 30000002.85.0022.3% of moves sent2.10 of 15$0.008985.5

Score is the win rate averaged over the five tiers, each tier weighted the same, from 0 to 100. Cards home is how many of the 52 cards reached the foundations, averaged per tier. Plan is the one-reply variant, scored apart. A model ranks once it has played the first 6 games of every tier; until then it shows how many of those it has played and ranks after the models that have. Past that the bench keeps playing further games in the same order for every model, and every finished one counts, so n grows and the intervals narrow.

Cost frontierAPI-equivalent cost per game. Local models have no list price and are omitted. Bars show 95% intervals.
Closed weightsOpen weightsPareto frontier
02040$0.010$0.030$0.100$0.300$1.00API-equivalent USD / game (log scale)ScoreGPT-6 SolGPT-6 Astra
Time frontierObserved response time, including reasoning and queue wait. Routes and hardware differ.
Closed weightsOpen weightsPareto frontier
02040200400600Seconds / gameScoreGPT-6 SolGPT-6.1 Sol

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 items. Use completed sets for direct comparisons.

By tier

Deals won of games played, then the win rate with its 95% interval and the cards home on average. The count after each result is n, the games finished in that tier.

ModelEasyFour cellsThree cellsTwo cellsBeyond
GPT-6 Solreasoning medium1 of 1100% (17 to 100) · 52.0 home0 of 10% (0 to 83) · 10.0 home0 of 10% (0 to 83) · 10.0 home0 of 10% (0 to 83) · 3.0 home0 of 10% (0 to 83) · 2.0 home
GPT-6 Astrareasoning medium1 of 1100% (17 to 100) · 52.0 home0 of 10% (0 to 83) · 11.0 home0 of 10% (0 to 83) · 4.0 home0 of 10% (0 to 83) · 4.0 home0 of 10% (0 to 83) · 0.0 home
GPT-6.1 Solreasoning medium0 of 10% (0 to 83) · 10.0 home1 of 1100% (17 to 100) · 52.0 home0 of 10% (0 to 83) · 3.0 home0 of 10% (0 to 83) · 4.0 home0 of 10% (0 to 83) · 1.0 home
GPT-6.1 Terrareasoning medium0 of 10% (0 to 83) · 25.0 home0 of 10% (0 to 83) · 8.0 home0 of 10% (0 to 83) · 3.0 home0 of 10% (0 to 83) · 5.0 home0 of 10% (0 to 83) · 1.0 home
GPT-6 Lunareasoning medium0 of 10% (0 to 83) · 3.0 home0 of 10% (0 to 83) · 4.0 home0 of 10% (0 to 83) · 7.0 home0 of 10% (0 to 83) · 0.0 home0 of 10% (0 to 83) · 0.0 home
Every game

Every game

One square per deal, filled when it won. The one-reply plan games are on each model's page. Columns run tier by tier, in the order every model meets them. Click a square to open that one.

ModelEas234564c234563c234562c234561c23456
GPT-6 Sol
GPT-6 Astra
GPT-6.1 Sol
GPT-6.1 Terra
GPT-6 Luna
MethodologyProtocol, scoring & limitations

The deals

Classic numbered deals, dealt the way the original Windows game deals them, and refereed with the rules and messages of FreeCell on Crest Arcade. A solver checked every deal winnable with the free cells its tier allows. The tiers change the number of free cells, not the rules:

TierFree cellsThe deals
Easy4Deals winnable with one free cell, played with four
Four cells4Deals that need two free cells, played with four
Three cells3The same deals with three free cells
Two cells2The same deals with two: not one cell to spare
Beyond1The easy deals with a single free cell

Four cells, Three cells and Two cells use the same deals, so only the space changes. Easy and Beyond share another pool. Every model meets the same deals in the same order from set v1. A model ranks once it has played the first 6 of every tier. After that the bench keeps playing further deals, up to 100 per tier, so n grows and the intervals narrow.

A game

Every request is fresh: the rules, the notation, the whole position as text, the current limit on how many cards can move together, how many replies are left, and what happened to the last reply. The model sends any number of moves in standard notation: columns 1 to 8, free cells a to d, h for the foundations. The referee plays them in order until one is not allowed, then says how many were played and why that one was refused, in one plain sentence. The refused move and everything after it are not played.

There are no automatic moves: what the model writes is exactly what happens. Once the rest of the game is only moves to the foundations, the referee finishes it and the game is won. A game is lost at 30 replies, after 8 replies in a row with no new card home, when no legal move is left, or on resignation. The one retry in a turn is for a reply with no moves tag.

Plan

The plan variant deals the Easy tier with one reply only: the whole solution, planned with no feedback. It separates planning from correcting course, which is what the main game mostly measures, and it is scored apart from the tiers.

Score

The score is the win rate in each tier, averaged so every tier counts the same, from 0 to 100, with a 95% interval from each tier's Agresti-Coull uncertainty. Cards home is partial credit: how far a lost game got, out of 52. Refused counts the moves the referee would not play.

Cost and time

Same as the chess and sudoku benchmarks: 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 of every request in the game, retries included, would cost at the lab's list price. Local models have no list price, so they show n/a, not zero. Time is the wall-clock wait for the replies, including any queue on our side, so compare it within a route rather than across them. 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 · CSVUse with credit to Glimmer Index.