I have become familiar with chess algebraic notation, and have noticed that all of the software tools I've used to re-create the games so I can create videos of them lack one feature: they never append an exclamation mark ! after a "brilliant move" or a question mark ? after a blunder. Similarly, they don't note an "interesting move" !? or a "dubious move" ?!.

Is there an algorithm which can determine which moves are brilliant/blunders/etc? The only approach I have thus far is using a combination of C++ and MATLAB to calculate the "effective score" at each move in the game, detect peaks and troughs, and then annotate that particular move as a "turning point". The only problem with this approach, is that if a player deploys a clever, three-move tactic, my algorithm would likely just recognize a move towards the middle/end of the tactic/sequence rather than the "brilliant" move that started it.

  • 1
    I'm voting to close this question as off-topic because this is asking if software uses an unofficial part of chess notation that is entirely opinion based on the person who is doing the notation.
    – Joe W
    Dec 8, 2015 at 17:49
  • 4
    You could just as easily rephrase this as "is there a way to objectively determine an annotation for a chess move" and remove software. It shouldn't be closed, but reworded to be more within the realm of the site. Even if the question is inspired by software, if the question is about the algorithm it's totally legit.
    – corsiKa
    Dec 8, 2015 at 17:59

2 Answers 2


No - there isn't a way to auto-annotate for all moves. Strong players often disagree on how to annotate moves using these symbols, particularly when the move is a non-forcing, non-tactical move.

I'm not a programmer by any means, but your approach of looking at changes in the effective score is how engines point out blunders, e.g. a significant drop is caused by a loss of time, material or the failure to parry a threat, e.g. mate. Additionally, you might want to look at the evaluation of the position in a few moves time, assuming the best moves are played.

For example, in Ubisoft's Chessmaster, the blunder alert function pops up and says that you've made a blunder because there is a 3 move checkmate coming. Maybe you could contact a chess software developer for ideas.


The thing is : some chess programs have a way to compute if the player have made a brilliant move or a blunder. The program I use (Fritz 12) does it with post-game analysis sometimes, so you have to have quite a powerful engine if you want to have this kind of annotations.

But I think it's more a front-end kind of stuff : you won't see the engine doing this directly. The program that runs in front of the engine and can print the "value" of each move has this value and if there is a drop between the last move and the currently calculated value, it's easy to see the blunder. However, a brilliant move is really hard to detect.

And now that we have every single position with up to six pieces in memory, you still have to say what will be the result.

And as @user1108 said, you could contact a chess programmer to learn more about annotations in chess engines.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .