RookSac
← Back to RookSac

Move classifications explained

Every move in a review gets one label. Most of them come from a single number: how much winning chance the move gave away compared with the engine's best move, measured in win-percentage points. A few labels have extra conditions.

Last updated: September 15, 2026

The win% scale

RookSac converts the engine's evaluation into a win probability using the Lichess model, then compares the position before and after your move. A move that drops your win chance by 3 points is judged the same whether the eval went from +0.2 to −0.1 or from +6 to +5 — what matters is the practical swing. Accuracy is the same drop expressed on a 0–100 curve.

The labels

Brilliant !!

A sound sacrifice. The move must give up real material — roughly two pawns or more, net, once the immediate capture-and-recapture sequence resolves — that the opponent can actually take. This includes using a forcing move instead of saving an attacked piece when the continuation justifies it. The position also has to stay about equal or better for you afterwards, and the move has to be the engine's choice or within a couple of win% of it. Routine simplification while already winning does not qualify.

Great !

An only-move. The engine's second-best option is clearly worse (a large win% or centipawn gap), the move is not just an obvious recapture or a free material grab, and the position is not already completely won or lost. These are the moments where finding the one path mattered.

Best ★

The move matches the engine's top choice. No winning chance lost.

Forced □

The only legal move in the position. This is a rules fact, not an engine preference, so it is shown separately from Best and receives full accuracy.

Excellent ✓

Not the top move, but within about 2 win% points of it. Practically as good as best.

Good ✓

Roughly 2 to 5 win% points lost. A reasonable move that keeps the position on track.

Book

A known opening move, matched against the Lichess chess-openings library. Book moves are recognised by position, so transpositions still count. They are not scored for accuracy.

Inaccuracy ?!

About 5 to 10 win% points lost. The position is still fine, but you made it harder than it needed to be. Individually minor; a game full of them is a real leak.

Miss ✗

A specific kind of error: you had a clearly winning move available (around +3 or better) and played something that gave the win away (down to roughly +1.2 or less), losing at least 10 win%. Missed wins are called out separately because they cost the most rating points.

Mistake ?

About 10 to 20 win% points lost. A real change in the character of the position — a winning game becomes only slightly better, an equal game becomes difficult. In an endgame, a move that still keeps a clear +3 or better win is capped at Inaccuracy: the route may be less precise, but the winning result has not been thrown away.

Blunder ??

More than about 20 win% points lost. A game-changing error: dropping material, walking into a tactic, or throwing away a decisive advantage.

The exact thresholds live in one place in the source (js/classify.js) and are occasionally re-tuned, so treat the numbers above as the current shape rather than fixed law. When you load an older saved analysis, its labels — including the Brilliant sacrifice test — are re-checked against the current rules.

What to look at

The single most useful number is your combined Inaccuracy + Mistake + Blunder rate, and how it changes by phase and by time control. Brilliant and Great counts are fun but they are not where rating comes from — closing the error rate is.