← Back to app
Sample Analysis Report

THE OPERA GAME
— A REAL CHESSDIARY REPORT

By Venugopal Ramamoorthy — creator of ChessDiary

Paul Morphy vs. Duke Karl of Brunswick & Count Isouard (consulting)  ·  Paris Opera House, 1858  ·  White wins by checkmate, move 17

This is a complete ChessDiary analysis report for one of the most famous games in chess history — Paul Morphy's "Opera Game." It's public domain, so there's no account or privacy concern in using it as an example, and every number below is real: this exact game was run through ChessDiary's actual Stockfish backend and Gemini tactical-motif pipeline, the same services every imported game goes through. Nothing on this page is a mockup or a made-up example report.

One honest caveat: ChessDiary's Stockfish endpoint returns a quality label and centipawn loss for each flagged move, but it does not currently return a specific "play this instead" alternative move alongside the Stockfish numbers — that richer suggestion is only produced by the separate Gemini-based fallback path used when Stockfish itself is unreachable (see that guide). So the table below shows the real engine evaluation, quality, and tactical motif for every flagged move, but not an invented "best move" column.


1. THE FULL MOVE LIST

Every move of the game, in standard algebraic notation.

#WhiteBlack
1e4e5
2Nf3d6
3d4Bg4
4dxe5Bxf3
5Qxf3dxe5
6Bc4Nf6
7Qb3Qe7
8Nc3c6
9Bg5b5
10Nxb5cxb5
11Bxb5+Nbd7
12O-O-ORd8
13Rxd7Rxd7
14Rd1Qe6
15Bxd7+Nxd7
16Qb8+Nxb8
17Rd8# 

2. EVALUATION GRAPH

The engine's evaluation (in centipawns, White's perspective — positive means White is better) after each half-move, for the first 28 plies of the game.

0.00
White's advantage (centipawns)

The last 5 plies (15...Nxd7 through 17.Rd8#) aren't plotted above — from 15...Nxd7 onward the engine finds a forced mate, and once a mate score appears, the centipawn scale stops being meaningful (ChessDiary's backend reports these as capped ±2000 or an explicit mate score rather than a real centipawn count). The flagged-moves table below shows exactly what the engine returned for each of those moves instead of forcing them onto this chart.


3. FLAGGED MOVES

Every inaccuracy, mistake, and blunder the engine identified, in the order they were played, with the real centipawn loss, the resulting evaluation, and the tactical motif Gemini identified for each (see the guide on reading a Stockfish report for what these labels mean).

MoveQualityEval afterCentipawn lossMotif
3...Bg4 Inaccuracy +1.1774 Hanging piece
4...Bxf3 Inaccuracy +1.5564 Hanging piece
6...Nf6 Inaccuracy +2.2161 Overloaded
8.Nc3 Inaccuracy +2.0343 Pin
9...b5 Mistake +3.56147 Sacrifice
10...cxb5 Inaccuracy +4.1184 Fork
12...Rd8 Inaccuracy +5.2560 Skewer
14...Qe6 Mistake +6.2791 Hanging piece
15.Bxd7+ Blunder +2.50377 Deflection
15...Nxd7 Blunder Mate in 21000 Back rank
17.Rd8# Checkmate Checkmate0 —

Why 17.Rd8# shows its own "Checkmate" label instead of a quality grade: a move that ends the game in checkmate is, by definition, the correct move — it can never be an inaccuracy, mistake, or blunder, so ChessDiary's backend recognizes this case directly rather than running it through the normal centipawn-loss grading. (An earlier version of this page showed this exact move as −100.00 and "Blunder" — a real bug in how the engine scored a position the instant after mate, since found and fixed. This page reflects the corrected output.)

Why 15...Nxd7 shows "Mate in 2" and a capped centipawn loss instead of a huge number: an earlier version of this page showed this move with a centipawn loss of 9750 — the result of literally subtracting a real centipawn score (+2.50) from the flat number the engine previously used to represent any forced mate (+100.00), which produces nonsense once you mix a symbolic "mate" value with a real centipawn count. The backend now recognizes a move that delivers the mover into a forced mate as its own case: still correctly graded "Blunder" (it is one — Black had better defenses, including 15...Qxd7), but on a capped, sensible scale (1000), and the evaluation is reported as the real mate distance the engine found ("Mate in 2") rather than a placeholder number.

Why 15.Bxd7+ is still "Blunder" and wasn't changed: it's tempting to assume this move — the start of the famous queen sacrifice — must itself be a forced mate and so should be exempt too. We checked this directly against the live engine at multiple search depths rather than assume it: Black actually has a defense here, 15...Qxd7, that avoids immediate mate (the engine still evaluates it as badly lost for Black, around −7.7, but not forced mate). The forced mate only becomes real once Black plays the historical 15...Nxd7 instead. So 15.Bxd7+ genuinely isn't "a move that delivers a forced mate" by the engine's own best-play analysis — it's an extremely strong, nearly-decisive move that happens to be graded "Blunder" because a different 15th move would have kept an even larger paper advantage. That's a known, separate limitation of pure centipawn-loss grading (it can call the second-best of two completely winning moves a "blunder"), not a mate-handling bug, and we didn't want to paper over that distinction with an incorrect "forced mate" label.


4. HOW TO READ THIS REPORT

The move list

Standard algebraic notation, White and Black side by side. If notation itself is unfamiliar, see How to Read a Chess Scoresheet.

The evaluation graph

Each point is the engine's assessment after that move, in centipawns (100 = roughly one pawn's worth of advantage), from White's point of view. A rising line means White's position is improving; a falling line means Black is catching up or taking the lead. A steep jump in either direction usually lines up with a flagged move below.

Quality labels and centipawn loss

Centipawn loss is how much the evaluation swung against the player who just moved, compared to the engine's own best continuation. ChessDiary buckets that swing into five labels: best and good (0–40), inaccuracy (roughly 40–90), mistake (roughly 90–200), and blunder (200+ or a missed/allowed forced mate).

Tactical motifs

For every flagged move, Gemini identifies which recognizable pattern was at play — a fork, a pin, a hanging piece left undefended, and so on. Across enough games, this is what turns "you blunder sometimes" into "you specifically miss hanging pieces in the middlegame," which is the actual point of keeping a diary of your games instead of just playing and moving on.

Try it with your own games. Upload a scoresheet photo, paste a PGN, or link your Chess.com/Lichess account — every game gets the same real Stockfish + tactical-motif treatment shown above.

Open ChessDiary →