Portable Move Notation

A general purpose JSON-based format for recording moves.

It is completely laws of chess independent and compatible with the main chess variants, including 장기Janggi, หมากรุกMakruk, 将棋Shogi, Western, 象棋Xiangqi.

Examples

Three first moves played on a Western chessboard:

[
  [[52, 36, "C:P", nil]],
  [[12, 28, "c:p", nil]],
  [[53, 37, "C:P", nil]]
]

Castling on kingside:

[
  [[60, 62, "C:-K", nil], [63, 61, "C:R", nil]]
]

Promoting a Western pawn into a knight:

[
  [[12, 4, "C:P", "C:N"]]
]

Promoting a Shogi pawn:

[
  [[33, 24, "S:P", "S:+P"]]
]

Dropping a Shogi pawn:

[
  [[nil, 42, "S:P", nil]]
]

Capturing a Western white pawn en passant:

[
  [[48, 32, "C:P", nil]],
  [[33, 32, "c:p", nil], [32, 40, "c:p", nil]]
]

Implementations