Scan Chess Notation: Which Handwritten Styles It Reads
Which handwritten notation ScanChess reads — algebraic, shorthand like "dc", look-alike letters — which it does not (descriptive), and how moves are checked.
Generic text recognition reads shapes. Reading chess notation needs something more: the letters are ambiguous, the handwriting is fast, and — crucially — there is a rule set that says which readings are possible at all. This page is about that step, between the photo and the file.
Why chess handwriting is its own problem
The alphabet in play is tiny and badly conditioned. b against 6. Q against 9. 0 against O. f against t. A general text model has no reason to prefer one over the other; in a move list, one wrong character silently produces a different, still-plausible game.
Then there is what people actually write. Real scoresheets contain shorthand (dc for a pawn capture), crossings-out, arrows meaning "same as above", ep and =Q scattered in the margins, and the occasional move recorded in the wrong column.
The board is the disambiguator
The move that makes this tractable is refusing to read the sheet as text. Each move is played onto a board as it is recognized, and the position constrains what the next token can be.
Nbd2 versus Nfd2 — usually only one of them is legal, and the other is ruled out before you see it.
dc cannot stay dc: from the position there is usually exactly one pawn on the d-file that can capture, so it expands to dxc5.
A castle written 0-0 is read as O-O, because zero-zero is not a move.
A move that could not have happened at all — a knight that cannot reach that square, a capture of a piece that is not there — is marked red instead of being written into your game.
That last point is the difference that matters. A misreading that produces an illegal move announces itself. You review a handful of colored entries rather than proofreading forty moves against a sheet you may not be able to read either. How many entries that is on real handwriting is published move by move in our scoresheet scan accuracy results.
What the colors mean
Red is an illegal move: the reading cannot be played in that position, so something upstream is wrong — the move itself, or an earlier one that put the board in the wrong state.
Amber is a low-confidence move: the model read something, but not with enough certainty to commit. The editor shows the moves that are legal in that position, so if Nbd2 and Nfd2 are both possible you choose between them rather than typing. There is no separate "ambiguous" category; an unsure reading is amber, whatever the reason for the doubt.
What still needs you
Two cases the rules cannot settle:
A confident, legal misreading. If both Nbd2 and Nfd2 are legal and the model was sure of the wrong one, no validation will tell you which you played. The replay board catches it: step through the game and the position stops matching your memory. How ScanChess reads unclear moves describes the check that now flags many of these, when a misread leaves a piece hanging that neither player takes.
A sheet that is wrong. If the original recorder skipped a move, the game diverges from that point and validation marks the divergence, not the cause. Fixing it means going back to the position — or to your opponent's copy.
Editing uses the pencil button beside each move, and it costs nothing: only the recognition itself uses credits. Correct a move and the rest of the game re-validates from there.
Notation this understands
Standard Algebraic Notation with English piece letters, as PGN uses it: KQRBN, pawns unlettered, x for captures, O-O and O-O-O, + and #, =Q for promotion, and disambiguation by file or rank. FIDE's own conventions differ slightly (castling written with zeros, 0-0; promotion as d8Q; the x optional; national piece letters allowed under Appendix C.3). If you want a refresher, Chess notation explained covers the whole system, and 7 common notation mistakes covers what goes wrong when people write it in a hurry.
Descriptive notation (P-K4, N-KB3) is not supported. Moves written that way are shown as scanned, but they are not converted to algebraic, not replayed and not checked, so an old sheet needs translating before it is scanned. Descriptive vs algebraic notation shows how.
✓Tested by us
What we saw when we tested it
We checked notation handling signed out on 30 September 2026. Uploading an image at /dashboard/scan works without an account, but recognition needs sign-in ("Sign in to scan · 2 credits"; new accounts get 10 free credits). What follows is what the free validator does with the same notation.
To inspect how ambiguous notation is handled, we examined a demo scoresheet we made ourselves with the 1858 Opera Game. It contains common visual pitfalls: 7...Qe7 written with a faint top bar reading as "Qe1", 9...b5 with a short stem reading as "65", 14.Rd1 with "Rd8" struck through, and castling written with digits as "0-0-0".
In the browser-based ScanChess PGN validator (which requires no account) states that shorthand such as 0-0, dc and e8Q is normalized automatically. When we entered the misread "7... Qe1", the validator flagged "Illegal move at 7... Qe1" ("13 moves were legal before this one"), presented a "LEGAL MOVES HERE" list including Qe7, and displayed a "Position where it stopped" board with its FEN string.
We also checked notation variants using national piece letters. Under FIDE Laws of Chess rule C.3, players may record moves using piece letters in their own language (such as German S for knight, L for bishop, T for rook, D for queen, and K for king). When we typed German moves from a 1973 scoresheet into the PGN validator ("1. c4 Sf6 2. Sc3 ..."), it stopped at move 1 with "Illegal move at 1... Sf6". The validator expects English piece letters, so translate the moves first: the chess notation translator turns them into English SAN (1. c4 Nf6 2. Nc3 ...), which the validator and Lichess both accept. Lichess did worse: it reported "Can't play c3 at move 2, ply 3", one move after the real problem, apparently because it read Sf6 and Sc3 as pawn moves. We have not tested how the scanner itself handles German letters.
In our public test, the scanner read 141 of 143 moves right first time on 3 standard algebraic scoresheets (2 of them printed test sheets), and invented no moves on blank ones.
Chess notation translator — German, Spanish, French or Russian piece letters to English SAN, and back
Frequently asked questions
Does it understand shorthand?
Yes. Forms like "dc" for a pawn capture are expanded to standard SAN such as "dxc5" using the position on the board.
What about old descriptive notation?
It is not supported. P-K4 style moves are shown as scanned but not converted, replayed or checked, so translate the sheet to algebraic notation before scanning it.
How is a misreading caught?
Every move is replayed on a board as it is read. A move that is illegal in that position is marked red; a move the model is unsure of is marked amber, with the legal alternatives offered in the editor.
10 free credits on sign-up. Volume pricing: Pricing