How it works

How we built chess bots that blunder like humans

6 rated bots from 400 to 2000, plus personalities. Here is how they decide what to play, and how we measure that they play like people.

Last updated

touch_appPlay a few opening moves: the bot answers from the human opening book, the same way it does in a game.

8
7
6
5
4
3
2
1a
b
c
d
e
f
g
h
You have White. Make your first move.

Measured: real players vs our bots, 400 to 2000

Real players vs our bots: average centipawn loss per move (lower is stronger)
Real players (Chess.com rapid)Wings Chess bot
400
101
119
800
84
92
1000
77
79
1200
70
75
1600
59
64
2000
49
54

Bot figures: 120 positions from recent Chess.com games of oladev1, each bot choosing a move exactly as in the app, scored by a deeper Stockfish search (losses capped at 1000 per move). Real-player figures: the typical loss per move at each rating, from a trend fitted through 41 real Chess.com rapid players whose own recent games were measured the same way. Generated 2026-11-06.

9.2
400: bot blunders per 100 moves (real players ≈10.9)
5.8
800: bot blunders per 100 moves (real players ≈7.2)
5
1000: bot blunders per 100 moves (real players ≈6.4)
4.2
1200: bot blunders per 100 moves (real players ≈6.1)
4.2
1600: bot blunders per 100 moves (real players ≈3.8)
2.5
2000: bot blunders per 100 moves (real players ≈2.8)

Why a weakened engine feels wrong

The usual way to make a chess bot weaker is to limit Stockfish's strength setting. It works on paper, but it plays like a strong engine having a bad day: perfect moves, then a random-looking blunder nobody would ever play. Real club players make different mistakes. They miss your threat because they only looked one move ahead, they grab a pawn and lose a piece, they bring the queen out early. Our bots are built to make those mistakes.

How we measured this

Measured on 41 Chess.com players' public games, November 2026.

We picked random public Chess.com players rated 400 to 2000 and took their 5 most recent rapid games. Stockfish scored every move they played from move 5 on, comparing it with the best move, and we averaged the loss per move. We fitted a smooth trend through all the players so no single game sways a rating, then ran our bots through exactly the same measurement.

Correction: our first version used textbook reference values that overstated human mistakes; the bots are now tuned to these measured numbers.

Three knobs per rating

  • Depth: how far ahead the bot looks. 2 moves at 800 (so it misses your threats), 6 at 1600.
  • Temperature: how willing it is to pick a slightly worse move among the reasonable-looking ones. Lower ratings spread their choice more.
  • Blunder chance: on a small share of moves, a real mistake: a plausible-looking move that loses between 1.5 and 7 pawns of value, never an absurd one.

A human opening book

In the first moves the bots don't calculate at all: they pick from what amateurs actually play, weighted by how often. Below 1000 the weights change, because beginners love the early queen attack and sometimes walk into Scholar's Mate. Here is what a bot plays as White after 1.e4 e5:

Nf360%
Bc412%
Nc38%
Qh54%
d48%
f48%
Rated 1000 and above.
Nf347%
Bc416%
Nc38%
Qh519%
d46%
f43%
Rated below 1000: note the jump in Qh5.

Natural moves over engine moves

Among moves of similar value, people choose the ones that look purposeful. Each candidate gets a small bonus or penalty before the bot chooses:

  • captures (more for bigger pieces), checks and threats against a valuable piece: bonus;
  • castling and developing a knight or bishop in the opening: bonus;
  • central pawn moves early: bonus. Edge pawns, early rook lifts, king walks and moving a developed piece back home: penalty;
  • below 1000, an early queen sortie gets a small bonus; above it, a penalty.

Stronger bots lean on these habits less and on calculation more, as strong players do.

Human think time

A bot that answers instantly every move feels like a machine. Ours take about a second for opening and obvious moves (a recapture, the only good move), two to six seconds when several moves are close in value, and speed up in faster time controls and when their clock runs low.

3s
800: average think, 10-minute game
3.8s
1200: average think, 10-minute game
4.2s
1600: average think, 10-minute game
4.1s
2000: average think, 10-minute game

An example game at 1200

  1. 1.e4
  2. e5
  3. 2.f4
  4. b6?
  5. 3.a3
  6. d5
  7. 4.Nf3
  8. Bg4
  9. 5.Be2
  10. exf4
  11. 6.Ng1?
  12. Nf6?
  13. 7.Bxg4
  14. dxe4
  15. 8.b4?
  16. h5
  17. 9.Bh3
  18. Qe7
  19. 10.Bc8?
  20. Kd8?
  21. 11.Bb7
  22. g6
  23. 12.c3
  24. Qe8
  25. 13.b5?
  26. a6?
  27. 14.Bxa8
  28. Qe6
  29. 15.h3
  30. Bd6
  31. 16.h4
  32. Ng4
  33. 17.Bb2?
  34. axb5??
  35. 18.Ne2
  36. c6
  37. 19.Nd4
  38. Qc4
  39. 20.Rh3
  40. Qc5
  41. 21.Ke2
  42. Ke8
  43. 22.d3
  44. Be5
  45. 23.Qb3?
  46. Rg8?
  47. 24.Qb4
  48. Ne3
  49. 25.Bb7?
  50. Nd5
  51. 26.Qxc5
  52. bxc5
  53. 27.Nf3??
  54. exf3+
  55. 28.Rxf3
  56. Kd8
  57. 29.Ba8
  58. Re8
  59. 30.Kf1
  60. Bh8
  61. 31.Nd2
  62. c4?
  63. 32.a4
  64. Ne3+
  65. 33.Kg1
  66. Re7
  67. 34.d4
  68. bxa4
  69. 35.d5?
  70. Kd7?
  71. 36.Ba3
  72. Nxd5
  73. 37.Rc1
  74. Ne3
  75. 38.g3
  76. Re5
  77. 39.Re1
  78. Bg7?
  79. 40.Kh1?
  80. Rd5
  81. 41.Rxf4
  82. g5?
  83. 42.Rxf7+
  84. Kd8
  85. 43.hxg5
  86. Ng4?
  87. 44.Be7+
  88. Ke8
  89. 45.Rxg7
  90. Rd3
  91. 46.Ba3+
  92. Ne3
  93. 47.Bc5
  94. a3
  95. 48.g6
  96. Kd8
  97. 49.Rg8+?
  98. Kd7
  99. 50.Kg1?
  100. h4
  101. *
The 1200 bot against itself, opening from the human book, every move scored by Stockfish (a sample game chosen because it contains a blunder). 2 blunders (??) and 21 mistakes (?) in 50 moves. Hover a marked move to see what was better. The board shows the first blunder, with the better move as an arrow.