Everything it does.

Zugwunder 1.1.15, Wolfgang 1.0.17 and the engine zugwunder-uci 1.1.13, feature by feature. The names below are the ones you will find in the app.

Solve

Free search when you want the best move, an exact proof when you want certainty.

Free search

The engine searches the position to a fixed depth or for a time limit and shows up to five lines at once (Multi-PV), each with its evaluation and principal variation; the best line is drawn as arrows on the board. Syzygy tables and the built-in exact tables for KQK, KRK, KPK, KBNK and KRKB are used inside the search, so simple endgames are judged perfectly rather than estimated.

Exact proofs

Mate in n
The side to move mates by its n-th move against any defence. Zugwunder builds the complete solution tree with every defence and warns when the problem is cooked, that is, when a second first move also works.
Helpmate in n
The side to move begins (usually Black), both sides cooperate, and the opponent mates with its n-th move. All solutions are listed.
Selfmate in n
The side to move forces the resisting opponent to deliver mate by the opponent’s n-th move at the latest.
Stalemate in n
Like mate in n, but the goal is stalemate.

Fairy chess is not supported; the solvers work with the orthodox rules only.

Getting a position in

  • FEN by typing or pasting; PGN files with several games open in a game picker. Tags, comments, evaluations (NAGs) and variations survive import and export.
  • Position from image: drop a photo, scan or screenshot of a diagram, paste one with ⌘V or choose a file (PNG, JPEG, TIFF, HEIC, up to 25 MB). The pieces are recognised by Anthropic’s Claude through your own API key, which lives in the macOS Keychain. Nothing leaves your Mac until you press “Recognize pieces”; the answer is an editable proposal with the side to move left for you to confirm, and illegal positions are rejected rather than guessed.
  • The board editor, for positions you set up by hand.

Tactics trainer

Puzzles from Lichess, from your own library, and from Zugwunder itself.

Create a chess puzzle

New in November: Zugwunder sets a fresh endgame on the board and asks for the only first move that mates in time against best defence. You choose the side to move, the mate distance from one to six moves, and whether the extra piece is a queen, a rook or a pawn; or leave any of them to chance.

The positions come from the engine’s own exact endgame tables, so the mate distance is known precisely and the key move is verified to be unique before you see the position. In the trainer, any move that mates equally fast is accepted, not only the line the app had in mind. The same puzzle is never served twice in a row.

Lichess puzzles

  • The puzzle of the day, a new puzzle by motif (more than fifty themes, from back-rank mates to zugzwang) and difficulty, or any puzzle by its Lichess ID.
  • No account and no token needed. The app keeps to one request at a time and respects Lichess’s rate limits.
  • Every solution is replayed and validated before the puzzle is shown, including en passant, castling and promotions.
  • Puzzles you want to keep are saved locally and work offline.

Your library and your progress

  • An own puzzle library with titles, sources and motifs, plus a catalogue of built-in tasks that updates from this site independently of app releases.
  • Progress is recorded per puzzle and per motif. “Repeat difficult puzzles” brings back the ones that beat you; “Practise a motif” drills one theme.
  • Hints, the full solution on request, restart, and a separate window for a puzzle when you want the main window for something else.
  • Feedback distinguishes an actual checkmate from a tactic that merely wins material, and refuses a stalemate when mate was asked for.

On paper

Any puzzle becomes a printable puzzle sheet, as paper or PDF, with the solution on a separate page. Diagrams export as PNG, and a camera button saves the whole app window.

Play engine

A sparring partner at three strengths, or a referee between two engines.

Against Zugwunder

  • Three strengths: Beginner, Club and Erik. An opening book keeps the first moves varied.
  • A chess clock with increment, pause, draw offers and resignation. Games are saved and resume after a restart.
  • Play on from any position: a puzzle you did not finish, an editor setup, a game from a PGN file.
  • Draws by the fifty-move rule, threefold repetition and insufficient material are recognised and recorded in the PGN result.

Against another engine

Any UCI engine can take the other side, for example Stockfish, lc0 with the Maia networks or Fairy-Stockfish, optionally limited with UCI_Elo. Free-form setoption lines let you configure it the way its author intended. Or sit back and watch Zugwunder play that engine.

