Website: https://andreykhrypach.github.io/Kletka/
Kletka is a cross-platform chess analysis tool that supports PGN files, variations, annotations, and the Stockfish engine. It features a modern, customizable interface and is available for Windows, Linux, and macOS.
See CHANGELOG.md for a detailed history of changes.
Step-by-step guides on our YouTube channel:
Windows:
Linux:
More tutorials coming soon — macOS.
Kletka supports Polyglot opening books (.bin files), allowing you to explore and study chess openings interactively — and to build your own repertoire.
.bin)Kletka allows you to add moves directly to the loaded book:
.bin fileYou can export your current analysis tree as a Polyglot book:
.bin formatAll moves from the tree (main line + all variations) go into the book. Transpositions and duplicates are automatically deduplicated.
The resulting book can be loaded back into Kletka or used with Stockfish, Leela, ChessBase, Scid, Arena, and other compatible software.
For opening book functionality, Kletka requires:
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
--add-opens java.base/sun.misc=ALL-UNNAMED
Note: If you're running Kletka from the command line, use:
java --add-opens java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens java.base/sun.misc=ALL-UNNAMED \
-jar Kletka.jar
These arguments are required for fast Polyglot book operations using memory-mapped files.
Kletka uses memory-mapped files (MappedByteBuffer) for lightning-fast Polyglot book operations, even on HDD.
Important: Mapped byte buffer is not released by the JVM garbage collector while a reference exists. So that you can delete, move, or replace a book file while Kletka is running, the application explicitly calls:
sun.misc.Unsafe.invokeCleaner(mappedByteBuffer);
This immediately releases the OS-level file lock.
What this means for you:
.bin file after unloading the bookOn Debian Trixie / Ubuntu 24.04+ with Wayland, dialogs may not receive focus (keyboard works, mouse doesn't). This is a known JavaFX 17 + GTK 3 + Wayland bug.
Solution: already included in Kletka — the app runs with -Djdk.gtk.version=2, which uses GTK 2 via XWayland.
For best results, we recommend using the uho-pohl.bin opening book, which contains extensive high-quality opening variations.
You can download free opening books from the official Polyglot books repository: 🔗 Polyglot Books Repository
Other popular sources:
You can copy the current position to the clipboard in a convenient format — FEN plus an ASCII diagram:
This is useful for:
The output includes the FEN on the first line and an ASCII diagram below it, wrapped in a Markdown code block for easy pasting.
Symptoms:
Cause: Known JavaFX bug JDK-8333919 — dragViewOffsetX/Y are ignored on macOS.
Fix: Fixed in JavaFX 23 (requires JDK 21+). Kletka currently uses Java 17 + JavaFX 17.
Workaround:
Status: Tracked in issue #XXX. Will be fixed when we migrate to the new stack.
![]() |
![]() |
| Main interface | PGN browser |
![]() |
![]() |
| Open Polyglot Book | Polyglot Book Loaded |
Click on an image to open it in full size in a new tab.
Download Kletka.exe from the Releases page and run the installer.
Download Kletka.dmg, open it, and drag Kletka.app to the Applications folder.
sudo dpkg -i kletka*.deb
brew install maven (macOS) or sudo apt install maven (Linux)When running from your IDE, add these VM options:
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
--add-opens java.base/sun.misc=ALL-UNNAMED
This ensures full Polyglot book support during development.
git clone https://github.com/AndreyKhrypach/Kletka.git
cd Kletka
mvn clean package
# Windows
mvn clean package -P windows
# Linux
mvn clean package -P linux
# macOS
mvn clean package -P mac
Kletka uses the Stockfish UCI engine for analysis. You need to install it separately:
stockfish.exe filesudo apt install stockfish
Then in Kletka, go to Engine → Configure Engine and select the stockfish binary.
brew install stockfish
Then in Kletka, go to Engine → Configure Engine and select the stockfish binary.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
Andrey Khrypach
If you like this project, please ⭐ it on GitHub!