♟ Open Source Chess Analysis Tool

Analyze Chess Games
with Engine Power

Load games from PGN libraries, navigate move by move, and get real-time engine evaluation — all in your browser with a self-contained Go binary. No cloud, no setup, no dependencies.

Live demo running at demo.gochess-board.org — Stockfish 16, Fairy-Stockfish, Crafty, GNU Chess, and more pre-installed

From PGN to Deep Analysis in Four Steps

A streamlined workflow for studying any chess game.

📂

Load a PGN

Paste PGN text, load a .pgn file, or drag & drop. Multi-game files are supported — a searchable table lets you pick any game by player, event, date, or opening.

🔍

Start Analysis

Choose an engine (Stockfish, Crafty, GNU Chess, or the built-in Go engine) and click Start Analysis. Evaluation lines stream live over WebSocket as you step through the game.

Navigate Moves

Use the navigation controls to step forward, backward, or jump to any position. The evaluation graph updates in real-time to show where the advantage shifted.

🔀

Explore Variations

Open a variation window from any position to test alternative lines. Merge a variation back into the main game, or discard it — the original game is never altered.

Everything You Need for Game Study

All assets are embedded in a single binary — no internet required after download.

📚

PGN Library Support

Load multi-game PGN files and browse a table of all games. Each entry shows players, result, date, event, and identified opening name — select any game to analyze it.

📊

Evaluation Graph

A live canvas graph tracks the engine evaluation across every move, making it easy to spot the moment a mistake was made or an advantage was squandered.

🎯

Best Move & PV Display

Choose to highlight the single best move, show the top 3 alternatives with arrows, or animate the full principal variation — all rendered directly on the board.

🏷

Opening Recognition

Every position is identified in real-time against 3,594 openings from the Lichess ECO database. The current opening name and code are shown as you navigate.

🔀

Variation Explorer

Open a variation from any position in a separate window and explore freely. Merge the variation back into the main game or close it without affecting the original.

📖

Opening Book

Optional Polyglot .bin opening book reader written in pure Go. Book moves return instantly before engine calculation begins.

Play Against Engines

Set either side to any discovered engine and play a full game with clocks, resign/draw controls, and PGN export. A useful complement to analysis mode.

🐳

Docker Ready

Multi-platform images (amd64, arm64, armv7) with 10+ pre-installed engines. Deploy anywhere in seconds with docker run.

Up and Running in Seconds

Choose the method that suits you best.

# Pull and run — opens on port 35256
docker run -p 35256:35256 vpoluyaktov/gochess-board:latest

# Open your browser at
http://localhost:35256

The Docker image includes Stockfish 16, Fairy-Stockfish, Fruit, Toga II, Glaurung, Crafty, GNU Chess, HoiChess, and FairyMax pre-installed — ready for deep analysis. See docker/DOCKER.md for docker-compose and volume options.

# Prerequisites: Go 1.24+
git clone https://github.com/vpoluyaktov/gochess-board.git
cd gochess-board
go build -o gochess-board ./cmd/gochess-board
./gochess-board

# The built-in engine works immediately.
# Install stronger engines for deeper analysis:
sudo apt-get install stockfish crafty
# All flags and their defaults:
./gochess-board \
  --port                35256    # Web server port
  --book-file           <path>   # Polyglot .bin opening book
  --persistent-engines           # Keep engines alive between moves
  --no-browser                   # Don't auto-open browser
  --no-tui                       # Disable terminal UI
  --log-level           INFO     # DEBUG | INFO | WARN | ERROR
  --restart                      # Kill existing process on same port

Supported Chess Engines

Engines are discovered automatically at startup from the system PATH. Any engine can be used for both analysis and playing.

UCI Engines

EngineELO Range
GoChess (built-in) Go~1000–1200
Stockfish 161320–3190
Fairy-Stockfish 11.11350–2850
Fruit 2.1~2700
Toga II 3.0~2700
Glaurung 2.2~2700
Ethereal~3000
Leela Chess Zero3100+

CECP / XBoard Engines

EngineELO Range
Crafty 23.4~2400
GNU Chess 6~2000
HoiChess~2200
Fairy-Max~1800
Sjeng~2000
Phalanx~1900

Simple HTTP Interface

The server exposes a clean REST + WebSocket API for all chess operations.

GET/

Interactive chess board and analysis UI served as a single HTML page.

GET/api/engines

List all discovered engines with name, protocol, and executable path.

POST/api/computer-move

Send a FEN position and engine name, receive the engine's best move.

POST/api/opening

Look up the opening name and ECO code for a given move sequence.

WS/ws/analysis

Real-time multi-PV analysis streamed via WebSocket as the engine thinks.

# Request a computer move (returns best move + new FEN)
curl -X POST http://localhost:35256/api/computer-move \
  -H "Content-Type: application/json" \
  -d '{"fen":"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1"}'

Start Analyzing Your Games

Try the live demo instantly, or run your own instance with Docker.