AI Chess

Average Centipawn Loss, Explained For Club Players

If you have ever clicked “Request a computer analysis” on Lichess and stared at the number next to your name, you have met average centipawn loss. Mine says 47. Yours might say 82. Neither number means much until you know exactly what the engine measured, what it threw away, and which parts of your game it is blind to.

So, what is average centipawn loss in chess? It is the mean amount of evaluation you gave up per move, measured in hundredths of a pawn, against an engine’s preferred move in the same position. That is the whole definition. Everything interesting about it lives in the details of how that mean gets computed and why the mean is a poor summary of how you actually play.

The unit first: what a centipawn actually is

A centipawn is 1/100th of a pawn of engine evaluation. When Stockfish prints score cp 38, it means “+0.38”, or roughly a third of a pawn in favour of the side to move’s opponent… depending on which convention the GUI applies. Raw UCI output is always from the side to move’s perspective; Lichess and Chess.com normalise everything to White.

Here is what unfiltered output looks like when you run Stockfish 17.1 from a terminal on a quiet middlegame position:

info depth 20 seldepth 29 multipv 1 score cp 41 nodes 3812446 nps 1904223 pv d4e5 c6e5 f3e5 d6e5
info depth 21 seldepth 31 multipv 1 score cp 36 nodes 5901337 nps 1901721 pv d4e5 c6e5 f3e5 d6e5
info depth 22 seldepth 33 multipv 1 score cp 44 nodes 9450211 nps 1898034 pv b2b3 h7h6 c1b2 f8e8
bestmove d4e5

Notice the top move changed at depth 22 and the score wobbled between +0.36 and +0.44 without the position changing at all. That wobble is baked into every centipawn loss figure you will ever see. The broader question of how much to trust a number like cp 41, when depth flatters it and when it lies outright, is the subject of the parent guide on reading engine output. Read that if you want the general picture; this page is only about the arithmetic that turns those numbers into one score for your game.

How the number is calculated, move by move

For each of your moves, the analyser records two evaluations: the score of the position before you moved (assuming best play) and the score after your actual move. The difference, clamped so it can’t go negative, is that move’s centipawn loss. Add them all up, divide by the number of moves you made, and you have your ACPL.

Take a real-ish sequence. Say you are White and the engine reports these evaluations across moves 20 to 27, all normalised to White:

Your moveEval beforeEval afterCentipawn loss
20. Rfe1+42+402
21. Bd3+40+355
22. Ne5+35−6095
23. Qg4−60−7515
24. f4−75−560485
25. Kh1−560−58020
26. Rf3−580−59818
27. Rg3−598−61820

Total loss: 660 across eight moves. ACPL for this stretch: 82.5.

Now look at where that 660 came from. Moves 22 and 24 contributed 580 of it, or 88% of the total. The other six moves together cost less than a tenth of a pawn each. Your ACPL of 82.5 describes a player making constant small errors. The actual game was six accurate moves and two catastrophes. The mean has erased the only thing worth knowing.

This is the single most important thing to internalise about the metric: ACPL is a mean, and means are destroyed by outliers. A 30-move game with one 900-centipawn blunder and 29 perfect moves scores exactly 30. A 30-move game where you drift 30 centipawns off every single move also scores 30. Those are different players with different problems.

The clamps, and why your blunders count less than you think

Lichess caps evaluations at ±1000 centipawns before computing loss, and forced mates get mapped to that ceiling. The practical effect is that once a position is completely lost, further errors stop registering. Hanging your queen at +12.00 costs you nothing on the scoreboard, because +12.00 and +8.00 both clamp to +10.00.

That ceiling produces a genuinely strange result. Players who blunder early and then flail in a hopeless position often post a better ACPL than players who keep a game close and lose it to one precise tactic at move 40, because the flailing happens inside the clamp. If you have ever wondered why the game you’re proudest of shows a worse number than the one you got crushed in, this is usually why.

Lichess versus Chess.com: you are reading two different metrics

Lichess shows you both ACPL and an Accuracy percentage. The Accuracy figure is not derived from centipawns directly. It converts evaluations into win probability first, using a published logistic formula:

win%  = 50 + 50 * (2 / (1 + exp(-0.00368208 * cp)) - 1)
acc%  = 103.1668 * exp(-0.04354 * (winBefore - winAfter)) - 3.1669

Because win probability flattens out at the extremes, a 200-centipawn error at +0.00 hurts your accuracy far more than a 200-centipawn error at +6.00. That is a much more sensible model of chess than raw centipawns, and it is why Lichess’s move classifications (inaccuracy, mistake, blunder) trigger on win-percentage swings of roughly 10, 20 and 30 points rather than fixed centipawn thresholds.

Chess.com’s Game Review leads with Accuracy too, computed by their CAPS2 system, which is a different formula with different calibration. Their classic analysis view reports an average centipawn loss figure separately. You cannot compare a Chess.com ACPL to a Lichess ACPL, and you certainly cannot compare either to what your own local Stockfish produces at depth 30 with 8 threads. Different engine, different depth, different clamp, different number.

What the numbers roughly mean at club level

With that caveat repeated loudly, here is a rough calibration for standard Lichess server analysis in rapid and classical games:

BandTypical ACPLWhat it usually reflects
1000–120090–130Two or three decisive blunders per game, plus hanging pieces
1200–150060–95One clear blunder, several tactical oversights
1500–170045–70Blunders mostly under time pressure; strategic drift elsewhere
1700–190035–55Errors concentrated in sharp positions and endgames
2000+25–40Small inaccuracies, rare full-point giveaways
Strong GM, classical12–22Near-forced play, long calculated sequences

Your bullet games will sit 30 to 60 points worse than your classical ones. A quiet 90-move rook endgame with obvious moves can hand you an ACPL of 12 that flatters you enormously. A sharp Najdorf where both sides are one tempo from disaster can leave you at 70 while you play the best moves you have ever found.

Turning this into an actual training plan

Stop treating ACPL as a score and start treating it as a pointer. The tool that makes this work is Lichess Insights (lichess.org/insights), which only counts games you have had analysed, so run analysis on your last 30 rapid games first.

Set the metric to Average centipawn loss and the dimension to Game phase, filtered to your main time control. You get three bars. A typical club result looks like opening 38, middlegame 61, endgame 84. That endgame number is the finding: you are not losing games in the opening, whatever your opening anxiety tells you.

Then change the dimension to Move time and look for the correlation. If your ACPL at 0 to 3 seconds per move is 95 and at 10 to 30 seconds is 40, your problem is not chess knowledge. It is a clock discipline problem, and no amount of opening study will touch it.

The third pass is manual and worth the twenty minutes. Open your last ten games, find every move flagged as a blunder, and write down only two things: the phase, and the tactical motif that was missed. Ten games at club level gives you somewhere between 12 and 25 blunders. Sort them. If seven of them are back-rank or loose-piece motifs, that is your next month of puzzle work, and it is a far better instruction than “my ACPL is 62, I should get it to 50.”

For deeper work on individual positions, load the PGN into Nibbler or En Croissant and run Stockfish locally with MultiPV set to 3. Seeing the second and third best moves tells you whether your move was a near-miss (15 centipawns behind a move you’d never find) or a genuine misunderstanding (the top three moves all share an idea you didn’t consider). ACPL cannot distinguish those two cases. You can, in about ninety seconds per position.

One experiment worth running before you trust any of this: take a single game you have already analysed on Lichess, load it locally, and re-analyse at depth 28 with a modern Stockfish build. Compare the two ACPL figures. The gap you find, often 10 to 20 points in either direction, is the measurement error you have been reading as a signal.