My Gripe With PGN Notation

Tags: Technology

I just wanted to gripe about the PGN file specification for chess games. Lately I've been working on version two of my chess library written in Go. (Which by the way is looking really nice by the way. It has significantly faster move generation than some of the competition.)

My gripe is that to export and read PGN files (the main file type for recording chess games), you need to use SAN move notation. SAN notation is “human readable,” but requires a lot of knowledge about chess to know what a particular move does.

UCI move notation is much simpler. It clearly states the square the piece is moving from, the square the piece is moving to, and an optional promotion signifier.

I think using SAN move notation in the PGN spec is really stupid, it requires a ton of extra logic that could have easily been avoided by using UCI move notation. That argument that SAN is more human readable is dubious in my opinion. I think that the slightly harder to read UCI move notation is well worth the complicated parsing and generation trade off.