AI Chess

Choosing A Sparring Time Control: Why Rapid Beats Bullet Against Bots

There’s a habit I see in almost every improver’s game history. They open the bot list, pick something near their rating, set the clock to 3+0 or 1+0 because that’s what they play online anyway, and grind out fifteen games in an hour. Then they wonder why their tournament results haven’t budged.

The problem isn’t the bot. The problem is that bullet against a bot removes every single thing bullet actually trains.

What you’re really practising when you play fast

Think about what wins you a 2+1 game against a human on Chess.com. Some of it is chess. A lot of it isn’t. You win because your opponent premoved into a fork. You win because they spent 14 seconds on move 9 and then had to move on instinct for the rest of the game. You win because you went up a knight, they went on tilt, and threw a rook at your king in a lost position. You win because they had 0.8 seconds left and the position was a draw.

Every one of those is a human failure mode. Bots don’t have them.

A bot on Lichess or Chess.com evaluates at the same depth on move 3 and move 63. It does not have a mouse. It does not premove, so you can’t punish a premove. It has no emotional state, so a lost piece doesn’t cascade into a lost game. And it will never, ever flag. If you’re playing 1+0 against Stockfish limited to 1600, the only skill under load is your clock handling against an opponent who has no clock. You’re doing a time-trial with a sparring partner made of granite.

Worse, the thing you’re actually training is mouse speed and pattern-recall at speed. Those transfer to bullet. They barely transfer to the 30+ minute games where ratings are won, and they don’t transfer at all to the thing you presumably want: calculating better.

The 15+10 case

Set your sparring games to 15+10. Fifteen minutes base, ten-second increment. Here’s the arithmetic that makes it the right number.

A typical rapid game runs 40 moves. With a 10-second increment you’re banking roughly 6.5 minutes of extra time across the game, which means your real budget is about 21 minutes for 40 moves, or 31 seconds a move average. That’s the minimum viable amount of time for actual calculation: enough to check candidate moves, enough to look two moves past the first thing you saw, and critically, enough that you were able to find the right move if you were good enough. A blunder in 15+10 is a real blunder. A blunder in 2+1 is noise.

Compare that to 3+0. Forty moves, 180 seconds, 4.5 seconds a move. At that rate the question “would a better calculator have found it?” is unanswerable, so the game teaches you nothing you can act on.

The increment matters as much as the base. With 15+0 you get clock panic in the endgame, and endgames are exactly where bot sparring is most valuable, because bots convert technically and won’t hand you the half-point that a tired human would. The 10-second increment means you can still play a rook-and-pawn ending properly on move 55.

Time controlMovesSec/moveWhat it actually trains
1+0401.5Mouse speed, pre-move reflexes
3+0404.5Pattern recall at speed
10+04015Some calculation, bad endgames
15+104031Calculation, planning, technique
30+04045Same as above, half the games/hour

Fifteen-plus-ten is the sweet spot between “long enough to think” and “short enough to play three games and still review them.” Two hours gives you three games plus analysis. Two hours of 3+0 gives you twenty games and nothing to say about any of them.

A worked example: the game you can only learn from slowly

Here’s a real pattern from a sparring session against Maia-1900 (a neural net trained on human games, so it actually blunders like a 1900 rather than like a nerfed Stockfish). I was Black in a Queen’s Gambit Declined, and on move 18 the position was roughly balanced. I played a plausible-looking ...Rc8.

After the game, dropping the position into Lichess’s analysis board and running the local Stockfish 17 gave me this:

18... Rc8       -0.14
    Depth 26, 1.2s

Engine top lines at move 18 (Black to move):
 1. -0.61   18...Ne4   19.Nxe4 dxe4 20.Nd2 Qg5
 2. -0.58   18...Bg4   19.Qd2 Bxf3 20.gxf3 Ne4
 3. -0.14   18...Rc8   19.Ne5 Bf5 20.Rac1
 4. +0.32   18...h6    19.Ne5 Nd7 20.Nxd7

