What makes a move Brilliant versus a Blunder? How chess engines calculate accuracy scores and classify every move you play. The algorithm explained simply.

A fast, free, and open-source desktop app for unlimited local game analysis.
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.
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.
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.
Evaluation graph with classification markers — red dots for blunders, cyan for brilliants
Move list showing Brilliant, Best, Mistake, and Blunder classifications on real moves
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
This is loosely inspired by Lichess's approach, but with independently tuned constants.
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.
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 classifier checks conditions in a specific sequence:
The win probability loss thresholds are checked after the priority logic, so a checkmate always gets classified correctly regardless of the WPL.
Understanding the classification system helps you prioritize what to work on.
The best players do not eliminate blunders and call it done. They reduce their inaccuracies until every non-critical move is at least Good.
Written by
Utkarsh Tiwari
Best Free Stockfish GUIs for Chess Analysis (2026 Guide)
Compare the best free Stockfish GUIs for chess analysis — Arena, Banksia GUI, Chess Analyzer Pro, Scid vs PC, and more. Find the right tool for local analysis.
Chess Analyzer Pro v2.2.0: Custom Themes, Setup Wizard & A Much Better First Day
v2.2.0 is out. This release focuses on the things that matter before you analyze your first game - getting the engine running, looking the way you want, and knowing where everything is.
Chess Analyzer Pro v2.1.0: Analysis Explorer, Polyglot Books, and Auto-Updates
The latest release of Chess Analyzer Pro adds an interactive opening explorer, support for Polyglot opening books, and cross-platform auto-updates. Here's what changed.