AI Chess

Lichess Analysis Board Versus A Desktop GUI: When The Browser Isn’t Enough

The Lichess analysis board is the best free chess tool ever built, and it will still quietly mislead you about four specific things. That is not a contradiction. It is what happens when you take Stockfish, compile it to WebAssembly, run it inside a tab that also has to render a page and stay responsive to your mouse, and then hand it to someone who has never touched a UCI option in their life.

Most of the advice you find on lichess analysis vs desktop engine setups is a feature comparison that ends in a shrug. This isn’t that. Below are the four jobs where the browser genuinely costs you accuracy or time, what the failure actually looks like, and which of them you can fix without installing a single thing. Only one of the four is worth a download, and it probably isn’t the one you’d guess.

What is actually running in your tab

When you hit the toggle on a Lichess analysis board, you get Stockfish compiled to WebAssembly with the NNUE evaluation, running on however many threads the browser will give it. It is the same search algorithm as the desktop binary. It is not the same speed.

A native Stockfish 17 build on a modern 8-core laptop will push 15 to 25 million nodes per second. The WASM build in your tab, on the same machine, lands somewhere between 1 and 4 million, depending on how many threads Lichess grants and whether your browser has cross-origin isolation enabled so SharedArrayBuffer works at all. Call it a 10x gap on a good day.

Ten times the nodes buys roughly three to four extra plies of search depth, because Stockfish’s effective branching factor after pruning sits near 2. So the honest framing is this: your browser engine is a desktop engine that stops thinking about four moves earlier. In 95% of positions that changes nothing. The other 5% are exactly the positions you opened the analysis board for.

Task one: positions where the evaluation is still moving

Here is the failure mode nobody warns club players about. You paste a position, the eval settles on +0.9, you write “I was better here, I just didn’t find the plan,” and you close the tab. What actually happened is that the engine was mid-flight and you read the altimeter on the way up.

Depth-unstable positions have a signature. The eval jumps by more than half a pawn between consecutive depths, or the principal variation’s first move keeps changing. Sacrifices do this. So do long positional squeezes where the compensation is 15 moves of nothing. If you watch the raw UCI output, which Lichess hides but a desktop GUI like Nibbler shows by default, it looks like this:

info depth 22 seldepth 30 multipv 1 score cp 94  nodes 9112044  nps 1480000 pv Rxe6 fxe6 Qxe6+
info depth 24 seldepth 33 multipv 1 score cp 61  nodes 21044810 nps 1510000 pv Rxe6 fxe6 Qxe6+
info depth 27 seldepth 38 multipv 1 score cp 12  nodes 68231190 nps 1495000 pv Nf5 Bxf5 exf5
info depth 31 seldepth 44 multipv 1 score cp -8  nodes 241887311 nps 1502000 pv Nf5 Bxf5 exf5

The exchange sac was never sound. It looked sound for nine seconds. On a browser engine at 1.5 Mn/s, depth 31 takes about 160 seconds of an undisturbed tab. On a native build at 20 Mn/s it takes twelve.

The fix costs you nothing. Before you trust any evaluation, watch the depth counter climb through three increments and confirm the number stops moving and the first move of the line stops changing. If it’s still swinging past depth 28, you have found a genuinely sharp position, which is more useful information than the evaluation was.

Task two: the single line that hides the actual decision

By default the Lichess analysis board shows you one line. One. For reviewing a blunder that is fine, because you only need to know that Qxb2 loses a piece. For building a repertoire it is close to useless, and this is where most improvers waste months.

Say you’re preparing the Caro-Kann Advance with 3…Bf5 and you want to know what to play on move five as Black. Single-line mode names a winner and stops. Turn “Multiple lines” up to 3 in the gear menu and the same position tells you something completely different:

RankMoveEvalDepth
1c5+0.1430
2Nd7+0.1830
3e6+0.2130

