ChessNextMove.ai
CalculatorAI AnalyserPuzzlesLeaderboardPricing
Try Pro

Stockfish ELO Rating: What Every Skill Level Actually Plays At

By Chess Next Move Team|Published September 20, 2026

The level-to-rating table, derived from the engine's own source code rather than estimated.

Try It Free — No Download

Smart Tactics. Human Mode. Full 3650 power.

Train the patterns that win games, and get suggestions you can actually play — not engine lines you can't reproduce.

Fast EngineInstant moves, never waits
Smart Tactics9 pattern trainers
Human ModeReal chess, not engine lines
3650 ELOFree caps at 800
Position ReaderScreenshot → board
Unlimited AI InsightsNo daily limit
FEN & PGNYour own games
14-day money-back guarantee · Cancel anytime
Try Pro — $9.99/mo

Almost every confusing answer about Stockfish's rating comes from three different numbers being treated as one. They are not the same thing, and only one of them describes how strong the engine is.

1. Its real rating: about 3650

On the CCRL standard list, Stockfish 18 sits around 3650, and Stockfish 19 tests about 44 ELO above it. This is the engine playing properly, with nothing held back.

2. The UCI_Elo setting: 1320 to 3190

A knob for making the engine play worse on purpose. Its 3190 ceiling is lower than the engine's real rating, which is not a contradiction — it was never meant to describe full strength.

3. Skill Level: 0 to 20

A coarser version of the same idea. 20 means no limit at all. 0 to 18 map onto the rating range below.

Our Chess Tools

CalculatorSolverAI AnalyserAI CoachPuzzlesPlay AIELO Test2 PlayersLearn

Stockfish Skill Level to ELO

These are not estimates. Stockfish converts a rating into a skill level with a fixed cubic in src/search.h, so the table below is that function inverted. The depth column comes from the same struct: a given level stops and picks its move at depth level + 1.

Skill LevelApprox. ELOPicks at depth
013201
114442
215663
317294
419535
521976
623837
725188
826249
9271110
10278611
11285112
12291013
13296314
14301215
15305716
16309917
17313918
18317619
20~3650 (unlimited)full search

Notice how uneven it is. Levels 0 to 8 cover about 1300 rating points; levels 8 to 18 cover barely 550. Once the engine is searching nine plies deep it is already far beyond human strength, so every level after that is a fine adjustment between "unbeatable" and "unbeatable".

Where These Numbers Come From

This is the conversion, straight out of struct Skill:

LowestElo  = 1320
HighestElo = 3190

e     = (uci_elo - 1320) / (3190 - 1320)
level = clamp(((37.2473*e - 40.8525)*e + 22.2943)*e - 0.311438, 0, 19)

Two things fall straight out of it. First, the comment above it in the source says this range corresponds to CCRL Blitz 1320–3190, which is where the ratings in the table come from.

Second, something the documentation does not mention: feed it the maximum, 3190, and it returns 18.38, not 19. So Skill Levels 19 and 20 are unreachable through UCI_Elo. If you want level 20 — full strength — you have to switch UCI_LimitStrength off entirely. Setting UCI_Elo to its maximum is not the same as removing the limit.

Why Nothing Plays Below 1320

If you are a beginner looking for an 800-rated opponent, Stockfish cannot give you one. LowestElo is 1320 and every value beneath it clamps to the same place, so 600, 800, 1000 and 1200 all play exactly alike. Skill Level is no help either: it is ignored whenever UCI_LimitStrength is on.

There is a deeper problem than the floor, though. The engine weakens itself by searching well and then degrading its answer, so its mistakes are not beginner mistakes. A real 800-rated player misses a hanging queen because they did not look. A weakened engine plays twenty accurate moves and then gives away a piece for nothing. Both lose the game; only one feels like a person.

That is why our bots below 1320 do not use UCI_Elo at all. The engine runs at full strength and we model the choice instead: it returns its best candidate moves with scores, and a weaker rating picks a worse one more often, with errors drawn from the plausible end of that list rather than from nowhere.

"Level 5" Somewhere Else Is Not Skill Level 5

