← ChessReflex

About

A one-person chess trainer, built in Boulder, Colorado.

Who makes this

ChessReflex is built by Brody Kretz, an Information Science student at the University of Colorado Boulder and a club player. It started as a personal fix for a personal problem: opening repertoires are learned by replaying every line from move one, and most of that replaying is the same first few moves again and again.

The idea

A repertoire is a tree, and the only places you have to think are where it branches on your opponent's move. ChessReflex finds those branch points and drills them side by side, so the positions that are easy to confuse are the ones you practise telling apart. Across the library that is 1,156 decisions instead of 18,685 replayed moves. The reasoning is written up in Learn an opening without memorising.

How the content is checked

Nothing here is hand-typed and trusted. The 36 repertoires are built by branching over an engine's top replies and verified line by line with Stockfish, so no move of ours drops material. The 25 trap courses were found by cross-referencing what club players actually play (Lichess games between 1600 and 2200) against what the engine says it costs, and each one is checked to a real, reachable, winning position. The statistics on every opening page come from the same data and are regenerated when the courses change.

What it costs

The trainer is free without an account, and the openings, guides and trap pages are free to read. A Pro subscription removes the daily allowances and, if ads ever appear, removes those too. Reviews and spaced repetition are never limited, because keeping what you have already learned should not cost anything.

What it is built with

Next.js and React, chess.js for the rules, a Stockfish build that runs in your browser for analysis, and the FSRS scheduler for reviews. Progress is stored in your browser, and synced to an account only if you make one. See the privacy page for exactly what that means.

Questions, corrections or a line you think is wrong: get in touch.