Version 1.3
Chess Recorder is an iOS app for recording chess games by voice. Speak your moves in plain language — square names, piece names, captures, castling, and undo — and the app updates the board, builds the move list, and can export games as PGN. Optional on-device engine analysis and background move assessment provide instant feedback while you record and review.
Related project: Also check out CARA — Chess Analysis and Review Application for Windows, macOS, and Linux.
Contents: Features · Requirements · Building · Usage · Screenshots · Project layout · License · Contributing · Contact · Acknowledgments
- Record moves with the device microphone using Apple’s on-device speech recognition
- Chess-specific language model with common English and German move phrases
- Teach custom phrases and corrections when recognition fails
- Configurable dictation pause before a move is committed
- Live transcript with pause countdown while recording
- Interactive board with optional touch input for entering moves manually
- Move navigation with scrubbing and jump controls
- ECO code and opening name in the toolbar
- Interactive opening book: browse expandable continuations from the current position
- Flip board orientation
- Customizable board colors, coordinates, piece size, and more…
- Multi-Game PGN export
- Integrated Stockfish analysis via LucidEngine
- Evaluation, win probability, algebraic main line, and best-move arrow (each optional)
- Background Stockfish review of played moves (separate from live analysis)
- Inaccuracy, mistake, blunder, and miss (slower forced mate) marks in the move list and PGN notation
- Optional assessment symbols in exported PGN
- Move validation and game logic via ChessKit
- Undo, new game, multi-game archive, and session restore
- Device: iPhone or iPad running iOS 26.5 or later (see
IPHONEOS_DEPLOYMENT_TARGETin the Xcode project) - Development: Xcode with Swift 5 and Swift Package Manager
- Permissions: Microphone and speech recognition (requested at runtime)
-
Clone the repository
git clone https://github.com/pguntermann/ChessRecorder cd ChessRecorder -
Download Stockfish NNUE weights (required for engine analysis)
./Scripts/fetch-stockfish-nnue.sh
This places the network files in
StockfishNNUE/. If you build from Xcode before the LucidEngine package is resolved, run./Scripts/prepare-lucid-engine-nnue.shafter a first resolve/build to copy them into the package checkout. -
Open and build in Xcode
- Open
Chess Recorder.xcodeproj - Select the Chess Recorder scheme and a simulator or device
- Build and run (
⌘R)
- Open
Swift Package Manager fetches ChessKit and LucidEngine automatically.
xcodebuild -scheme "Chess Recorder" -destination "platform=iOS Simulator,name=iPhone 16" buildAdjust the simulator name to match an installed runtime.
- Grant microphone and speech recognition access when prompted.
- Tap Record and speak a move (e.g.
e4,Knight f3,Castle kingside, or German equivalents such asSpringer f3,Kurz rochiert). - Pause briefly when finished — the app waits for the configured dictation pause, then plays the move.
- Use Undo by voice or tap pieces when Touch input is enabled in Settings.
- Export the game from the notation panel via the share button.
In-app help (? in the toolbar) lists supported phrase patterns for English and German.
- Speech language (English / Deutsch) and dictation pause length
- Engine depth and which analysis overlays to show (including arrow color)
- Move assessment on/off, search depth, and quality colors (including miss)
- Whether assessment symbols are included in PGN export
- Board appearance, piece size, and touch-input highlight color
- Opening name visibility and explorer mini-board size
- Default PGN header fields and learned phrase management
iPad — live recording with engine analysis and move assessment
iPad — interactive opening book with mini-board previews
iPad Pro — game accuracy summary and move-quality breakdown
iPhone — Manual/Touch move entering
| Path | Purpose |
|---|---|
Chess Recorder/ |
App source (SwiftUI views, speech, game logic, services) |
Chess RecorderTests/ |
Unit tests for game logic, speech, archive, and session |
Chess Recorder.xcodeproj |
Xcode project and SPM package references |
Scripts/ |
NNUE download and LucidEngine preparation scripts |
StockfishNNUE/ |
Stockfish neural network files (not in git; fetched by script) |
LICENSE |
GPLv3 license for Chess Recorder |
THIRD_PARTY_LICENSES.md |
Third-party software and asset licenses |
Chess Recorder is released under the GNU General Public License v3.0 (GPL-3.0).
Stockfish is linked into the app for engine analysis, which requires GPL-compatible licensing for distributed binaries. See LICENSE for the full text and THIRD_PARTY_LICENSES.md for dependency and asset notices.
Issues and pull requests are welcome on GitHub. Please keep changes focused and include a short description of what you tested.
Philipp Guntermann — pguntermann@me.com
Privacy Policy: PRIVACY.md
Chess Recorder builds on several open-source projects:
- ChessKit — chess rules and move generation (MIT)
- LucidEngine — Swift wrapper around Stockfish (GPL-3.0 engine core)
- Stockfish — chess engine (GPL-3.0)
- eco.json — FEN-based ECO opening name lookup (
eco_base,eco_interpolated; MIT) - lichess chess-openings — ECO opening TSV files used as the authoritative opening data source (CC0)
- cburnett SVG chess pieces — Wikimedia Commons (CC BY-SA 3.0 / GFDL 1.2)
Full license texts and attribution details are in THIRD_PARTY_LICENSES.md.
Copyright (C) 2026 Philipp Guntermann
Licensed under the GNU General Public License v3.0 (GPL-3.0)