Two ways to weaken a chess engine — and why they produce completely different opponents
Every "800-rated bot" you have ever faced is a superhuman engine that has been deliberately held back. But there are two opposite ways to hold an engine back: teach it to make mistakes, or take away its pieces and let it play perfectly with what remains. These two constructions produce opponents so different that lumping them together as "bots" obscures everything interesting about either one.
Every weak bot is a strong engine in disguise
Modern chess engines are overwhelmingly stronger than any human. There is no such thing as an engine that is naturally 800 strength — a beginner-level bot only exists because someone took a superhuman calculator and deliberately crippled it. How they cripple it determines everything about what it is like to play against, and there are two fundamentally different approaches.
The first approach keeps all thirty-two pieces on the board and degrades the engine's play. The second keeps the engine's play at full strength and degrades its starting position by removing pieces. The first produces a behavioral weakness; the second, a structural one. Most players have only ever met the first kind, and much of what "everybody knows" about bots — that they play weirdly, that their mistakes feel fake, that they don't play like people — is really knowledge about that first kind only.
Method one: the engine that is programmed to err
The standard way to make a playable weak bot is error injection. Implementations vary — a shallower search, random noise added to the evaluation, or, as in Stockfish's own "Skill Level" setting, examining several candidate moves and sometimes deliberately choosing an inferior one, with the probability of a bad choice tuned to the target strength. Commercial bots typically layer several of these techniques and then adjust the advertised rating until real players score against the bot roughly the way the number predicts.
This works, in the sense that the bot's average results end up matching a rating. Where it fails is the texture of the mistakes. Human error is not random noise sprinkled over good moves — it has deep structure. Humans systematically overlook backward moves and long retreating moves; we see the first threat and miss the second; we blunder far more in complex positions and under time pressure; we miss our opponent's resources more readily than our own. A weakened engine reproduces the human error rate without the human error pattern. The result is the experience many players describe: the bot plays several moves of eerily precise chess, then shoves its queen onto a defended square for no reason a human ever would. The mistake is real, but it is the wrong kind of mistake — statistically correct, psychologically alien.
This problem is well recognized in computer-chess research. The Maia project (a collaboration between researchers at Toronto, Cornell and Microsoft) trained neural networks on millions of online human games, one model per rating band, specifically so that the model would predict — and reproduce — the moves and mistakes that real players of that level actually make. The very existence of that research program is an admission of the point: ordinary engine-weakening does not produce human-like play, and making a bot err believably is a genuinely hard scientific problem, not a slider setting.
Method two: the engine that plays perfectly with fewer pieces
The second approach is the modern revival of one of chess's oldest institutions. Before rating systems existed, odds-giving was how strength differences were expressed and bridged: nineteenth-century masters routinely played serious games at "pawn and move," knight odds, or rook odds, and a player's class was described by the handicap a master needed to give them. Paul Morphy gave knight and rook odds against strong amateurs; whole match traditions were built on graded handicaps.
Applied to an engine, the idea becomes: remove pieces from the engine's side before move one — a queen, a rook, a knight and two pawns, whatever the gap requires — and then let it play at full strength, deep search, no injected errors, no artificial noise. The opponent that results is unlike anything else in chess. Within the game it is essentially flawless: it never hangs a piece, never misses a tactic you leave available, never forgets a threat, and converts any advantage with machine precision. Its entire weakness was fixed before the first move and never fluctuates afterward.
Playing such an opponent has a very particular character, and it is worth stating plainly because it is the mirror image of the error-injection experience. Against a weakened bot, part of your job is vigilance — waiting to pounce on the gift you know is scheduled to arrive. Against a full-strength odds engine, no gift is ever coming. You start with the whole advantage you will ever have, and the game is a race between that fixed material surplus and your own error rate, fed to an opponent that converts every slip perfectly. Either your advantage survives your mistakes long enough to simplify into a won position, or you are ground down. There is no swindle, no hoping it cracks, no lucky win.
Because the odds engine's own play is essentially noise-free, results against it behave differently from results against humans. Human-versus-human scores shift gradually with rating difference. Against a fixed odds configuration, players commonly find something closer to a step: one handicap they beat almost every time, the next one down they almost never beat, with a surprisingly narrow band in between. The outcome is dominated by a threshold — whether the player's typical mistake rate is small enough for the material surplus to survive — rather than by the mutual, fluctuating blundering that decides human games. One practical consequence: you cannot get lucky past such an opponent. Beating a configuration that used to beat you (with openings varied, so the win can't be memorized) reflects an actual reduction in your own error rate.
The difference, stated precisely
| Error-injection bot | Full-strength odds engine | |
|---|---|---|
| Material | All pieces | Missing pieces, fixed before move one |
| Move quality | Fluctuates by design — good moves interleaved with deliberate errors | Near-perfect every move |
| Nature of weakness | Behavioral: it does bad things during the game | Structural: it starts with a deficit and never errs again |
| How you win | Play soundly and punish its scheduled mistakes | Preserve and convert an advantage you were given, without cracking |
| Game-to-game variance | High — the errors land in different places each game | Very low — with fixed settings, nearly all remaining variance is yours |
| Resemblance to humans | Errs like no human: right rate, wrong pattern | Errs like no human: it doesn't err at all |
That last row deserves emphasis, because it is where casual criticism of bots goes wrong. Neither kind of bot plays like a human — but they depart from human play in opposite directions. The error-injection bot is inhuman because its mistakes are implausible; the odds engine is inhuman because it makes none. Dismissing all bots with "they don't play like people" treats these opposite departures as if they were the same flaw, when in fact each one's inhumanity has entirely different consequences for what the bot is useful for.
What the rating label means in each case
Both kinds of bot usually carry an Elo-style number, and in both cases the number deserves scrutiny — but for different reasons.
A rating is not an abstract measure of chess quality. It is defined by results: your rating predicts your score against the pool of rated humans. Any number attached to a bot is therefore a calibrated claim — "typical players of rating X score about 50% against this opponent" — and it is only as good as the calibration behind it. For error-injection bots, platforms can tune the label empirically against millions of user games, and the resulting number is reasonably meaningful on average, even though any individual game feels unlike a human encounter.
For odds engines, attaching a human-equivalent rating is trickier, for reasons that are themselves instructive:
The value of a handicap depends on who is exploiting it. Converting extra material cleanly is a skill. A knight advantage that a club player converts routinely is worth much less in the hands of a novice who cannot simplify or avoid counterplay — which means "engine minus a knight" does not sit at one fixed point on the human scale. Grandmaster Larry Kaufman, who has studied both material values and engine-odds play extensively (including public odds matches between strong engines and titled players), has documented exactly this: the rating value of a given handicap shifts substantially with the strength of the human receiving it.
Which square the piece leaves matters, not just which piece. A handicap is a position, not a quantity. Removing the f-pawn tears open the king's shelter and changes the game from move one; removing the a-pawn is a quiet deficit that may not matter for thirty moves. A missing king's knight reshapes the whole opening; a missing queen's rook can go unfelt until the middlegame. Two handicaps of identical point count can produce games of entirely different difficulty — so the mapping from "pieces removed" to "equivalent strength" cannot be read off a material table. It has to be measured, configuration by configuration, against real players.
The steps are coarse and the results are step-like. The alphabet of removable pieces is limited, and because of the threshold behavior described above, the difficulty gaps between adjacent configurations can be wide and uneven. An odds ladder is naturally an ordering of difficulties — unambiguous and stable — rather than an evenly spaced ruler. "I now beat a rung I could not beat" is solid information; "that rung equals exactly 1000" is a label of convenience unless someone has done the calibration work.
The honest summary: an error-injection bot borrows the human rating scale and averages out to its number while playing nothing like the humans on that scale. A full-strength odds engine defines its own, very stable difficulty scale — one that correlates strongly with human strength but maps onto the Elo axis only approximately, and differently for different players.
What each opponent is actually good for
Once the two constructions are separated, their uses separate too, and the perennial "are bots good practice?" argument mostly dissolves.
The error-injection bot — especially a human-trained one — is a sparring partner. Its purpose is to approximate the experience of playing a person: mistakes will occur, and your job is to stay sound and punish them. That skill — exploiting an opponent's errors — is a large part of practical chess at every level below master, and it is precisely the skill an odds engine can never exercise, because an odds engine never errs. If your goal is rehearsal for human opponents, an opponent that makes (ideally plausible) mistakes is the right tool, and the more human-like its errors, the better the rehearsal.
The full-strength odds engine is a training standard. Its value comes from the very properties that make it inhuman: perfect punishment and total consistency. It drills, relentlessly, the skills that dominate improvement below roughly 1500 — keeping pieces defended, spotting threats before moving, trading down when ahead, converting extra material without allowing counterplay — because every lapse in any of these is punished immediately and identically, game after game. And because the opponent contributes almost no variance, it doubles as an unusually clear progress meter: climbing from one handicap to the next, with varied openings, demonstrates improvement in a way that a noisy run of online games cannot. Small-odds games against a full-strength engine — a pawn, or the exchange — remain brutal conversion training even for strong players, which is precisely how some professionals use engine odds today.
What the odds engine cannot teach is equally clear-cut: exploiting mistakes (there are none), practical decisions against imperfect resistance, defending worse positions in hope of a swindle, clock handling, and the psychology of a fallible opponent. A training diet of odds games alone would sharpen one family of skills and starve another. The two bot types are complements, not competitors — and both remain supplements to rated human play, which is the only place the full blend of chess skills is tested at once.
The bottom line
"Bots don't play like humans" is true twice over, in opposite ways. A weakened, full-material engine fails at imitation: its errors are real but implausible. A full-strength engine giving material odds does not even attempt imitation: it offers something no human opponent can — a perfectly consistent, perfectly punishing standard that turns your own mistakes into the only variable on the board. Judged as fake humans, both fall short. Judged as tools — one for rehearsing against fallible opponents, one for measuring and disciplining your own play — each does something the other cannot, and something human opponents cannot reliably do either.
Both opponents, one app
ChessMend's Play mode includes an adjustable engine opponent from roughly 300 to 2800 strength, plus custom material handicaps for full-strength odds play — alongside game import, unlimited Stockfish review, and puzzles built from your own blunders.
Explore Play mode →