Skip to content
Chessblood

Accuracy calculator

How accurate were your moves?

Paste a game and get an accuracy percentage for each player, computed from Stockfish 19 evaluations in your browser. Unlike most sites, we show you exactly how the number is made.

Free · runs in your browser

Accuracy for both players, move by move

  • Paste a PGN and Stockfish evaluates every position
  • Accuracy from win probabilities, not raw centipawns
  • Move grades from brilliant to blunder for each side
Calculate accuracy No account, no download.

How accuracy is calculated

Four steps, no secrets. The implementation is adapted from the accuracy code Lichess published in 2022, with our own classification thresholds on top.

1. Evaluate every position

Stockfish evaluates the position before and after each move, to the depth you chose. Evaluations are stored from White's point of view in centipawns, or as a mate distance when a forced mate exists.

2. Convert to win probability

Centipawns become a percentage chance of winning for the side to move:

win% = 50 + 50 × (2 / (1 + e^(−0.00368208 × cp)) − 1)

This curve was fitted on real games. It is why +1.0 feels like a clear edge (64%) while +5.0 (about 93%) and +8.0 (about 98%) are nearly the same thing: both are winning.

3. Grade each move

The accuracy of a single move depends only on how much win probability it gave away:

accuracy = 103.1668 × e^(−0.04354 × (win%before − win%after)) − 3.1669

A move that loses nothing scores 100. Losing 10 points scores about 63; losing 20 points about 40; losing 40 points, a game-ending blunder, about 15.

4. Combine the moves

Two averages are taken over a player's graded moves and then averaged together. The first is a weighted mean where each move's weight is the standard deviation of win probability over a sliding window of positions around it, clamped between 0.5 and 12. Moves in volatile stretches of the game count more; moves in a dead-drawn endgame count less. The second is the harmonic mean, which is dragged down hard by any single low score. Averaging the two means one blunder cannot hide behind thirty perfect recaptures.

Book moves (positions in the ECO table within the first fifteen moves) and forced moves (only one legal move) are left out, since they say nothing about the player.

Move classifications

Alongside accuracy, every move gets a label. The rules are fixed and listed here in the order they are checked:

BookThe position after the move appears in the ECO opening table (3,600 named positions).
ForcedThere was only one legal move. Forced moves are never praised or punished.
BrilliantThe engine's top move (or within half a point of it), and along the engine's continuation the mover is still at least two pawns' worth of material down after their own next reply. Ordinary trades never qualify. The position must not already be decided, and the mover must keep at least 35% winning chances.
GreatThe engine's top move in a position where the second-best move would have cost at least 10 percentage points of win probability: the only good move. Recaptures, captures of an equal or bigger piece and replies to check are excluded, because they are the natural move anyway.
BestMatches the engine's first choice, or loses no more than half a percentage point of win probability.
ExcellentLoses less than 2 percentage points of win probability.
GoodLoses less than 5 points.
InaccuracyLoses between 5 and 10 points.
MistakeLoses between 10 and 20 points.
Missed winThe mover had at least 85% winning chances and the move dropped them below 60% without falling below 30%. The win is gone but the game is not.
BlunderLoses 20 points or more, or converts a winning position into a lost one.
Nothing in this pipeline is random or hand-tuned per game. Run the same PGN twice at the same depth on the same device and you get the same numbers. Run it at a deeper setting and the numbers may shift slightly, because the engine's opinion of some positions changes.

Accuracy questions

Why is my accuracy different from Chess.com's number for the same game?
Every site uses its own engine depth, its own curve from evaluation to win probability and its own way of averaging moves. Chess.com's formula is not public; ours is documented on this page and borrowed from Lichess's open-source implementation, with our own classification thresholds. Expect the numbers to move together but not match exactly.
What is a good accuracy?
It depends enormously on the opponent and the time control. Against a player who keeps the game simple, 90%+ is routine for club players. In a sharp blitz game, 75% can be a fine result. Compare your accuracy across your own games, in the same time control, rather than against other people.
Does a short game inflate accuracy?
Somewhat. Book moves and forced moves are excluded from the average, so a 20-move game may rest on only a dozen graded moves. The volatility weighting also matters: in a quiet game every move weighs about the same, while in a tactical melee the critical moves weigh up to 24 times more than the quiet ones.
What is ACPL?
Average centipawn loss: the mean number of hundredths of a pawn your moves cost compared with the engine's choice. Lower is better. It is a cruder measure than accuracy because it treats +6 to +4 the same as +1 to -1, but it is familiar from Lichess and useful alongside the percentage.
Can I calculate accuracy for a Chess.com or Lichess game?
Yes. Import the game by username on the Chess.com or Lichess analysis pages; the full report shows both accuracies, or paste the PGN here for the accuracy-focused view.

Ratings are a different matter. For rating change after a game or event, see the Elo calculator.