About
How LibreChess Works
LibreChess uses a local chess engine, two rules implementations and replayable source positions. Here is what those checks can establish, where judgement is still involved and when a result deserves a second opinion.
On this page
The engine
Analysis and move grading prefer Stockfish 18 Lite WASM, distributed in stockfish@18.0.8 with the embedded nn-9067e33176e8.nnue NNUE network. It runs in a single-threaded Web Worker on the reader’s device and does not need cross-origin isolation; positions are not sent to a LibreChess analysis server. If it cannot start, LibreChess tries Stockfish 10 WASM fallback and then Stockfish 10 JavaScript fallback. The same local client powers play, hints, review and drill defence.
An engine result is conditional on the engine build, network, search limit and device. The lite Stockfish 18 build uses a much smaller network than full desktop Stockfish, and most LibreChess features deliberately use short searches to stay responsive. These results are useful for candidate moves and ordinary tactical errors, but they are not presented as correspondence-grade analysis. Re-run a critical position with a full current desktop engine and more time when the distinction matters. Exact worker URLs, hashes, package integrity, source commits and build commands are published in the engine manifest. The release check downloads each pinned npm tarball, validates its SHA-512 integrity, extracts only those declared engine paths into a temporary directory and byte-compares them with the files deployed by LibreChess.
How the rules are enforced
The FIDE Laws of Chess are the authority for over-the-board rules. LibreChess implements board play with chess.js; the main app also cross-checks moves with an independent Rust chess crate compiled to WebAssembly after that validator loads. Static practice boards use chess.js.
The casual play board automatically accepts an available threefold-repetition or fifty-move claim instead of reproducing the tournament claim procedure. A timeout is recorded as a draw for the common dead-material cases recognised by chess.js and when the would-be winner has a lone king. The formal rule remains broader: the game is drawn whenever no legal sequence could end in checkmate.
Two software implementations reduce the chance of an unnoticed move-generation bug; they do not turn the browser into a tournament arbiter. Claims that depend on game history, clock procedure, touch-move, claims made to an arbiter or an event’s supplementary regulations cannot always be decided from a FEN alone.
How moves are graded
Each searched position receives an engine evaluation. LibreChess converts centipawns to win probability with the public lichess curve and converts a player’s loss of win probability to a per-move accuracy score with the published lichess formula.
The labels are LibreChess thresholds: a drop of at least 10 percentage points is an inaccuracy, 20 is a mistake and 30 is a blunder. A move matching the engine’s first choice, or delivering mate, is labelled best. These names are a compact interface convention; they are not FIDE terms and need not match labels on another analysis site or at a different search depth.
Classic-game studies and the Daily challenge
The classic library contains 129 decisive games and 8,231 half-moves. 19 games have position-specific editorial notes at their turning points. The remaining 110 scores are presented as replay records with concrete board facts rather than padded out with generic commentary. Neither format assigns a player an intention unless an identified historical source supports it.
The offline reference uses Stockfish 17.1 with one thread, 32 MB hash, MultiPV 3 and a fixed 25,000 nodes for every position. Its complete evidence set was regenerated with a hash-pinned official 17.1 release binary after validating the exact UCI name and author and both embedded NNUE network identities; the executable was hashed again after all searches and the output is bound to the canonical score-corpus fingerprint. The result remains a bounded reference: it can distinguish the leading lines found in that search, but cannot prove an only move, exhaust every legal alternative or establish a player’s thought process.
The default Daily challenge selects three to five winner-side decisions from the same study record. The historical move scores three points. Another move scores two only when it is one of the stored MultiPV candidates within 0.35 pawns of that search’s leading line. All other legal moves are uncredited, not declared bad. The browser does no live grading search, so the same challenge produces the same result on every device.
Before publication, every score and stored engine line is replayed, every credited Daily move is checked and each result and move sequence is compared with a stored reference. These checks establish that the material is internally consistent and legal. They do not turn a strategic interpretation into a historical fact.
How the five-minute coach chooses up to three insights
The coach first ranks the selected player’s moves by how much they changed win probability. It then groups repeated versions of the same theme, so three hanging pieces do not become three near-identical cards. The result is at most three distinct moments, not a lecture on every imperfect move.
The plain-English causes are heuristics built from board features and short engine evidence. They can misidentify the reason for a move, especially in positions with several tactical ideas or a long strategic horizon. The continuation and board are the evidence; the theme label is a prompt to investigate, not an expert diagnosis.
The local learning profile keeps a bounded record for each completed review: a local de-duplication ID, completion time and up to five normalised theme observations with labels, bounded weights and same-site lesson links. It does not store the review’s PGN, FENs, moves, evaluations or prose explanations. A theme is called recurring only after it appears in at least two distinct completed reviews.
Where the data comes from
- Openings: the lichess chess-openings catalogue (CC0) — 3,733 named records in this build, with 35 separately authored family guides.
- Puzzles: the lichess open puzzle database (CC0), filtered for quality.
- Game scores: 129 exact scores selected from Ana Schaigorodsky’s versioned Chess Database dataset (2016), licensed under CC BY 4.0. The repository pins the source archive’s byte length, MD5 and SHA-256, records every selected score hash, and rebuilds the corpus only when every expected occurrence is present. LibreChess’s annotations and display metadata are maintained separately for this site.
Authorship, review and corrections
Instructional pages are published under the responsibility of LibreChess. Rules and rating claims link to first-party material wherever possible, while legal positions and authored move sequences are replayed before publication. A named reviewer or specialist credential is shown only when it is genuine and relevant.
Material corrections are made in the maintained article, and the page date changes when its main advice or analysis changes. The editorial and corrections policy explains the standards used for sources, examples and uncertain claims; the correction route explains what evidence to include and shows whether a monitored submission destination has been configured.
Changelog
- 2026-07 — Replaced the classic-game source with a checksum-pinned CC BY 4.0 Figshare snapshot and an exact 129-score selection manifest.
- 2026-07 — Published exact browser-engine source, build commands and artifact checksums, generated third-party notices and an SPDX SBOM, and added verified data-provenance records.
- 2026-07 — Reworked the classic library into edited studies and a supporting replay collection, with fixed engine evidence and selected-position Daily training.
- 2026-07 — Added the five-minute review: up to three plain-English insights, critical-position retry, recurring local themes and one short next lesson.
- 2026-07 — Rebuilt the opening library around detailed family guides and concise move-order references.
- 2026-07 — Added sourced rating and title references, advanced strategy lessons and an explicit editorial corrections policy.
- 2026-06 — Added a chess rules & glossary hub, tactical-motif guides, an endgame hub, a structured learning path, interactive “try it” boards, a board editor and a draw checker.
- 2026-06 — Replaced thin opening and tactics entries with deeper family guides and motif lessons.
Privacy in one line
Your chess data — games, imported positions, local ratings, streaks, repertoire and settings — stays in browser storage or memory and is not uploaded for analysis. There are no accounts, ads or analytics cookies. LibreChess does use Plausible for aggregate traffic measurement; its events strip page and referrer queries and fragments, and do not include your moves, PGNs, FENs or study records. Ordinary page requests and the limited exceptions for query-string links are explained in the plain-language privacy details →