How does centipawn scoring work?/Why is a higher (positive) score horrible while a lower score is better?

I'm a total beginner in Chess. I've known the basic rules for at least 20 years, but have never played it somewhat serious. Only toddler-level.

I recently started trying to learn how to play properly. I've been using LucasR to train myself. But I don't always how the scoring system works. Sometimes it says that a higher (positive) score is a blunder, while a lower (positive) score is a good move?

Take this row in the post game analysis for example:

(I accidentally cut off the headers, but the 2nd column is my move, the third is the "best move" according to the engine)

So, according to the engine I made a blunder in the 4th move. I'm not asking why it is a blunder or not. But I wonder why a score of +4.82 is a blunder while a score of +0.62 is "decent"? I thought that this score (the centipawns) are a measure of how well your strategic position in the game is? Shouldn't a higher value be better then?

• It looks like the score is from the White perspective. Higher value is better for White. Commented Jul 23, 2022 at 19:19
• Just to avoid confusion. The score is for White, not for Black, i.e. it doesn't matter whether you play White or Black as User58697 has pointed out. For further details see answer below by Chesskobra and comments to it.
– user32756
Commented Jul 24, 2022 at 10:54
• General info on centipawns chessprogramming.org/Centipawns Note that humans do not think in terms of "this position is 1.20 pawns up"
– qwr
Commented Jul 25, 2022 at 23:50

The score is from white's perspective. So 4.82 is much better for white than 0.62. Also notice that on the next move, white does not play Qa4, and loses the advantage, and the score becomes negative from white's perspective, i.e., the position is now better for black.

Also, note that in the above example the score is not 4.82 centipawns (100 centipawns = 1 pawn), but 4.82 pawns, which seems reasonable since if white played Qa4, you would lose the knight, so straight 3 points (approximately 3 pawns) loss.

• Thanks a lot! That makes sense indeed. Is that a standard thing? Or just something odd in this chess-program? Because to me, as a beginner, it's very confusing. Especially when it gives hints where the suggested move appears worse than my move. Commented Jul 23, 2022 at 20:26
• Will accept answer in 24h as per SE etiquette. Commented Jul 23, 2022 at 20:27
• @Opifex, my two cents. These eval. numbers heavily depend on the strength of the program. The stronger it is, the further it calculates (say 15 moves ahead), the more it affects eval. I mean the position may look equal to grandamasters but if the engine sees an arcane victory in 15 moves, the eval might jump like +6 without apparent reason, i.e. it might be too deep far ahead for most humans to see during 2 hr game. Sometimes pro players decrease depth (strength) when analyzing their games to prevent too arcane/inhuman ideas. Thus, eval accounts for many moves ahead (=for far away future!).
– user32756
Commented Jul 23, 2022 at 21:03
• It is pretty much standard nowadays, although different programs may give different numbers, and sometimes the same program may give different numbers. For example, notice that in the 4th row, when you play Nb4, the engine shows +4.82, while after white plays b3, the engine analysis is saying Qa4+ would have been +4.79 because the engine has seen a little more even though it is essentially the same principal variation. You should take the actual numbers with a grain of salt, but still +1 vs +4 vs +15 would be significant. Commented Jul 23, 2022 at 21:31
• And to finish off this question completely, the engine doesn't show the strategic evaluation or static eval for the current position but accounts for what will happen into the future. It doesn't do just thorough search like 15-20 moves ahead. Sometimes its selective search, not the thorough main search, extends to 30-40 moves ahead. If it finds mate like that, it shows mate in 32, etc.
– user32756
Commented Jul 24, 2022 at 10:58

Basic Interpretation:
As mentioned in this answer, the evaluation +0.5 (+50 centipawns) means a half-pawn advantage for White while a –2 evaluation (-200 centipawns) implies a 2 pawn advantage for Black.

Relationship to Win Probability:
There is also a natural link to the probability of the game's outcome. Instead of the centipawn-based evaluation that Stockfish uses, some neural network-based engines such as AlphaZero or LeelaZero estimate the probability of a win from the position. The figure below illustrates this.(1)

The exact nature of the mathematical relationship may vary slightly. Given the probability of a win, `feval`, the centipawn evaluation has been given by `cp = 290.680623072 * math.tan(3.096181612 * (feval - 0.5))` but was updated to be `cp = 111.714640912 * tan(1.5620688421 * feval)`.(2–3)

Various Models: In addition to inverting the functions above, there are additional models for converting a centipawn evaluation to the probability of a win.(1,5)

`winning chances = 50 + 50 * (2 / (1 + exp(-0.004 * centipawns)) - 1)`