Two things about that output. First, sign convention: Lichess reports evaluation from White’s perspective always, so -0.61 is good for Black. A lot of improvers misread this and conclude the engine hates their move when it loves it. Second, the gap between ...Ne4 at -0.61 and ...Rc8 at -0.14 is 0.47 pawns, which is not a blunder. It’s half a tempo of positional slack. Engines throw these up constantly and they are almost never worth studying.

The finding that actually mattered came ten moves later. On move 28 I traded into a rook endgame that Stockfish called 0.00, and the bot won it. That’s the lesson: not the 0.47 at move 18, but the fact that I can’t hold a drawn rook ending. You cannot discover that in bullet, because in bullet the ending is decided by whose hand is faster.

Reading the numbers without fooling yourself

Once you’re playing slow enough that your moves are real decisions, the engine output becomes usable. Some working thresholds, in centipawns (cp), where 100cp = one pawn:

  • Under 30cp: ignore completely. Engine preference, not human-relevant.
  • 30–100cp: worth a glance if it repeats across games. One instance means nothing.
  • 100–300cp: a real mistake. You dropped a pawn or a serious positional concession. Find out why.
  • 300cp+: blunder. You missed a tactic, or walked into one.

The single most useful habit is filtering for the 100cp+ swings only, and then asking what did I not look at? Chess.com’s Game Review labels these “Mistake” and “Blunder” and Lichess’s “Learn from your mistakes” walks you through them one at a time. Both are useless if your moves were coin flips, which is the whole argument for 15+10.

Set the engine to a fixed depth rather than a fixed time. In the Lichess analysis board, click the engine settings and set depth to 22 or so. At depth 22 the eval is stable enough that re-running it gives you the same number, which matters when you’re comparing two games from the same session. On infinite/time-based analysis the numbers drift and you’ll chase ghosts.

One more thing worth setting up: multi-PV. Bump the engine to 3 lines instead of 1. A single best move tells you what a 3600-rated program would play. Three lines tell you whether your move was in the reasonable band or genuinely off. That distinction is the difference between “I should have played Ne4” and “my plan was wrong.”

Picking an opponent worth the slow clock

Slow sparring costs you time, so the opponent needs to be worth it, and this is where bot choice starts to matter more than time control. A Stockfish level capped at 1500 plays like a 2900 engine that randomly throws away material, which is a completely different error profile from a real 1500. You’ll learn to punish gifts you’ll never be given. The Maia family (maia1, maia5, maia9 on Lichess, weighted to 1100/1500/1900 human play) makes human-shaped errors instead: it walks into back-rank problems, it mishandles closed positions, it plays natural-looking developing moves in positions that demand something concrete. Chess.com’s personality bots sit somewhere in between.

The full breakdown of which engines actually resemble your rating band, and how to configure them, is covered in Sparring Against Human-Like Bots At Your Rating. Pair that choice with the clock and you have a session that means something.

A session template you can run tonight

Here’s the structure that works, 90 minutes:

  1. Three games at 15+10 against a human-like bot rated 100–200 points above you. 45–60 minutes total. Play them as if they’re rated. No takebacks, no engine on, no second screen.
  2. Import all three into the Lichess analysis board (paste the PGN into lichess.org/paste). Run the browser Stockfish at depth 22, multi-PV 3.
  3. Mark every swing over 100cp. You’ll typically get 4–8 across three games. Write each one down as a sentence: “Move 24, I played Bd3 and dropped a pawn to Nxe5 because I didn’t check his knight moves.”
  4. Group them. Three of your six will be the same error. That’s your training target for the week.

That last step is the payoff, and it’s the one that only exists at slow time controls. Six mistakes from three rapid games form a pattern. Sixty mistakes from twenty bullet games form a fog.

The clock you choose determines whether your sparring produces data or exhaust. Bullet against a bot produces exhaust: you can’t tell a missed tactic from a slow mouse, and neither can the engine reviewing it afterwards. At 15+10 every move you made was a move you chose, which means every mistake you made is a mistake you can fix.

So: 15+10, a bot that errs like a human, three games, and a notebook. Play the third game as carefully as the first.