Opening Builder.com

Prepare for moves you'll actually face. Play the moves that actually win.

Chess opening repertoires built automatically from millions of real Lichess games.

Chess Game (PGN Format)

Paste a single PGN game. The system will automatically extract the mainline moves for repertoire generation.

Lichess Database Settings

Lichess.org maintains a database of millions of real games. The "opening explorer" shows how often each move is played and its win/draw/loss rates. These settings control which games OpeningBuilder draws data from when building your repertoire.
Which game speeds to include. Players often choose different moves in bullet (very fast) vs classical (slow) games. Select time controls that match how you typically play.
Filter by the Lichess rating of players in the database. Select ratings close to your level to see what opponents at that strength typically play. Higher-rated games often feature more theoretical moves.

Your Opponent's Move Filters

These settings determine which of your opponent's moves OpeningBuilder will include in your repertoire.
Controls how rare a move must be before OpeningBuilder ignores it. "1 in 100 games" means: only prepare for opponent moves you'd face at least once every 100 games. Lower numbers = smaller repertoire covering only common moves. Higher numbers = larger repertoire covering rare sidelines too. The probability accounts for how likely you are to even reach that position.
Ignore opponent moves that appear in fewer than this many games in the database. This filters out unreliable data from rarely-played moves where the sample size is too small to trust.

Your Candidate Move Selectors

These settings determine how OpeningBuilder will select repertoire moves it recommends you play. OpeningBuilder will recommend you play the highest winrate moves within these constraints.
This determines how many of the most played moves in a position OpeningBuilder should consider. If you select 5, OpeningBuilder will ignore strong moves that aren't in the top 5 most played in a position.
%
If a move was played less often than this percentage in a given position, we won't consider it as a candidate move.
If a move was played in fewer games than this in a given position, we won't consider it as a candidate move.
%
How certain OpeningBuilder needs to be before trusting a move's winrate. Higher values = more conservative, requiring more games as evidence before selecting a move. Lower values = more willing to trust moves with less data. 95% is a good balance.
By default, draws count as half a point for winrate calculations. But you may want a 'must win' repertoire, where a draw is as good as a loss. If so, untick this.

Engine Filters

These determine how OpeningBuilder will use engine analysis when generating your repertoire. Note that high engine depths can significantly increase the length of time OpeningBuilder takes to make a repertoire.
If this is off, the engine will not be used to filter your candidate moves.
How many moves ahead the engine calculates. Higher depth = more accurate evaluation but slower analysis. Depth 20 is recommended for reliable opening analysis.
When the database runs out of data for a position but your opponent still has moves to prepare for, the engine will suggest the best reply. This prevents your repertoire from ending abruptly in positions where opponents might still play something unexpected.
The worst engine evaluation you're willing to accept for a higher winrate move. Centipawns measure position advantage: 100 = 1 pawn ahead, -100 = 1 pawn behind. Example: -300 means you'd accept being down 3 pawns if the winrate is good. The default -99 is very lenient (nearly 1 pawn). Forced mates are never accepted.
How much evaluation you're willing to sacrifice on a single move to play something with a higher winrate. Example: -50 means you'd accept losing half a pawn of advantage for a better practical result. The default -99 is lenient. Being loose here (e.g., -50 to -100) is recommended since engine evaluations in openings can be inconsistent.
When you're already winning by this much, the Move Loss Limit is ignored. The idea: if you're up 3 pawns (300 centipawns), playing a simpler move that's "only" up 2 pawns but has a higher winrate is fine. Default 300 = 3 pawns advantage.
How much memory (in megabytes) the engine can use to store positions it has already analyzed. More memory = faster analysis since it doesn't recalculate the same positions. Default 320 MB works well for most computers. If unsure or on a low-memory device, try 16-64 MB.
Loading samples...

OpeningBuilder - Generating Repertoire

Initializing...
Position: 0 of ~0
Speed: 0 pos/sec
ETA: --:--
0%
Ready to begin analysis...
Waiting for activity...
Lines Found: 0 Moves Analyzed: 0 Continuations: 0

Error

Success!

Console Log Categories