Stockfish: The Open-Source Chess Engine, How It Thinks, and Stockfish 19 in 2026

Stockfish is the strongest free chess engine. Here's its history from Glaurung, how its search and NNUE evaluation work, a tested Python example, and what's new in Stockfish 19.

Flat illustration of a simplified chessboard with a branching tree of nodes rising from one square and one highlighted path, representing the Stockfish chess engine's search

Stockfish is a free, open-source chess engine, and widely regarded as the strongest chess program you can download. It’s written in C++, released under the GPL v3, and developed by a volunteer community that tests every change on computers donated by volunteers. It powers the analysis on sites such as Lichess and Chess.com, sits behind many chess apps and GUIs, and has won the Top Chess Engine Championship (TCEC) 19 times. The current release is Stockfish 19, from September 2026.

This profile covers where Stockfish came from, how its search and neural-network evaluation work, a tested Python example that asks it for moves, how the project develops and tests changes, and what’s new in 2026. Facts were checked against the project’s repository and release notes in November 2026.

What Is Stockfish?

Stockfish is a free, open-source UCI chess engine written in C++ and licensed under the GPL v3. It began in 2008 as a fork of Tord Romstad’s Glaurung, combines alpha-beta search with an NNUE neural-network evaluation, and is developed by volunteers through the Fishtest testing framework. The latest release is Stockfish 19, from September 5, 2026.

Stockfish at a glance

TypeChess engine (no graphical interface)
First releaseStockfish 1.0, November 2, 2008
Based onGlaurung 2.1 by Tord Romstad
Original authorsTord Romstad, Marco Costalba, Joona Kiiski
Latest releaseStockfish 19, September 5, 2026
Written inC++
LicenceGNU GPL v3
ProtocolUCI (Universal Chess Interface)
EvaluationNNUE neural network, CPU-only (SFNNv16 in Stockfish 19)
SearchAlpha-beta with iterative deepening
Runs onWindows, macOS, Linux, Android, iOS and WebAssembly
TestingFishtest, on volunteers’ donated CPUs

From Glaurung to Stockfish

Norwegian programmer Tord Romstad released the chess engine Glaurung in 2004. In 2008, Marco Costalba forked Glaurung 2.1 and named the result Stockfish, and Stockfish 1.0 was released on November 2, 2008. Romstad, Costalba and Joona Kiiski are credited as its first authors, and Romstad soon ended Glaurung in Stockfish’s favour.

Two changes turned a strong engine into a dominant one:

  • Fishtest (2013). Volunteers began donating CPU time to a distributed testing framework, which plays huge numbers of games to check whether each proposed change really makes the engine stronger. When Costalba stepped down in 2014, a volunteer core team took over, and the project has been community-run ever since.
  • NNUE (2020). Stockfish 12, released on September 2, 2020, added an efficiently updatable neural network (NNUE) for evaluating positions, an idea first developed for computer shogi. The hand-crafted evaluation was removed entirely in 2023, and Stockfish 16.1 (February 2024) was the first release to rely purely on neural networks (Stockfish on GitHub).

How Stockfish Thinks

Stockfish combines two parts:

  • Search. Stockfish uses alpha-beta search, a way of exploring the tree of possible moves while skipping branches that can’t change the result. It searches iteratively, one ply deeper each time, and adds many refinements on top: move ordering, aggressive pruning of unlikely moves, extensions for forcing moves, and a quiescence search that settles captures before scoring a position. On the highest-end hardware, it can search more than 500 million positions per second.
  • Evaluation. At the end of each line, a neural network scores the position. NNUE networks are designed to run fast on ordinary CPUs: when a move changes only a few pieces, the network updates its first layer incrementally instead of recalculating everything. So Stockfish needs no GPU, unlike engines such as Leela Chess Zero.
How alpha-beta search skips moves White picks the best move; Black picks the reply worst for White. Scores are from White’s side. White to move: plays C best score +4 Move A worth +3 Move B worth at most +2 Move C worth +4 +3 +5 +2 ? +4 +6 never searched Cutoff: after one reply, B is already worse than A’s +3, so B’s other replies are skipped. Leaves: Stockfish scores end positions with its NNUE network, then repeats the search one ply deeper. Simplified two-ply example; Stockfish adds move ordering, pruning and extensions on top of alpha-beta.
A simplified alpha-beta search: once move B is shown to be worse than move A, Stockfish skips the rest of B’s replies.

Stockfish has no board or graphical interface of its own. It speaks the UCI (Universal Chess Interface) protocol, a text protocol that chess GUIs, websites and scripts use to send it positions and receive moves and evaluations.

Using Stockfish from Python

Because it speaks UCI, Stockfish is easy to drive from code. This script uses the python-chess library (python-chess on GitHub) to set up the position after 1.e4 e5 2.Bc4 Nc6 3.Qh5, where White threatens Qxf7 checkmate, and asks Stockfish for Black’s three best replies with its win, draw and loss estimates:

"""Ask Stockfish for its three best replies to an early queen attack."""
import shutil
import chess
import chess.engine

board = chess.Board()
for move in ["e4", "e5", "Bc4", "Nc6", "Qh5"]:   # White threatens Qxf7#
    board.push_san(move)

engine_path = shutil.which("stockfish") or "/usr/games/stockfish"
with chess.engine.SimpleEngine.popen_uci(engine_path) as engine:
    engine.configure({"Threads": 1, "Hash": 64, "UCI_ShowWDL": True})
    print(engine.id["name"])
    infos = engine.analyse(board, chess.engine.Limit(depth=20), multipv=3)
    for info in infos:
        move = board.san(info["pv"][0])
        score = info["score"].pov(chess.BLACK)          # from Black's side
        wdl = info["wdl"].pov(chess.BLACK)              # Stockfish's own estimate
        print(f"{move:<5} {score.score(mate_score=100000)/100:+.2f}  "
              f"win {wdl.wins/10:.1f}%  draw {wdl.draws/10:.1f}%  loss {wdl.losses/10:.1f}%")