This trips people up constantly. When a site offers you "Stockfish level 1 to 8", those are that site's own presets — a chosen combination of skill level, search depth and thinking time. They are not the engine's Skill Level 0–20 scale, and the numbers do not line up.

So "what ELO is level 5" has no single answer until you say whose level 5. The table above is the engine's own scale, which is the one that applies when you set Skill Level directly in a UCI client. Our 11 bots publish a rating rather than a level number for exactly this reason, and you can check your own with the ELO test before picking one.

Stockfish vs Human Ratings

PlayerRatingvs Stockfish
Stockfish 19~3690—
Stockfish 18~3650−44
Magnus Carlsen (peak)2882−770
Grandmaster (typical)2500−1150
Club player1600−2050
Beginner800−2850

A 770-point gap is not a hard match, it is a different category. Carlsen at his peak would not expect to win a single game. This is also why an engine evaluation is worth trusting when you are reviewing your own play: whatever it says about your position, it is not the thing that is wrong.

Stockfish ELO FAQ

What is Stockfish's ELO rating?

Around 3650 on the CCRL standard rating list for Stockfish 18, with Stockfish 19 testing roughly 44 ELO above that. This is a different number from the UCI_Elo setting, which only goes up to 3190 — that option exists to make the engine play weaker, so its ceiling is not a measure of full strength.

What ELO is Stockfish level 1?

Skill Level 1 corresponds to roughly 1444 ELO, and it picks its move at search depth 2. Level 0 is about 1320, which is the floor.

What ELO is Stockfish level 4?

Skill Level 4 is roughly 1953 ELO and picks its move at search depth 5.

What ELO is Stockfish level 5?

Skill Level 5 is roughly 2197 ELO and picks its move at search depth 6.

What ELO is Stockfish level 8?

Skill Level 8 is roughly 2624 ELO and picks its move at search depth 9. The jumps get much smaller above this point — levels 8 through 18 span only about 550 ELO, while levels 0 through 8 span 1300.

Why can't Stockfish play below 1320 ELO?

1320 is a hard floor written into the engine (Skill::LowestElo in search.h). Any UCI_Elo value below it clamps to the same setting, so 600, 800, 1000 and 1200 all play identically. Skill Level cannot go lower either, because it is ignored whenever UCI_LimitStrength is enabled.

Are Stockfish skill levels the same as Lichess levels?

No. Lichess levels 1-8 are its own configuration built on top of Stockfish, not the engine's Skill Level 0-20 scale. A Lichess level number and a Stockfish Skill Level number are not interchangeable.

How does Stockfish actually play weaker?

It searches normally and then deliberately picks a worse move. Skill Level N stops and chooses at depth N+1, and picks from its multi-PV candidates with randomness weighted by the level. That is why weakened engines blunder in a distinctive way — twenty strong moves, then a piece dropped for nothing.

Does the UCI_Elo range change between Stockfish versions?

It has been 1320 to 3190 in both Stockfish 18 and 19, with an identical conversion formula, so settings carry over unchanged between those versions.

Can Magnus Carlsen beat Stockfish?

No. Carlsen's peak rating was 2882 and Stockfish is around 3650 — a gap of roughly 770 points, which in practical terms means he would not win a single game in a match. No human has beaten a top engine in serious conditions for well over a decade.

Is there a 4000 ELO chess engine?

Not on the standard CCRL rating list, where the top engines sit in the 3600s. Higher figures you see quoted usually come from faster time controls or from rating lists with different calibration, so a 4000-plus number is not directly comparable to a classical rating.

What is the highest UCI_Elo I can set?

3190. Worth knowing: the conversion is a cubic, and at 3190 it produces Skill Level 18.38 — so Skill Levels 19 and 20 cannot be reached through UCI_Elo at all. Level 20, full strength, means turning UCI_LimitStrength off entirely.

Play the Rating You Actually Want

Eleven bots from 400 to 3650, and a calculator running the full-strength engine when you want the truth instead of a fair fight.

Pick an Opponent
CalculatorAnalyserPlay vs AIOpeningsSolverPuzzles2 PlayersELO TestPricingBlogAboutContactFeedbackPrivacy PolicyTerms of ServiceRefund PolicyCookie PolicyDisclaimer

© 2025 - 2026 ChessNextMove.