Stockfish provides the best moves/lines but is there a command or technique to get inaccuracies, mistakes and blunders? How is this done by lichess or chess.com?

They also have the ability to show an evaluation chart throughout the game. Are they doing it iteratively move by move? Even in that case how can you categorize the moves as mistakes or blunders using Stockfish?


1 Answer 1


Common methods for engine annotation include a strict evaluation model or the expected points model. In the strict evaluation model, engine annotations require user-defined parameters to classify inaccuracies, mistakes, and blunders using the strict difference in the evaluation between the move played and the engine's top choice.

In the expected points model, the engine's evaluation is mapped to a function between 0 and 1, indicating the probability of win (or the expected score). Then the assessed move's expected points score is similarly compared to the engine's top choice.

Chess.com: Using Chess.com's Knowledge Base, the current documentation for How are moves classified? What is a ‘Blunder’ or ‘Brilliant’ and etc? shows moves are classified using a new system, ClassificationV2, which uses an expected points model instead of the previous strict evaluation differences.

Chess.com is using the probability of a win evaluation and assessing the move's impact on that probability based on the following:

  • Best: 0 ≤ change ≤ 0
  • Excellent: 0 < change ≤ 0.02
  • Good: 0.02 < change ≤ 0.05
  • Inaccuracy: 0.05 < change ≤ 0.10
  • Mistake: 0.10 < change ≤ 0.20
  • Blunder: 0.20 < change ≤ 1.00

Chess.com labels a move as "brilliant" (!!) when it sacrifices a piece, is best or nearly best move in the position, does not result in you having a bad position, and where you would not be completely winning if you had not found the move. This is defined more generously for lower rated players and stricter for higher rated players.

Lichess.org: The documentation for Lichess indicates that they also use their Win% and Accuracy% metrics "to identify inaccuracies/mistakes/blunders in game analysis."

Lichess definitions:

  • "Accuracy% represents how much you deviated from the best moves, i.e. how much your winning chances decreased with each move you made."
  • "Win% represents your chances of winning the game from a given position."

Lichess first computes Win% = 50 + 50 * (2 / (1 + exp(-0.00368208 * centipawns)) - 1)
which allows comparing Win% before and after each move.

This enables the Accuracy% calculation.
Accuracy% = 103.1668 * Math.exp(-0.04354 * (winPercentBefore - winPercentAfter)) - 3.1669

Older Lichess forum posts (1, 2) indicate previous strict evaluation differences such as

  • Inaccuracy: 0.5 < gap ≤ 1,
  • Mistake: 1 < gap ≤ 2, and
  • Blunder: 2 < gap,

may have been previously used, but it seems this is no longer the case.

  • 1
    Why the downvote? Did I misinterpret one of the sources? Jan 20, 2023 at 12:48
  • 1
    thanks a lot, very useful, let me think about it and read the reference and get back to you tomorrow. No idea who downvoted it.
    – Patola
    Jan 20, 2023 at 13:27
  • I'm still saying: We still need May 16, 2023 at 19:44
  • We have amazing engines, but we do not have the right software to utilize their power. May 16, 2023 at 19:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.