PGN Viewer

Paste a PGN and step through the game on a board. Moves are read by matching against the legal moves, so a wrong file is caught rather than replayed.

Moves

How the notation is read

  • The move reader does not reimplement the notation rules. It generates every legal move in the position, names each one, and takes the one whose name matches — so it cannot accept a move the board would not allow, and it cannot disagree with the notation the same module writes.
  • A move that will not play stops the replay at that point rather than being skipped. Skipping it would leave every later move being played from the wrong position, and the board would go quietly and confidently wrong.
  • Comments in braces are kept and attached to the move they follow. Variations in parentheses are removed, including nested ones, because a viewer that walks into a side line without saying so is worse than one that ignores them.
  • Check and mate marks and the !/? annotations are ignored when matching, since files disagree about them constantly. Everything that identifies WHICH move it is — the piece, the disambiguation, the capture, the destination, the promotion — has to match exactly.
  • The result printed at the end of a file is a claim, not a fact. What the board actually shows after the last move is worked out separately, and the two are displayed side by side, because they do disagree.

How to use

  1. Paste a PGN, or several games at once, and press Load.
  2. Step through with the buttons or the arrow keys.
  3. Click any move in the list to jump straight to it.

Frequently asked questions

How does it know what "Nbd7" means?

It does not reimplement the notation rules. It generates every legal move in the position, names each one, and takes the one whose name matches — so it cannot accept a move the board would not allow, and it cannot disagree with the notation the same code writes. Disambiguation, en passant, castling and promotion all come for free.

What happens if the file has a mistake in it?

The replay stops at the move that will not play, and says which one it was. Skipping it would leave every later move being played from the wrong position, and the board would go quietly and confidently wrong — which is much worse than stopping.

Does it show variations?

No. Side lines in parentheses are removed, including nested ones, and only the main line is replayed. A viewer that wanders into a variation without saying so is worse than one that ignores them. Comments in braces are kept and attached to the move they follow.

Why does the result sometimes disagree with the board?

Because the result written at the end of a file is a claim, not a fact — games get abandoned, adjudicated and mistyped. What the board actually shows after the last move is worked out separately, and both are displayed, so you can see when a file says 1-0 after a position that is nothing of the sort.

Can I load a file with several games in it?

Yes. A file is split wherever a new set of tags begins after some moves, and each game gets its own entry in the picker with its own players, moves and result.

Does it handle games that start from a set position?

Yes — a FEN tag is used as the starting position, and stepping back to the beginning returns there rather than to the standard opening. A FEN that cannot be read says so plainly instead of making move one look illegal.

Is my game uploaded anywhere?

No. Everything happens in your browser, including the move generation. Nothing is sent to a server, so you can paste an unpublished game without it leaving the machine.

🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.