Its output:

Stockfish 16
g6    +0.29  win 3.2%  draw 96.7%  loss 0.1%
Qe7   +0.04  win 0.9%  draw 98.6%  loss 0.5%
Qf6   -0.08  win 0.4%  draw 98.5%  loss 1.1%

All three moves stop the mate. Stockfish prefers 3…g6, which also attacks White’s queen, and rates it slightly better for Black, while still expecting a draw with best play. Scores are in pawns, and the percentages are Stockfish’s own estimate of the game result from Black’s side.

Tested: we ran this script with python-chess 1.11.2 and Python 3.13 on Ubuntu 24.04, against Stockfish 16, the version Ubuntu packages. The UCI commands are the same for Stockfish 19, but its scores will differ slightly. We also compiled Stockfish 19 from its release source, and it identified itself correctly, but it couldn’t search: our test machine couldn’t download its 98.5 MB network file.

How Stockfish Is Developed

Every change to Stockfish has to prove itself on Fishtest before it’s merged (Fishtest’s live test queue). A proposed patch plays tens of thousands of fast games against the current version on volunteers’ computers, and statistical tests (SPRT) decide whether it’s a real improvement or noise. Successful patches then pass a second test at longer time controls. The project’s other parts, from the website to the nnue-pytorch trainer that produces its networks, are open source too.

The repository shows the scale of the effort: more than 7,300 commits from over 300 contributors since 2008, and about 350 commits in 2026 alone.

Stockfish 19 and the State of the Engine in 2026

Stockfish 18 arrived on January 16, 2026, with the “Threat Inputs” network features and up to 46 Elo over Stockfish 17. Stockfish 19 followed on September 5, 2026. According to its release notes, it:

  • Gains up to 44 Elo over Stockfish 18, winning more than three times as many game pairs as it loses.
  • Ships universal binaries that detect the CPU’s features and pick the fastest code automatically, instead of separate AVX2 and AVX-512 downloads.
  • Introduces the SFNNv16 network architecture with new pawn-pair features, and retires the secondary “small” network added in Stockfish 16.1.
  • Trains with quantization-aware training on hundreds of billions of positions rescored by a strong Leela Chess Zero network.
  • Adds native support for RISC-V and LoongArch, 1 GB Linux huge pages and WebAssembly targets.
  • Validates positions, FEN strings and UCI commands more strictly, stopping with a clear error instead of misbehaving.

Development hasn’t paused since: by late October 2026, the main branch had already moved on to a newer network architecture (SFNNv19). In competition, Stockfish has won the TCEC Superfinal in every season from Season 18 onward and has topped every Chess.com Computer Chess Championship since 2020.

Stockfish and the GPL: The ChessBase Case

Stockfish’s GPL licence lets anyone use, change and sell it, provided they share their source code under the same terms. In 2021, Stockfish developers sued the German company ChessBase over Fat Fritz 2 and Houdini 6, which were based on Stockfish but sold without the GPL’s freedoms. The case was settled in November 2022: ChessBase acknowledged the licence violations, agreed to stop selling the products and appoint a compliance officer, with its licence to be reinstated after a year. The Stockfish team asked for no damages (Stockfish’s announcement of the agreement).

Where You’ll Find Stockfish

Stockfish runs on Windows, macOS, Linux, Android and iOS, and in web browsers through WebAssembly. You’ll meet it in:

  • Chess websites, including Lichess and Chess.com, which use it for game analysis.
  • Desktop GUIs, such as Arena, Cute Chess, En Croissant and ChessBase products, which load it as a UCI engine.
  • Mobile apps, such as DroidFish on Android and SmallFish on iOS.
  • Your own code, through UCI libraries such as python-chess.

The official downloads are on the Stockfish website, and every release’s source code and notes are on GitHub.

Stockfish Alternatives

  • Leela Chess Zero (Lc0): an open-source engine built on deep neural networks in the style of DeepMind’s AlphaZero. It’s at its best on a GPU and is Stockfish’s main rival in engine championships (Leela Chess Zero).
  • Commercial engines, such as Komodo Dragon, for players who want a different playing style or a commercial product.
  • Godot or another game engine, if you’re building a chess game rather than an engine. See our Godot engine profile.

For more engines and libraries, browse our directory of open-source C++ game engines.

Key Takeaways

  • Stockfish is a free, open-source chess engine in C++ under the GPL v3, forked from Glaurung in 2008.
  • It combines alpha-beta search with an NNUE neural-network evaluation, and has relied purely on neural networks since Stockfish 16.1.
  • The latest release is Stockfish 19 (September 5, 2026), up to 44 Elo stronger than Stockfish 18, with universal binaries.
  • Every change is tested on Fishtest, a distributed framework running on volunteers’ CPUs.
  • It speaks UCI, so GUIs, websites and a few lines of Python can use it.
  • It dominates engine championships, winning every TCEC Superfinal since Season 18.

Conclusion

Stockfish shows what open-source development can do when a community agrees on one rule: a change goes in only if it wins games. Built by volunteers, tested on donated hardware and free for anyone to use, it plays far beyond any human and tops the engine rankings, and it keeps getting stronger with every release.

For more engines across every genre, browse our game development hub.

Scroll to Top