Brilliant vs Blunder: How Chess Engines Classify Your Moves
After you analyze a chess game, you see labels next to every move.
Brilliant. Great. Best. Excellent. Good. Inaccuracy. Mistake. Blunder. Miss.
Nine categories. Each one means something specific.
But how does the engine decide which label to give? Is it random? Is it just based on how much material you lose?
Here is how the classification actually works under the hood.
The Core Idea
Stockfish evaluates chess positions in centipawns. A centipawn is one-hundredth of a pawn. If you are up 100 centipawns, the engine thinks you are about a pawn ahead.
Every move changes the evaluation. If you go from +0.5 to +1.5, you gained something. If you go from +1.5 to -0.5, you lost something.
The classification system measures how much the evaluation changed and how that affects your winning chances.
Win Probability Loss (WPL)
Raw centipawn changes do not tell the full story. Losing 50 centipawns when you are already down 300 is not the same as losing 50 centipawns in an equal position.
So the app converts centipawns to win probability using a sigmoid function. This maps evaluation to a percentage between 0% and 100%.
The classification is based on how much win probability you lost compared to the best move.
The Nine Tiers
Best
Your move matches or is very close to the engine's top suggestion. No significant win probability lost. This is the baseline. You played the best available move.
Excellent
Slightly suboptimal but still a strong move. Minor win probability loss, usually under 2%. You found a good continuation even if it was not the absolute best.
Good
A reasonable move that is not ideal. Win probability loss between 2% and 4.5%. You had a better option, but you did not hurt yourself much.
Inaccuracy
A meaningful mistake. Win probability loss between 4.5% and 8%. You missed a better continuation, and your position is noticeably worse than it could have been. These are the small errors that add up over a game.
Mistake
A clear error. Win probability loss between 8% and 19%. This is where games start to turn. One mistake can flip a winning position into an equal one, or an equal one into a losing one.
Blunder
A serious error. Win probability loss of 19% or more. You went from a good position to a bad one, or from equal to losing. These are the moves that decide games.
Great
A move that improves your position significantly more than the alternatives. Requires at least a 15% win probability gain compared to other reasonable moves. These are rare by design. A Great move means you found something genuinely better than the obvious continuation.
Brilliant
The highest tier. Reserved for moves that find a tactic, sacrifice, or deep idea that significantly improves your position. If a move is checkmate or finds a forced win, it gets Brilliant. These are the moves you remember.
Miss
You had a winning move available but did not play it. Different from a mistake. A Miss means you were in a winning position and failed to find the decisive continuation.
How Accuracy Percentage Is Calculated
Each move gets an accuracy score between 0% and 100%.
The formula is 103.17 * exp(-0.05 * diff) - 3.17, where diff is the win probability difference between your move and the best move.
Perfect play equals 100% accuracy. A 200 centipawn mistake drops you to roughly 65%.
The overall game accuracy is a volatility-weighted harmonic mean of all move accuracies. This means:
- Moves in quiet positions carry less weight.
- Moves in critical positions carry more weight.
- A single blunder in an otherwise perfect game lowers your score less than the same blunder in a game full of mistakes.
This is loosely inspired by Lichess's approach, but with independently tuned constants.
How Book Moves Are Handled
Moves that match known opening theory, from the local opening database or a Polyglot book, get classified as Book and automatically receive 100% accuracy. The logic is that if you followed known opening lines, there is nothing to penalize.
Checkmate Handling
If your move delivers checkmate, it is always classified as Best. The engine's evaluation is capped at around 2000 centipawns for mate, and the classification algorithm treats it as the optimal outcome.
The Priority Order
The classifier checks conditions in a specific sequence:
- Was it checkmate? Best.
- Did you miss a forced mate? Miss.
- Did you find a winning move? Brilliant.
- Was it the best move? Best.
- Did you miss a winning continuation? Miss.
- Was it a blunder? Blunder.
- Was it a mistake? Mistake.
- Was it an inaccuracy? Inaccuracy.
- Was it good? Good.
- Was it excellent? Excellent.
- Otherwise. Great.
The win probability loss thresholds are checked after the priority logic, so a checkmate always gets classified correctly regardless of the WPL.
Why This Matters for Your Improvement
Understanding the classification system helps you prioritize what to work on.
- Blunders are obvious. Fix these first. They lose games directly.
- Mistakes and inaccuracies are where most improvement happens. These are the small edges you are giving up.
- Misses mean you had winning chances you did not convert. Study tactics.
- Brilliants and greats show you what you are doing right. Keep doing it.
The best players do not eliminate blunders and call it done. They reduce their inaccuracies until every non-critical move is at least Good.
Links
- Download Chess Analyzer Pro: chessanalyzer.xyz/releases
- GitHub Repository: github.com/imutkarsht/Chess_analyzer
- Analysis Calculation Docs: /docs/analysis-calc-logic