ChessRank.org
Blog
September 8, 2026

How Is Chess Accuracy Calculated? Lichess, Chess.com and ChessRank Compared

Last updated:

Chess accuracy is calculated in two steps. First the engine's evaluation in centipawns is turned into a winning chance, called Win%. Then each move is scored by how much Win% it gave away: a move that loses nothing scores 100%, and on Lichess's published formula a move that drops your winning chance by 10 points scores about 64%. The game's accuracy is an average of those move scores.

Lichess publishes its formulas. Chess.com does not. ChessRank uses the same two steps as Lichess with its own calibration. Below are the formulas, a worked example with real numbers, and the reasons the same game gets a different score on each site.

From centipawns to win percentage

A chess engine reports its evaluation in centipawns, hundredths of a pawn, from the point of view of the side to move. Centipawns are a poor measure of mistakes on their own: losing one pawn in an equal position matters a lot, while losing one pawn when you are already a rook up hardly matters. So the evaluation is first converted into a winning chance. Lichess uses this curve:

Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × centipawns)) - 1)

EvaluationWin% for the side aheadWin% for the other side
0.0050.0%50.0%
+0.5054.6%45.4%
+1.0059.1%40.9%
+2.0067.6%32.4%
+3.0075.1%24.9%
+5.0086.3%13.7%

The curve is steep near equality and flat at the ends. That is the whole point: the same material loss costs a lot of winning chance in a balanced position and very little in a decided one.

From win percentage to move accuracy

For each move, the engine evaluates the position before and after it, both from the mover's side. The drop in Win% is turned into a move accuracy with a second published formula:

Accuracy% = 103.1668 × exp(-0.04354 × (winPercentBefore - winPercentAfter)) - 3.1669

A worked example

  1. Before your move the engine says +1.00 for you. Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × 100)) - 1) = 59.1%.
  2. You play a move after which the evaluation is -0.50 from your side. Win% = 45.4%.
  3. The drop is 59.1 - 45.4 = 13.7 points of winning chance.
  4. Accuracy = 103.1668 × exp(-0.04354 × 13.7) - 3.1669 = 53.7% for that move.

The same formula gives these values for other drops:

Win% lost by the moveMove accuracy (Lichess formula)
0100.0%
291.4%
579.8%
1063.6%
2040.0%
3024.8%

Notice that accuracy falls fast for the first few points and then flattens. A string of small imprecisions costs more than most players expect.

How game accuracy is aggregated

A game score is not simply the average of the move scores. Take five moves scored 100, 100, 100, 100 and 20. The plain average is 84%. The harmonic mean, which is dominated by the worst values, is about 56%. Every site picks its own way between those two numbers.

  • Lichess weights moves by how volatile the position was, measured over a sliding window of moves, and combines that weighted average with a harmonic mean. Moves played in sharp, swinging positions count for more.
  • Chess.com does not publish its aggregation.
  • ChessRank blends the plain average with the harmonic mean, so one blunder pulls the game score down more than a simple average would, but less than a pure harmonic mean.

For the move labels that come out of the same drops, see Blunder vs Mistake vs Inaccuracy. For the older measure based on raw centipawns, see Centipawn Loss (ACPL) Explained.

Chess.com CAPS2: what is public and what is not

Chess.com's accuracy is powered by CAPS2, which is proprietary. What is public is how the product behaves: Game Review gives each side an accuracy score, labels every move, and shows a Game Rating, which the chess.com help center says "is determined by comparing the quality of your moves to what is expected from a player at your rating level." Free accounts get one full Game Review per day. Platinum gives unlimited Game Review and Diamond adds unlimited coach explanations.

What is not public: the formula from evaluation to move score, the weights used for the game score, the engine settings and the exact label thresholds. Anyone who says they know CAPS2's formula is guessing or reverse engineering it.

How ChessRank analyzes your games