Those three moves are separated by seven hundredths of a pawn. At your rating, and at mine, that gap is noise. The engine has not told you which move is best; it has told you that all three are fine and the decision belongs to you, based on which structures you enjoy and which you have a plan in. That is a fundamentally different piece of advice than “play c5,” and the default setting withholds it.

There is a real cost. Each extra line roughly halves your effective depth on a throttled browser engine, so MultiPV 5 on a WASM build is genuinely slow. Use 3, not 5, and turn it back down to 1 when you’re hunting for a refutation rather than surveying options.

Task three: the analysis that evaporates

You spend twenty minutes on a rook endgame. You understand it. Three weeks later the same structure appears, you don’t remember which side of the rook the king belonged on, and none of your work exists anywhere. The browser engine keeps no hash between positions you navigate away from, no record of what you concluded, and no index you can search.

This is the browser’s worst structural weakness and also the one with the cleanest free fix: Lichess Studies. Make one chapter per theme rather than one per game. Paste the position, write the conclusion in the comment field in your own words, tag the move with a glyph. Studies are searchable, shareable, and export to PGN, which means your analysis survives even if you later migrate to something else.

What Studies won’t do is store the engine’s output. If you want evaluations baked into the file so you can grep through 200 games for “every position where I dropped more than 1.5 pawns before move 20,” you need PGN files with eval annotations on disk, and that is a database job. En Croissant and SCID vs PC both do it. This is the one place I’d actually consider a download, and only if you play enough volume to justify it.

Task four: the long unattended think

Try this: set up a critical position, start the engine, switch to another tab, and come back in ten minutes. Chrome will have throttled or frozen the background tab’s timers, and depending on your OS and power settings, your engine spent most of those ten minutes doing almost nothing. Safari on a MacBook running on battery is worse.

You cannot fix this from inside the browser. What you can do is stop needing it, because Lichess already runs two server-side engines for you:

Cloud evaluations are free, instant, and deep. Any position that has been analyzed before returns a stored evaluation, often at depth 36 to 45 with multiple lines, computed on hardware that isn’t your laptop. Every mainline opening position you care about is already in there. If the eval bar says “Cloud analysis,” you are looking at a better number than your tab could produce in an hour.

Request a computer analysis hands your whole game to the fishnet volunteer network, which runs a fixed node budget per move (a couple of million nodes, roughly) and returns ACPL, blunder classification, and the “Learn from your mistakes” drill. It is not deep enough to settle a sharp middlegame, but it is the correct tool for the first pass over a game, and it costs you nothing but 30 seconds of waiting.

The setting most people never touch is the memory slider. Lichess lets you raise the hash table, and on a long think that matters more than threads, because a starved transposition table makes the engine re-search lines it already solved. If you want the full picture on threads, hash sizing and how cloud depth is actually produced, the engine setup and hardware guide covers the configuration side properly.

Where the desktop GUI is genuinely overkill

Installing Arena, BanksiaGUI or ChessBase to look at a rook endgame is a category error, and one thing in particular should stop you: Lichess queries the 7-piece Syzygy tablebases directly from the analysis board. Not an evaluation, an answer. Mate in 43, or draw, with the exact move.

Replicating that locally means downloading the tablebase files. The 3-4-5 piece set is about 939 MB, which is fine. Six pieces is roughly 150 GB. Seven pieces is around 17 TB, and there is no version of your training plan where that is the bottleneck. Any endgame with seven or fewer men on the board is solved for free in your browser and unsolvable on your desktop.

Three of the four failures above are configuration problems wearing a costume. Multiple lines is a dropdown. Depth stability is a habit. Persistence is a Study. The genuine desktop case is narrow: you have hundreds of your own games, you want engine evaluations stored inside them, and you want to run queries across the whole set to find patterns you can’t see one game at a time. That is database work, and En Croissant is where I’d start because it does the import, the engine and the querying in one place without a licence key.

Open the gear icon on your next analysis board and set multiple lines to 3. Play through last night’s loss and write down every position where the top three moves were within 0.3 of each other. Those are the positions where the engine had nothing to teach you and you were making a chess decision all along.