AI Chess

Running Stockfish On A Laptop, A Phone Or A Raspberry Pi

Here is the claim, and I’ll defend it for the rest of this post: for the questions a 1000-1900 player actually asks, the device running Stockfish barely matters. Your phone gets you the answer. A Raspberry Pi gets you the answer. A gaming laptop gets you the same answer slightly faster, and then sits there with its fans spinning.

I’m not saying hardware is irrelevant. I’m saying the curve flattens early, and most club players are standing on the flat part without knowing it.

The test

I used one setup for every device: Stockfish 17 (the NNUE build), a single position, and a hard 30-second search. Hash was set to a sensible fraction of free RAM, and the thread count was whatever the device had. Numbers are rounded, and they will wobble by 10-15% run to run, so treat them as orders of magnitude rather than gospel.

The position is a standard Italian-type middlegame, the sort of thing you reach in your own games every week. Nothing exotic, no tablebase endings.

DeviceThreadsSpeed (nodes/sec)Depth after 30s
Gaming laptop (8-core Ryzen, 2023)8~12,000,00040-44
Older work laptop (dual-core i5, 2017)4~1,400,00033-36
Recent flagship phone (Snapdragon 8-class)4~1,800,00034-37
Mid-range phone (2021)4~900,00031-34
Raspberry Pi 54~1,000,00032-34
Raspberry Pi 44~400,00028-30

Read that table twice. The gap in raw speed between the laptop and the Pi 4 is about 30x. The gap in depth is about 12-14 plies. Search depth grows roughly with the logarithm of speed, so a 30x hardware advantage buys you a modest gain in depth. And, more to the point, a very small gain in what you can use.

Where the move stops changing

Depth is a vanity number. What matters is when the engine’s choice of best move settles, and how much the evaluation moves after that. Here’s a log-style trace from a Pi 4 on a typical position (condensed from real UCI output):

depth 18  score cp +34   pv Nbd2 ...      time 2s
depth 22  score cp +41   pv Nbd2 ...      time 7s
depth 26  score cp +38   pv Nbd2 ...      time 18s
depth 29  score cp +39   pv Nbd2 ...      time 30s

And the same position on the 8-core laptop:

depth 24  score cp +40   pv Nbd2 ...      time 1s
depth 32  score cp +38   pv Nbd2 ...      time 5s
depth 38  score cp +39   pv Nbd2 ...      time 14s
depth 43  score cp +39   pv Nbd2 ...      time 30s

Same move. Same evaluation to within a hair, +0.39 against +0.39. The laptop got there in a second or two, the Pi took a few seconds longer, and the knowledge you carry away is identical: White is a bit better, and Nbd2 is the move.

This is the pattern in the large majority of positions that come out of club games. Once an engine is past depth 25 or so, its top choice and its evaluation band stop moving in most middlegames.

Why club questions saturate

Think about what you ask. “Was my move a blunder?” That’s a swing of 150+ centipawns, visible by depth 15. “Did I miss a tactic?” Most tactics in 1000-1900 games are three to five moves deep. Depth 20 sees them without breaking a sweat. “Which plan is better here?” A 0.3 versus 0.5 difference is within the engine’s own noise, and no extra hardware turns it into a lesson.

Compare that with the questions that do need serious compute: deep fortress positions, long endgame conversions, correspondence-level opening theory, tricky zugzwangs. If you play those at all, they’re a tiny fraction of your games.

Here’s a worked case. Say you play a Sicilian and reach a position where Lichess shows your move as an “inaccuracy” at depth 20 on its cloud engine. You drop it into Stockfish on your phone:

depth 16  +0.62  (played move: +0.20 after your 14...Qc7)
depth 20  +0.71
depth 24  +0.68

The loss is about 0.5 pawns and it’s stable across eight plies of extra depth. No further depth is going to flip that. What will help is working out why: the engine’s line starts with a pawn push you never considered. That’s your training item, and your phone found it in four seconds.

The genuine ceilings

I did say the ceilings exist. Here are the real ones, and notice none of them is “my CPU is too slow”.

Thermal throttling on phones. A phone will hit maybe 1.8M nodes/sec for the first minute, then drop by 30-40% as it heats up. For a 30-second burst it’s fine. For leaving it analysing overnight, it isn’t. Close the case, take it off the charger, and expect the throttle.

Battery. Four threads of Stockfish can eat a phone battery at roughly 15-25% an hour. Analyse a game, then stop. Do not leave infinite analysis running on the bus.

RAM and hash. A phone defaulting to 16 MB of hash fills up fast on a long search. Raising it to 128 MB is worth a few plies. Going from 1 GB to 8 GB adds almost nothing for our kind of positions.

Pi cooling. A bare Pi 5 throttles under load without a heatsink and fan. With the official active cooler it stays flat at its rated speed. Budget for it.

Multi-PV. This is the one that actually costs you. Running MultiPV 3 splits the search effort, so each line gets roughly a third of the nodes. On a Pi 4, that drops you from depth 29 to about depth 25 per line in the same time. Still plenty, but it’s the one setting where extra hardware visibly pays.

Genuinely deep positions. Some fortress and endgame positions really do need the laptop, or better, a tablebase. The Syzygy 6-piece set is about 150 GB, and the 7-piece is several terabytes, which is out of reach for most of us. Lichess’s online tablebase lookup covers that for free.

What to run where

My recommendation, committed rather than hedged:

  • Phone: Use the Stockfish engine inside your analysis app of choice (the Lichess mobile app runs it locally, as do apps like DroidFish on Android and Chess.com’s own analysis). Use it for post-game review and quick questions. Set threads to the number of performance cores, and not the total.
  • Laptop: Install Stockfish with Arena, Lucas Chess or En Croissant as the GUI. Enable MultiPV 3 and leave it at 20-30 seconds a position.
  • Raspberry Pi: Buy one only because you want a project. It’s a fun silent analysis box, and it is no better than a good phone. If you want the setup details for GUIs, hash and cloud depth, the pillar piece on engine setup, GUIs and cloud depth walks through it.

Turning the output into a plan

Since extra depth won’t improve your chess, spend that effort elsewhere. A routine that costs ten minutes per game:

  1. Run the game at about 20 plies. Note every move where the evaluation drops by more than 1.0 (100 centipawns).
  2. For each, ask the engine for its top three moves at 30 seconds. Write down the kind of error: missed tactic, positional drift, or time-pressure collapse.
  3. After ten games, count. If seven of your fifteen big drops are missed two-move tactics, you need puzzles, not a bigger engine.

That tally is worth more than the difference between depth 30 and depth 40, which you will, overwhelmingly, never notice.

So use the phone in your pocket. Raise MultiPV when you want alternatives, and raise your own questions when you want better answers. The silicon was never the bottleneck.