It is easy enough to use a chess engine to "annotate" a game to the extent of pointing out mistakes and blunders: when the evaluation function drops by greater than a certain amount, the move is deemed bad enough to merit a "?" or a "??".

Has anyone tried to develop a program to add exclamation marks to good/brilliant moves? In the eyes of a chess engine, those moves would usually be the best move for the position, but just being the best move does not make a move brilliant, because the best move may be obvious. Exclamation marks are added to moves that are hard to find by humans, which is somewhat subjective. But I imagine one could come up with some rules or heuristics, at least for things such as recognizing sound sacrifices. Or maybe there is a way to train the system using a library of annotated games.

I wouldn't expect such a tool to be better than a good human annotator, but I find the question interesting from an artificial intelligence perspective.

  • Check out the chess.com analyzer, Lichess has something similar I think. There is also an app called Analyze This which has such a feature (in beta)
    – firtydank
    Aug 14, 2017 at 19:23
  • 1
    @firtydank: I have used both the chess.com and lichess analyzers and they have the limitation I described: they recognize bad moves, but not good moves worthy of annotation. chess.com may classify moves as "excellent" if they agree with Stockfish, but this is the case even for trivial moves. I haven't tried Analyze This; I may give it a try.
    – itub
    Aug 14, 2017 at 19:31
  • 1
    Cool, np. I think its difficult for a chess engine to recognize a good move, because it does not understand the human limitations which makes a good move good.
    – firtydank
    Aug 14, 2017 at 19:38
  • 2
    www-lucaschess.rhcloud.com does add "!," but it's so liberal that it's not really a good feature. Aug 14, 2017 at 23:05
  • 1
    Analyzers that assign ! very liberally probably use the Nunn Convention: a move always gets a ! if it is the only move that doesn't affect the evaluation negatively, no matter how trivial it is. This is an objective criterion for engines (so you might use it, even if it's too much sometimes) - unlike the !!s, which are subjective (and what you are looking for in a strict sense).
    – Annatar
    Aug 15, 2017 at 6:52

3 Answers 3


Chesstempo has this function now.

Ref: https://beta.chesstempo.com/blog/9/good-move-annotations


It is not an answer, but an extended comment.

A great question, and a very interesting functionality proposal.

I don't know if such a tool exists - however if I were to implement it I'd consider analysing the same position using different strength settings. For example, if the move is only found by the top strength, it is a good candidate for !!. It is more or less easy to implement, but may require some effort tuning up.


Lichess has an excellent import tool with computer aided analysis.

After uploading a game and analyzing with Stockfish, you can download an annotated PGN of the game. It adds alternate lines and annotated symbols (?! for inaccuracy, ?? for blunder, etc.)

Computer analysis In the PGN, move 23. Qf3 looks like: 23. Qf3?? { (3.13 → 0.10) Blunder. Best move was Qg4. }

Here's an example game I uploaded and analyzed. Use the tabs/links below the game "FEN & PGN" > "Download Annotated" to export the annotated PGN.

Image showing link to download

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.