AI Chess

Which Engine Should A Club Player Actually Run?

Here is the uncomfortable truth about engine shopping at club level: the difference between Stockfish 17 and Stockfish 11 is roughly 400 Elo, and you will never once notice it. Not in a game you played. Not in a game you analysed. The blunders you make at 1400 are the kind that a 2008-era engine on a phone finds in under a second.

So the question “which is the best free chess engine for club players” has a boring answer if you read it literally, and an interesting answer if you read it the way you probably meant it. Literally: any of them. Practically: you need two, and neither of them is the strongest binary you can find.

The 0.3 pawn problem

Run any recent Stockfish on your last ten rapid games. Watch what it flags. At 1000-1900 the evaluation graph looks like a seismograph, with swings of 3, 5, 9 pawns. Those are hung pieces, missed forks, a rook left on an open file for four moves. Every engine on earth finds these.

Now look at the positions where the engine says -0.34. This is where club players go to die. You sit there wondering what -0.34 means, you assume it means you played badly, and you go looking for a lesson that isn’t there. A third of a pawn at depth 30 is not feedback. It is noise dressed as precision.

Here is a real output from Stockfish 17 on a Caro-Kann Advance structure after 1.e4 c6 2.d4 d5 3.e5 Bf5 4.Nf3 e6 5.Be2 c5 6.Be3 cxd4:

info depth 28 seldepth 38 score cp -21 pv 7.Nxd4 Ne7 8.O-O Nbc6 9.c4
info depth 29 seldepth 41 score cp -14 pv 7.Nxd4 Ne7 8.c4 Nbc6 9.Nxf5
info depth 30 seldepth 44 score cp -29 pv 7.Nxd4 Ne7 8.O-O Nbc6 9.Na3

The number wobbled between -0.14 and -0.29 across three plies of depth and swapped its recommended move twice. If you built a repertoire decision on that, you built it on sand. The engine is not telling you 8.O-O is better than 8.c4. It is telling you it cannot tell, at a resolution far below what matters to your rating band.

The skill that transfers is knowing which numbers to ignore. Treat anything inside ±0.5 as “this position is fine, play chess.” Treat 0.5 to 1.5 as “something real happened, look for a plan or a weakness.” Treat anything above 2.0 as “you dropped material or missed a tactic, and there is a concrete reason you can name in a sentence.”

Two engines, two jobs

The setup I would give any 1200 tomorrow morning:

Engine one: Stockfish 17.1 with NNUE, running locally in your GUI. This is your arbiter of fact. It answers “did I hang something” and “was there a tactic” with total reliability. You can run it at depth 20 on a laptop and lose nothing; at depth 20 Stockfish is already several hundred points above the world champion. Cranking to depth 40 finds deeper engine-vs-engine subtleties and zero extra lessons for you.

Engine two: Maia, specifically maia-1500 or whichever weight sits nearest your rating. Maia is a Leela-derived network trained on human games at specific rating bands, and it does something Stockfish structurally cannot. It predicts the move a 1500 would actually play, matching human choices about 52% of the time in its band. Stockfish’s top move prediction rate against human club games is closer to 35%, and it drops further in quiet positions.

That gap is the whole argument. When Maia and Stockfish agree on a move, it is a move you can find and should find. When Maia picks one move and Stockfish picks another, you have located a genuine gap in your understanding, one that is worth an hour. When Maia plays your blunder back at you, you have just confirmed that the mistake is systematic rather than a one-off finger slip.

What this looks like in practice

Take a position from a real 1450 rapid game, a Sicilian where Black has just played …b5 and White is deciding between a5 and Nd5.

Stockfish 17 at depth 30 says: 1. Nd5 (+0.62), 2. a5 (+0.58). A four-hundredth of a pawn apart. Useless as guidance.

Maia-1500 says: a5 at 61% probability, Nd5 at 8%. Maia-1900 says: Nd5 at 34%, a5 at 29%.

Read those two together and you have an actual lesson. The move a 1500 reaches for is the pawn push, and it is objectively fine. The move a 1900 considers seriously is the knight jump, also fine. The improvement available to you is not “play the better move,” because neither move is better. It is “learn to see Nd5 as a candidate at all,” because right now your candidate generation stops before it gets there. That is a training goal you can act on for months. Stockfish alone would have handed you two nearly identical numbers and no instruction.

For the deeper comparison of how these engine families differ under the hood, and where Leela’s policy head fits against Stockfish’s NNUE evaluation, the engines compared breakdown goes into the architecture properly.

The tools that actually run these

You need somewhere to put them. Three options, all free:

ToolStockfishMaiaNotes
Lichess analysis boardBuilt in (cloud + local)NoFastest start, zero install
En CroissantBundled, one clickYes, via custom UCI engineBest all-round club option
NibblerAdd manuallyYes, designed for Leela-style netsBest policy visualisation

En Croissant is where I would start. It imports your Lichess and Chess.com games directly, runs Stockfish out of the box, and accepts Maia as an added UCI engine once you have the weights file and an lc0 binary. Nibbler is worth installing second, because it shows policy percentages per move as a visible number on the board, which is exactly the Maia output you want to read.

A note on the Lichess server analysis: it runs Stockfish at a fixed depth in the cloud and it is genuinely good, but it gives you a single line and a single number. The “learn from your mistakes” feature is better than its reputation. It is still one engine doing one job.

Reading an engine line without lying to yourself

Three habits, and they matter more than your engine choice:

Look at the principal variation, not the score. If Stockfish says +1.8 and the PV is 15 moves long involving a queen sacrifice on move 4, that evaluation is real but not yours. If the PV is three moves and ends with you winning a knight, that is a lesson. The length and weirdness of the line tells you whether it is human-reachable.

Set MultiPV to 3. Every GUI supports it, almost nobody turns it on. One line tells you what the engine likes; three lines tell you how wide the good zone is. A position where the top three moves span +0.4 to +0.5 is a position with no lesson in it. A position where they span +0.4 to -1.6 is a critical moment and you should stop and study it.

Guess before you look. Cover the eval, write your move down, then reveal. Sounds like homework because it is, and it is the only way engine analysis produces improvement rather than the comfortable feeling of having done analysis. Twenty positions done this way beats two hundred clicked through.

Where the strongest binary actually costs you

There is a failure mode specific to running maximum-strength Stockfish as your only tool, and I see it constantly in the 1300-1700 range. You analyse a game, the engine flags fourteen inaccuracies, you dutifully note all fourteen, and you learn nothing because eleven of them were 0.3-pawn wobbles in positions where nothing was at stake. Your brain files “I played badly” without ever identifying what to do differently.

Maia fixes this by filtering. Run the game past maia-1500 and look only at the moves where your play diverges from what a player at your level would do AND Stockfish shows a swing over 1.0. That intersection is usually two or three moves per game. Those are your moves. Study those.

Six months of that discipline is worth more than any Elo difference between engine versions, and it costs nothing but the download.