100 named opponents. Six tiers. One ladder from Pawn to King. Here's exactly how the system works and how to climb it fast.
Most chess apps give you a slider: how strong should the bot be? You pick a number, you play, you win or lose, you slide the number around. There's no progression, no characters, no story. ChessLvl was built specifically to fix this — to make beating opponents feel like progress instead of grinding the same anonymous bot at different difficulties.
Every player on ChessLvl starts at level 1, facing Yuki Tanaka — a 12-year-old beginner from Japan with a 600 ELO. Beating Yuki advances you to level 2, where you face Tomás Reyes (a 9-year-old London System specialist from Mexico). Each subsequent level has its own opponent — 100 in total, ending with The King at level 100, rated 2500 ELO.
You can only advance by beating your CURRENT level's opponent. Beating an opponent below your level (a rematch) doesn't push you higher — you've already cleared them. The ladder is a one-direction progression. Lose to your current opponent and your level doesn't drop, but your opponent stays the same until you beat them.
The 100 levels are grouped into six tiers, named after chess pieces:
Each tier has its own visual identity — color, badge, ceremonial promotion modal when you advance. Reaching Knight tier feels different from being a Pawn. Reaching Bishop tier feels different from being a Knight. The progression is designed to feel like an arc, not a number.
Here's what makes ChessLvl different: every rival isn't just an ELO number — they have a real playstyle backed by a real chess engine. Level 4 Diego plays the Smith-Morra Gambit and never stops attacking. Level 7 Aisha plays the King's Indian Defense and welcomes complicated middlegames. Level 8 Pyotr has memorized 20+ moves of Najdorf theory.
Behind the scenes, this is wired up via Stockfish (the strongest open-source chess engine) with three layers: a per-persona opening book that commits each rival to their advertised opening, UCI strength settings that match each rival's stated ELO, and a style-bias picker that nudges between candidate moves based on the persona's personality. Yuki really does play 'fast and attacking' — her moves favor captures and checks. Linda really does prefer endgames — her moves favor trades.
This means beating Pyotr at level 8 actually teaches you something about handling Najdorf theory. Beating Aisha at level 7 actually teaches you about simplifying complicated positions. The ladder isn't just a difficulty curve — it's a structured curriculum where each opponent teaches you a specific chess skill.
Beating your current rival advances you to the next level. That's the only way to advance. Game wins against your current rival give 75 XP; draws give 25; losses give 10. XP fills a small bar visible at the top of every page — but the level-up itself happens when you beat the rival, not when the bar fills. (Older versions of ChessLvl tied level-ups to XP alone; that's been fixed because beating an opponent is the only thing that should advance you on a ladder.)
Lessons (the piece tutorials at /learn) and other learning activities give knowledge points but don't advance the ladder. The ladder is purely combat-based. The knowledge tracking is purely study-based. They're separate tracks.
Every game on ChessLvl can be paused and resumed on any device. Sign in, start a game on your laptop, leave for lunch, finish the game on your phone — the position, move history, and clock all sync via Supabase in the background. The same is true for spectator pages: every active game has a public spectator URL (/games/<id>) that updates as the game progresses, so you can share games with friends or watch other people's games.
Anonymous players also get pause/resume on the same device (via browser localStorage), but cross-device sync requires sign-in. Signed-in players also get a public profile page (/<username>) showing their current level, win rate, and recent games.
Three habits that consistently produce the fastest climbs:
Players who do all three average roughly 1 level per day in the early tiers. Players who don't can spend weeks stuck on a single rival.
Anonymous bot grinding has no narrative. You play, you win or lose, you play again. Nothing changes. The brain treats this as repetitive activity and gets bored fast — which is why most chess apps see big drop-offs around game 20.
A ladder with named opponents has a narrative. Every game is a chapter. Beating Yuki feels different from beating Tomás because they're different people with different stories. Climbing from Pawn tier to Knight tier feels like reaching a new world. The brain treats this as goal-directed progress and stays engaged for months instead of days.
That's the whole product thesis. Chess is great. Chess training feels like a chore. We made chess training feel like climbing a mountain instead. The mountain happens to teach you chess.
"Every rival is a teacher in disguise."
— ChessLvl