This section is the reference for how ChessRank's analysis works. Every point is taken from the site's code.

  • Engine. Stockfish compiled to WebAssembly, running in your browser on your own device. Nothing is installed.
  • Depth. Every position of the game is searched to depth 14. Game Analysis keeps the engine's two best lines for each position, which it needs for the Great label. The Report analyzes many games at once and keeps one line, so it never awards Great and its numbers for a game can differ slightly from Game Analysis.
  • Precomputed openings. About 10,000 opening positions are stored with evaluations computed in advance, 99.45% of them at depth 40 or deeper, with up to four engine lines each. Whenever a position of your game is one of them, the stored evaluation is used instead of a new search.
  • Endgame tablebases. Syzygy tablebases are used in Board Analysis and by the optional Go deeper button in Game Analysis. They are never used for the accuracy, the labels or the rating of a game.
  • Where the scoring runs. Your browser sends the moves and the engine's evaluations to ChessRank's grading server, which returns the labels, the accuracy and the rating estimate. The server does not keep the game.
  • Win%. Evaluations are turned into winning chances with a logistic curve of the same shape as Lichess's, with its own slope. Very large evaluations are capped, and a forced mate counts as a very large advantage that shrinks the further away the mate is.
  • Move accuracy. An exponential curve of the Win% drop, the same shape as Lichess's, with constants fitted to chess.com reviews of real games. Book moves and moves with only one legal option score 100%. A side whose every move was book, forced or the engine's own first choice scores exactly 100%.
  • Game accuracy. A blend of the plain average and the harmonic mean of the move accuracies. The accuracy of each game phase (opening, middlegame, endgame) uses a larger harmonic share.
  • Labels. Inaccuracy, Mistake and Blunder come from the size of the Win% drop. Best means the engine's first choice. Great is the best move when the second best line is much worse. Brilliant is a sacrifice the engine confirms is sound. Miss means a winning position or a forced mate was let go without losing the game. Book comes from a list of named openings and Forced marks a move with one legal option. The last move of a game is never labeled an inaccuracy, mistake or blunder. ChessRank shows its own names for these by default, and Settings can switch to the familiar ones.
  • Cost. Free, no account needed and no daily limit.

Why the same game scores differently on each site

LichessChess.comChessRank
EngineStockfish 19 for server analysis, also browser analysisNot publishedStockfish (WebAssembly) in your browser
Search depthNot covered by our sourcesNot published14 per position, precomputed openings at depth 40 or more
Where it runsLichess servers or your browserChess.com serversEngine in your browser, scoring on ChessRank's server
Accuracy formula publicYesNo (CAPS2)Method described above, constants not published
Move labelsInaccuracy, Mistake, BlunderFull set from Brilliant to BlunderFull set from Brilliant to Blunder, plus Forced
Per-game rating estimateNoYes (Game Rating)Yes
Free limit40 server analyses per day, browser analysis unlimited1 full Game Review per dayNo daily limit

Three things move the number. Different engines and depths see different best moves, especially in sharp positions. Different curves turn the same evaluation drop into a different move score. And different aggregation rules weigh the bad moves differently. For more on engine disagreement, see Why can our results differ slightly from other platforms? To see how accuracy relates to playing strength, read Chess Accuracy by Rating, and for the per-game strength number, Chess.com Game Rating Explained.

Frequently asked questions

What is the chess accuracy formula?

Lichess publishes it in two parts. Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × centipawns)) - 1) turns an evaluation into a winning chance, and Accuracy% = 103.1668 × exp(-0.04354 × (winPercentBefore - winPercentAfter)) - 3.1669 scores each move by the winning chance it lost. Chess.com does not publish its formula.

What is CAPS2?

CAPS2 is the proprietary system chess.com uses to compute accuracy in Game Review. Chess.com does not publish its formula, weights or engine settings. What is public is the output: an accuracy per side, a label per move and a Game Rating.

Why is my accuracy different on Lichess and chess.com?

The two sites use different engines and settings, different curves from evaluation to move score and different ways of averaging moves into a game score. Lichess also weights moves by how volatile the position was. A gap of several points for the same game is normal.

What does win percentage mean in chess?

Win percentage is the engine's evaluation converted into a winning chance between 0 and 100. On the Lichess curve +1.00 is about 59% and +3.00 is about 75%. Accuracy formulas measure how much of that winning chance each move gave away.

Is accuracy the same as average centipawn loss?

No. Average centipawn loss adds up raw evaluation drops, so giving away a pawn costs the same in a won position and in an equal one. Accuracy first converts evaluations into winning chances, so the same pawn costs much less once the game is decided.

Does ChessRank use tablebases for game accuracy?

No. Syzygy tablebases are used only in Board Analysis and by the optional Go deeper button. Accuracy, move labels and the rating estimate come from depth-14 Stockfish searches and the precomputed opening positions.

Sources

The Win% and accuracy formulas and the description of Lichess's game aggregation come from lichess.org (lichess.org/page/accuracy), and the Lichess analysis limits from lichess.org/features. The Game Rating definition and the Game Review limits come from the chess.com help center. Facts about ChessRank come from its own code. ChessRank is an independent project and is not affiliated with, endorsed by or sponsored by Chess.com or Lichess.