Reflex Chess

Play chess against the computer, at your level

Not a difficulty slider. An opponent drawn from a pool near your rating, on a clock, for a result that moves both your ratings.

An opponent at your level, not a difficulty slider

Most sites hand you a menu: level 1 to level 10, or three named bots. You pick one, and it stays exactly as strong as it was however much better you get. This works differently. You are paired with an opponent from a pool whose rating is near yours, and the pairing widens its search until it finds somebody:

  1. It starts inside 110 rating points of you.
  2. If nobody is free, the band widens by 90 and tries again, up to 700 points.
  3. It avoids the last 40 opponents you played, so you are not handed the same one twice in an evening.
  4. If it still cannot find anybody it takes the nearest by rating, rather than refusing you a game.

Because the ladder is a rating rather than a menu, climbing changes who you meet. A 1250 and a 1400 are visibly different players, which a five-step difficulty menu cannot express.

How the opponent is actually made weaker

This is the part almost nobody publishes, and it is the part that decides whether playing a computer is worth your time. Search depth alone makes a bad weak player: a shallow engine plays consistently mediocre chess, and a human at 1100 plays a decent game and then hangs a rook. So depth is only the first of three dials.

  1. Depth — how many ply of full-width search happen before the capture-only search takes over.
  2. Slack — how many centipawns below its own best move the opponent will still happily play. This is what makes weaker opponents merely inaccurate.
  3. Blunder rate — the chance, per move, that it widens its shortlist to 360 centipawns and picks something it can see is worse. A hanging piece is 300-odd, so this is genuinely the occasional catastrophe rather than a slightly worse move. It is what makes an opponent read as a lapse rather than as weakness.
The full curve, read out of public/app/strength.js. Ratings between the rows are interpolated, so every opponent in the pool has its own settings rather than falling into one of nine buckets. Shown at the classical depth cap; faster pools cap the depth lower.
Opponent ratingDepthSlackBlunder chance
7001 ply225 cp35.7%
9001 ply180 cp29.9%
11002 ply139 cp23.2%
13002 ply95 cp15.0%
15003 ply81 cp12.7%
17003 ply58 cp8.6%
19004 ply40 cp5.0%
21004 ply20 cp2.0%
22004 ply14 cp1.5%

Read the two ends. A 700 plays one ply deep, will accept a move 225 centipawns worse than its best, and throws in something genuinely bad about 36% of moves. A 2200 looks 4 ply ahead, takes almost nothing worse than the best move it found, and blunders about 1.5% of the time. Neither of those is a full-strength engine dialled down; they are different players.

Do computer ratings mean anything?

This is the right question and the usual answer to it is marketing. The honest answer here has two halves.

The starting numbers are a guess. Mapping engine settings to true Elo takes thousands of games and we have not run them. The curve above is a considered guess and it is labelled as one in the source file.

The guess does not have to be right, because the ratings are not asserted — they float. Every opponent's rating moves on its own results exactly like yours does, through the same Glicko-2 code. An opponent set too high loses to people below it and comes down. That is the difference between a number somebody typed on a page and a number the ladder has been correcting since it started.

The caveat that applies to every site, including this one. An opponent that plays like a strong engine most of the time and then blunders does not make the mistakes a person of that rating makes; it makes different ones in the same quantity. The blunder dial above exists precisely to narrow that gap and it does not close it. If you want to learn what mistakes a 1200 makes, you eventually have to play people. What a computer opponent is genuinely good for is volume, availability at three in the morning, and a game that is never a mismatch.

It is a real rated game

The game is on a clock, in one of 11 pools from 1+0 to 30+20, and the result moves your Glicko-2 game rating and theirs. Abandoning past the opening is settled as a loss; before that the game is aborted and nothing moves. A rating you can walk away from is not a rating.

Who you play. When you use the queue — the “find me an opponent” button — you are matched with a computer opponent at your level. They carry a username, a country and a rating that moves on their results, and the rating is the honest part: it is not a label somebody typed, it is a number their wins and losses have pushed around. What the queue is not is a room of strangers waiting to play. If you want a game against a specific person, that is what a challenge link is for, and it is a real game between the two of you.

Play a rated gamePick a time control, get an opponent near your rating, and the result counts. Free, and the trainer that goes with it is 10,440 positions.Open Reflex Chess

Related

Can I play a rated chess game against the computer?

Yes. Games against the pool are rated: the result moves your Glicko-2 rating and the opponent's, on the same ladder as any other game here.

Is playing against a computer good practice?

It is good for volume, for availability, and for never being mismatched. It is weaker than playing people at teaching you what mistakes players at your level actually make, because a weakened engine makes different mistakes in a similar quantity. Both things are true at once.

Are computer opponent ratings accurate?

The starting numbers are an estimate; mapping engine settings to true Elo takes thousands of games. What makes them meaningful is that they are not fixed: every opponent's rating moves on its own results, so one set too high is corrected by losing.

How is the opponent made weaker?

Three dials: how deep it searches, how far below its best move it will still play, and how often it deliberately widens that to about 360 centipawns and picks something clearly worse. The third one is what makes weak play read as an occasional lapse rather than as constant mediocrity.

Do I need to download anything?

No. It runs in the browser, works offline once loaded, and there is nothing to install.