Skip to the tool
CALCPARK

Chess Screenshot Analyzer

Upload a chessboard screenshot, get the position as FEN with an editor to fix any square, and analyse it with Stockfish in your browser: eval, best move and lines.

Files stay on your device
Loading the tool…

How to use it

  1. Take a screenshot that shows the whole board, then drop it here, choose the file or paste it with Ctrl+V.
  2. Check the red frame on the thumbnail. If it misses the board, press “Adjust framing” and drag the square onto the board’s corners.
  3. Compare the editable board with your screenshot – dashed squares first. Pick a piece from the palette and click a square to change it; right-click clears one. Tick “Black is at the bottom” if the screenshot is from Black’s side.
  4. Set the side to move and untick any castling right you know is gone. Fix any problem listed under the board (missing king, pawn on the back rank…).
  5. Press “Analyse”. The evaluation, best move (green arrow), depth and lines update while the engine searches; copy the FEN or the analysis, or download it as JSON.

Example

A 900 × 640 px screenshot of a lichess-style page with a 512 px board is read in about a second: the board is located at (120, 80), all 64 squares come back with full confidence and the FEN field shows r1bq1rk1/pp2bppp/2n1pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQ - 0 1 – a Queen’s Gambit Declined middlegame. Because the white king and both rooks still stand on e1, a1 and h1 the tool offers KQ; Black has castled, so no black rights are offered. At depth 18 Stockfish 19 lite evaluates the position at +1.33 for White with the main line 1. h3 Re8 2. Bd3 dxc4 3. Bxc4, reached in 2–9 seconds on a laptop.

How the recognition and the analysis work

board  : for every candidate (x, y, square size) split the 64 squares by colour parity;
         score = |mean(light) − mean(dark)| − (spread(light) + spread(dark)); best candidate wins,
         then the grid is snapped onto the luminance edges
piece  : background = median colour of the square border; mask = pixels far from it (small blobs dropped)
         colour = brightness of the mask interior; type = closest of six reference silhouettes
         confidence = how clear the best match is over the runner-up (and how clear the colour is)
eval   : Stockfish score in centipawns from White’s view; eval bar = 50 % + 50 % · (2 / (1 + e^(−0.00368 · cp)) − 1)

The recogniser is deterministic image processing, not a neural network: it needs the board to be axis-aligned and fully visible and the pieces to be flat, two-coloured shapes on plain squares. It was verified on boards rendered with the Cburnett piece set in lichess and chess.com colours; other piece styles may need corrections, which is why every square is editable. The position must be legal before the engine runs: exactly one king each, no pawns on the first or eighth rank, no more than sixteen pieces or eight pawns per side, and the side not to move may not be in check.

Sources: Forsyth–Edwards Notation (FEN) – chessprogramming.org, UCI protocol – chessprogramming.org, Stockfish.js (nmrugg) – the WebAssembly build used here, GPL-3.0, chess.js (BSD-2-Clause) – move generation and SAN, Cburnett chess pieces (Colin M.L. Burnett, CC BY-SA 3.0) – board graphics and reference silhouettes.

Recognition is approximate: always compare the board with your screenshot before trusting the evaluation. The lite engine build is weaker than desktop Stockfish and searches on one thread, so scores at the same depth can differ slightly from other engines.

Questions

The board was not found or the frame is wrong. What can I do?
Press “Adjust framing” and drag the square so its corners sit exactly on the board’s corners, then confirm. Screenshots with a 3D or tilted board, a board partly off-screen or a very low resolution (under about 40 pixels per square) cannot be read automatically; set those positions up by hand.
Why does it ask about castling and en passant?
A still image cannot show whether a king or rook has moved before, or whether the last move was a pawn’s double step. Those facts change the legal moves and the evaluation, so the tool only offers the rights that are geometrically possible and lets you decide. When in doubt, leave castling ticked – the engine will show whether it matters.
Is anything sent to a server?
No. The screenshot is processed on a canvas in your browser, and Stockfish runs as WebAssembly in a Web Worker on your device. The only download is the engine itself (about 1.9 MB) from this site on the first analysis.
How strong is the engine, and how long does depth 18 take?
The lite single-threaded Stockfish 19 build uses a smaller neural network than the desktop engine but is still far stronger than any human player. Depth 18 takes a few seconds on a laptop and somewhat longer on a phone; depth 24 or more can take minutes on complex positions – press Stop to keep the best result so far.