How the analysis works
ChessReviewMaxx runs a real chess engine on your device and turns its evaluations into a report. This page explains what the engine is, how positions are scored, and where the method's limits are.
Last updated: September 1, 2026
The engine
Analysis uses Stockfish compiled to WebAssembly, running in the browser. The default build is a vendored single-threaded Stockfish 10 (about 0.6 MB) — far stronger than any human player and fast enough to get through a large batch of games.
Games are analysed across a pool of Web Worker engines, defaulting to your CPU core count,
so several games are in flight at once. You can raise or lower the worker count, the search
depth, and the number of candidate lines in the engine settings panel. If you want more
strength, you can host a stronger NNUE build's .js, .wasm and
.nnue files and point the Engine source field at it; the bundled dev
server already sends the cross-origin isolation headers a multi-threaded build needs.
Win% and accuracy
The engine reports an evaluation in centipawns (or a mate distance). ChessReviewMaxx converts that to a win probability for the side to move using the Lichess model, so a +1.5 in a sharp middlegame and a +1.5 in a dead-drawn endgame are treated differently in practical terms.
A move's quality is the drop in win% it caused: the win% of the position before your move minus the win% after it. Per-move accuracy maps that drop onto a 0–100 scale with an exponential curve (again the Lichess model), and game accuracy aggregates the per-move figures. Move loss is capped so that a single mate-score swing does not distort an otherwise normal game's average.
Because saved analyses store win% as well as the raw score, an older report can be recalibrated onto the current classification path without re-running the engine.
Searching each position once
A naive review searches every position, then searches again to check the move that was actually played. ChessReviewMaxx avoids most of that second pass: the position reached after a move is reused as the "before" position for the next move. Top moves come out at exactly zero loss, and a game needs roughly one engine search per ply instead of one search plus a second search for every error. The cost is minor depth-to-depth evaluation noise, which is why very small win% differences are grouped rather than ranked.
Fast bulk review
With Fast bulk review on (the default), the full-game pass uses a single principal line, played moves are not re-searched, and the engine's transposition table is kept warm between games. Turning it off applies your chosen number of candidate lines to every position. Live puzzle positions request multiple lines regardless, where the extra branches are actually needed.
Opening names
Opening names come from the CC0 lichess-org/chess-openings library and are matched by position, not by the text of the game header. Transpositions are therefore named correctly, and the name updates as you explore a different line on the review board.
Move classification
The label on each move (Best, Inaccuracy, Blunder…) is derived from the win% drop plus a few special cases — only-moves, missed wins, and sound sacrifices. The full set of rules and thresholds is described on the move classifications page and lives in one file in the source so it is easy to audit and tune.
What this is not
- Not a coach. The engine tells you the objectively best move. It does not know which mistakes are worth fixing first for a human at your level — that is what the improvement plan tries to approximate, but it is a heuristic.
- Not depth-unlimited. The default depth is chosen for throughput. In genuinely complex positions a deeper search, or a stronger engine build, can disagree with the report.
- Not a cheat detector. High accuracy in one game means one game went well, nothing more.
Privacy
Every step above happens in your browser. Your games are read from the public Chess.com or Lichess API by your own device and are never uploaded to us or stored on a server. See the privacy policy for the full detail, including what Google AdSense does.