Playing strength
How strong is a chess engine on a microcontroller? We measured it the way engine developers do: thousands of games against a reference engine with a known rating.
Results
| Board | Elo (95 % interval) | Games | Typical depth |
|---|---|---|---|
| ESP32-S3 with PSRAM | 2741 ± 50 | 200 | – |
| ESP32-S3 without PSRAM | 2650 ± 34 | 601 | 9 plies |
| ESP32-C6 | 2588 ± 33 | 632 | 8 plies |
| ESP32-C3 | 2459 ± 33 | 634 | 7 plies |
The web app shows these rounded down – 2700+ (S3 with PSRAM), 2600+ (S3 without), 2550+ and 2400+ – because in normal use the board also serves the web app and, on the C6, the display.
The ESP32-S3 with PSRAM keeps a 1.75 MB hash table there instead of 16 kB in internal RAM. Searching is about 5 % slower, but the engine remembers far more positions: 200 games against Stockfish at 2650 (+111 =29 −60) put it about 107 Elo above the same board with the small table.
Method
- Opponent: Stockfish 19 limited with
UCI_LimitStrengthandUCI_Elofrom 1800 to 2700. Stockfish’s limited levels are calibrated against the CCRL rating list, so the numbers are Elo relative to that anchor, not an official rating. - Time control: 1 minute + 0.6 seconds per move for each side (about 1.2–1.5 s per move).
- Setup: each board played over USB as a UCI engine (firmware without Wi-Fi), all three in parallel, driven by fastchess with an opening book and colour-reversed game pairs.
- Games: ~430 games per board against Stockfish at 4–5 levels (100 of them at the level of the board’s own rating, where a game says the most) plus a round robin between the boards with 100 games per pair – 1,567 games in total.
- Rating: a single maximum-likelihood fit over all games (like Ordo / BayesElo), with the Stockfish levels as fixed anchors.
Board against board
| Pairing | Result | Score |
|---|---|---|
| S3 – C6 | +39 =45 −16 | 61.5 % |
| S3 – C3 | +66 =25 −9 | 78.5 % |
| C6 – C3 | +45 =41 −14 | 65.5 % |
Differences: S3 − C6 = +62 ± 41, S3 − C3 = +191 ± 42, C6 − C3 = +129 ± 41. Games between copies of the same engine usually exaggerate differences a little; the matches against Stockfish give the same order.
What makes the difference
Twice the speed of the S3 over the C6 brings only about 60 Elo, while the C6 is about 130 Elo stronger than the only 1.3× slower C3. The C6 has a five times larger hash table (40 kB vs 8 kB), which very likely accounts for much of that gap.