The figure below illustrates the model: `W = (1 + 10^(P/K))^(-1)` where W is the probability of a win, P is the pawn advantage evaluation, and K is an unknown constant (set to 4).(1)

Thus, a higher evaluation implies a higher probability of White winning and a lower evaluation (negative) implies a higher probability of Black winning.

100 centipawns ≠ 1 pawn. As pointed out in the comments by @Allure, 100 centipawns is no longer truly indicating a 1 pawn advantage. Stockfish's recent documentation (see Normalize evaluation) explains that with the rise of the NNUE framework Stockfish now uses "'100 centipawns' for a position if the engine has a 50% probability to win" under specific conditions for the engine.

• Thank you! It's not an answer to the question (but you already linked to the answer), but it is indeed very useful information for a beginner like me! Commented Jul 23, 2022 at 20:28
• @Opifex Part of your question title is "Why is a higher (positive) score horrible while a lower score is better?" I wasn't fast enough to be first, but my answer absolutely addresses the question. I make no claims on what should be the accepted answer. Chesskobra's answer was the fastest gun in the west and deserves recognition as a very good answer. Commented Jul 23, 2022 at 20:46
• Definitely a downvote. The articles recommended don't seem very credible to me, except those related to programming but they seem just to scratch the surface of very complicated problem. I mean this answer will probably be okay if the OP was asking about probabilities. But if it was the case, and if I was the asker, sorry, but even then your answer would seem only obfuscating both for professionals and amateurs. I'm sorry.
– user32756
Commented Jul 24, 2022 at 11:08
• Thank you. But that fit is terrible! The curve is entirely on one side of the data for most of the interesting data points. I’d be very interested in a follow-up thread finding a decent model for this. But this is not the place. Commented Jul 24, 2022 at 17:47
• @SecretAgentMan my correction turned out to be incorrect, but thanks for the update which is correct =) Commented Jan 23, 2023 at 0:23

I can go deeper on this part:

I wonder why a score of +4.82 is a blunder while a score of +0.62 is "decent"

As others have mentioned, CP scores being positive or negative reflect the computer eval being in favor of white or black respectively, with ex. +3 being an advantage the equivalent of 3 pawns for white.

However, you may come to notice that the "judgement" on the move (`inaccuracy`, `mistake`, or `blunder` are the standard ones, with other chess programs defining others, like `decent`) is not always the same even if the difference in CP values—the CP loss or CPL—is the same. For example, if your move as white takes the CP score from `0` to `-200`, the move may be called a blunder, but if it takes you from `-600` to `-800`, the move may be called an inaccuracy.

The reason for this is because judgements are made based on win probability, as @SecretAgentMan's answer alludes to. I've been working on interpreting the Lichess source code lately, and you can actually see for yourself here and here the source code that "judges" a move. Your question was not specific to Lichess, but LucasR likely does something quite similar internally. The Lichess algorithm goes like this:

Given a `score_before`, `score_after`, and `turn` (ex. `-2.1` -> `+0.4`, `turn=black`):

1. Convert `score`s to `cp`s:

a. If either `score` is a mate score (ex. `#-5`, black mates in 5), set its `cp` to `+100` if it's mate for white, or `-100` if it's mate for black (not applicable)

b. Multiply `scores` by 100 to get `cp` values (ex. `-210` -> `+40`, `turn=black`)

c. Cap both `cp`s to be within the range `[-1000, 1000]` (already done)

2. Calculate `winning_chances_before` and `winning_chances_after` from `cp_before` and `cp_after` using the following formula. As of a few weeks ago, Lichess updated to use this formula, which was determined experimentally by analyzing user games: `2 / (1 + exp(-0.00368208 * cp.value)) - 1` (ex. ~`-0.3684` -> ~`+0.0735`, `turn=black`)

3. Cap both `winning_chances` to be within in the range `[-1, 1]` (already done)

4. Calculate `delta`, the loss in `winning_chances` (`wc`) with respect to `turn`. If `turn=white`, it's `delta = wc_before - wc_after`; or for `black`, `delta = wc_after - wc_before` (ex. ~`0.4419`)

5. Judge the move. If `delta >= 0.3`, the move is a `blunder`; if `delta >= 0.2`, it's a `mistake`; if `delta >= 0.1`, it's an `inaccuracy`, else the move gets no judgement. (Ex. `0.4419 >= 0.3`, so this move was a `blunder`).

Hope this is insightful even though it might not address the main question you were asking.

Further reading: Here's a OneDrive link to a spreadsheet where I manually calculate average CPL, a metric shown by Lichess after analyzing a game. It was part of some personal investigation into a weird bug in their code.