How to Analyse All Your Chess Games at Once
Analysing one game teaches you about that game. Analysing four hundred teaches you about yourself. Here are the four free routes to running an engine over a whole history, and what to measure once you have.
First, decide what you are measuring
Bulk analysis goes wrong when it is done for its own sake. Four hundred annotated games is not an insight; it is four hundred files. Before you start, pick the question:
- Which openings actually cost me points? — you need results and accuracy grouped by opening.
- When in the game do I go wrong? — you need errors bucketed by move number or phase.
- What kind of mistake do I repeat? — you need the positions themselves, not summary numbers.
- Is the thing I have been working on improving? — you need the same measurement over two time windows.
The question decides the method, because some of the routes below give you annotated PGNs and nothing else, which answers none of those four without further work.
Get your games
Both big sites publish free, keyless APIs:
- Chess.com:
api.chess.com/pub/player/USERNAME/games/archiveslists one URL per month you played; each returns that month's games as JSON with the PGN inside. - Lichess:
lichess.org/api/games/user/USERNAMEstreams your games as PGN or NDJSON, with parameters for date range, rated-only, time control and more.
Be polite with both: they are free services, they rate-limit, and a script that hammers them gets blocked. Download once, cache locally, analyse from the cache.
The four routes
1. Request analysis game by game on Lichess
Import the PGN, press "Request a computer analysis". Free, properly annotated, and it handles games played anywhere. The limit is 40 games a day, so this is a route for tens of games, not hundreds.
2. SCID vs PC
Desktop database software with batch annotation built in: load a PGN database, point it at a Stockfish binary, set a time or depth per move, and let it run. No cap, no code. It will take hours for a large database, and what you get back is annotated PGNs — the analysis, not the conclusions.
3. python-chess and a Stockfish binary
About thirty lines: read the PGN, walk the moves, ask the engine for an evaluation at each one, write the results to CSV. This is the route that answers arbitrary questions, because you decide what gets recorded. It is also the route that needs you to write code and to be careful about search depth consistency.
4. In the browser
Stockfish compiled to WebAssembly runs inside a tab, which means a site can analyse a whole history on your own machine without a server bill and therefore without a cap. This is what RookSac does: username in, it fetches from the public API and runs a pool of Web Worker engines, defaulting to your CPU core count, so several games are in flight at once.
Keep the comparison fair
Three traps that make bulk numbers lie:
- Mixed time controls. Bullet accuracy and classical accuracy are different populations. Comparing them produces a trend that is really just a change in what you played.
- Inconsistent depth. If half your games were analysed at depth 12 and half at depth 18, the deeper half will show more mistakes, because the engine found more. Fix the setting before you start and do not change it mid-way.
- Too small a slice. "I score badly in the French" based on six games is not a finding. Single-game accuracy varies by more than 25 points even for elite players, so small slices move on their own.
What to look at once you have it
In the order that has paid off most, for most players:
- Errors by move number. Almost everyone has a spike. If yours is moves 10–15, your problem is the transition out of the opening, not the opening itself.
- Accuracy by phase. Opening, middlegame and endgame scored separately. The weakest of the three is where your next month goes.
- Openings ranked by points lost, not by win rate. Win rate is contaminated by who you played; points lost to engine-measured error is not.
- The positions themselves. Numbers tell you where to look. Only the positions tell you what you were actually doing wrong, and they make far better training material than generic puzzles — which we wrote about in training with puzzles from your own games.