Java 1.0 available
One PGN.
One AST.
Every platform.
Standards-focused PGN infrastructure for chess developers. Parse complex game notation into clean Java objects with deterministic output and actionable diagnostics.
Java 21Modern runtime
AST 1.0Shared contract
6 fixturesConformance tested
LIVE PARSE
♔♞♙
01e4e5main line
02Nf3Nc6variation ready
ENGINEERED FOR CONSISTENCY
PGN parsing you can build on.
Canonical AST
A stable model for tags, moves, comments, NAGs, variations, and diagnostics.
Defensive by default
Strict and tolerant modes, structured diagnostics, input limits, and bounded variation depth.
Built for real PGN
Multiple games, Unicode, BOMs, brace and semicolon comments, symbolic NAGs, and nested RAVs.
One conformance suite
Shared fixtures keep every implementation aligned around semantics—not internals.
QUICK START
From dependency to move tree in minutes.
Install the Maven package, pass in a PGN string, and work with typed Java records. Legacy entry points remain available while the modern API evolves.
Ordinary Java objects—no JSON tree model
Strict and tolerant parser modes
Deterministic canonical JSON when you need it
MavenJava1.0.0
<dependency>
<groupId>com.tranztechnologies</groupId>
<artifactId>pgn-parser</artifactId>
<version>1.0.0</version>
</dependency>PgnDocument document = Pgn.parse(source,
PgnOptions.builder()
.mode(PgnMode.STRICT)
.build());
document.games().getFirst().moves()
.forEach(move -> System.out.println(move.san()));