Game analysis

After the game, Zugwunder or the external engine analyses every move: an evaluation curve, inaccuracies, mistakes and blunders measured by the drop in winning chances, the better move where there was one, and an annotated PGN export with [%eval] tags and NAGs for your database.

Board editor

Set up anything, as long as it is legal.

A piece palette, drag and drop, side to move, castling rights and a validator that explains what is wrong with a position instead of letting you search a nonsense one. Undo and redo, clear the board, start from the initial position, copy the FEN or save the position to your library. From the editor, a position goes straight to the solver, the trainer or a game.

Everyday details

The parts you notice after a week.

  • Drag and drop on the board, full keyboard control, and VoiceOver with spoken moves and square names.
  • German, English, French and Dutch, switchable from the header. The app’s puzzle names, help texts and even the image recognition follow the chosen language.
  • A settings window with tabs for the board, the solver, play, online tasks, the bundled UCI engine (with its version and build date), the external engine and Syzygy tables, and general options.
  • One-click installation of the engine into ~/bin for other chess programs.
  • A built-in updater that checks a signed feed over HTTPS, verifies size and SHA-256 of the download, checks the Developer ID signature, swaps the app atomically and rolls back if anything fails.
  • Signed with a Developer ID and notarised by Apple.

Wolfgang

A native chess GUI for UCI engines, named after the cousin who taught me the game.

Wolfgang app icon

Engines

  • Wolfgang has no engine of its own built in: it is a client for any UCI engine. Its bundled copy of zugwunder-uci is found automatically, as are Stockfish and other installed engines; more can be added from a file dialog and tested on the spot.
  • White and Black can have different engines, or two instances of the same one.

Playing

  • Human against engine, engine against engine, or two people at one Mac.
  • Time controls from bullet to classical, custom base time and increment, or no clock. The engine can think by the game clock, for a fixed time per move or to a fixed depth.
  • A live evaluation bar beside the board, clocks with tenths of a second in time trouble, captured pieces with the material balance, check and mate warnings, and the whole game in algebraic notation that you can click through.
  • Engine output as it happens: evaluation, depth, nodes per second, several best lines (MultiPV) and the raw UCI conversation in a console.

Tournaments and files

  • Engine tournaments from opening suites of any number of FEN positions, with rotation, a persistent history, an estimated Elo difference and export as PGN, CSV or JSON. Crashes, illegal moves and timeouts end a game cleanly instead of hanging the tournament.
  • PGN open, save and copy with the full seven-tag roster; FEN import with strict validation of kings, pawns, castling and en passant rights.
  • Four languages, keyboard shortcuts for the common moves (⌘N new game, ⌘S save, ⌘O open, ⌘F flip the board, ⌘Z take back, space to pause), and a layout made for full screen.

The engine

zugwunder-uci, the same engine as a single file for other chess programs.

Where it runs

  • macOS 14 or later on Apple silicon, signed and notarised.
  • Linux x86_64 with AVX2 (Intel from 2013, AMD Zen) and Linux ARM64 (Raspberry Pi 4 and 5, ARM servers), statically linked, no libraries needed.
  • WebAssembly in the browser, at about a third of the native speed on one thread. That is what plays on the play page.

What it offers

  • The complete UCI command set of the 2006 specification: pondering, searchmoves, go mate, node limits, infinite analysis, isready during a search.
  • Options for threads (Lazy SMP on up to 64 cores), hash size, MultiPV, move overhead, Syzygy path, opening book, pondering and analysis mode. Provisional: UCI_LimitStrength with UCI_Elo from 1100 to 3000, calibrated against Stockfish 17.1.
  • Built-in exact tables for five material balances and Syzygy support for every endgame with up to five pieces.
  • A protocol test, check_uci.py, comes with every package so you can verify the binary on your own machine.

The download page has the installation steps and checksums; the engineering page explains what is inside.

See it on your own positions.

Zugwunder 1.1.15 for macOS, Wolfgang 1.0.17, and the engine for macOS and Linux.