Chess DNAChess DNA
28 users · ≥20 games each · dominant time class only

Do chess improvement apps actually work?

Every training app claims it works. We ran the numbers on our own users — 82% gained rating, median +50 — then spent a day trying to kill the result five different ways before publishing it. Here's what survived, and what we refuse to claim.

TL;DRWe pulled every Chess DNA user with 20+ games after signing up — 28 people — and measured their rating within their main time class. 82% gained rating, median +50, over a median 18 days. A matched group improved ≈1.7× faster per game than their own pace before joining. Then we attacked the stat like a skeptical reviewer: one attack made it stronger, one downgraded a flashier claim we then refused to publish, and one — selection bias — stands, so we're disclosing it instead of hiding it.
+50
Median rating gain, first → last game after joining
Within each user's dominant time class. The mean (+66) is inflated by one +349 outlier — so we lead with the median.
82%
Share of users who gained rating
23 of 28, over a median measurement window of 18 days.

Every user with ≥20 post-signup games · deltas computed within each user's dominant time class only · internal accounts excluded · n=28.

What 28 users' ratings actually did

Rating change from each user's first to last post-signup game, inside their dominant time class. Every user in the sample is on this chart — including all five who lost rating.

This is the whole sample, not a highlight reel. 23 of 28 users gained rating; the spread runs from +349 down to −90, and the middle of the distribution — the number a skeptic should care about — is +50. The biggest gainer (352 → 701 in 35 days) is a low-rated account climbing fast, which is exactly the profile you'd flag as a still-calibrating rating. We flag it too: it's one reason the headline here is a median with a sample size attached, not the mean it inflates.

For context on what those users are actually fixing while they climb, the companion reports cover what each Elo level struggles with and how chess games are actually lost — short version: games are decided by one collapse, and shrinking that collapse is where the rating points live.

Faster than their own past

Rating points gained per game played, before vs after joining — the same users, acting as their own baseline (n=26 with ≥20 games on both sides of signup).

The obvious objection to any before/after stat: maybe these players were improving anyway. So we compared them to themselves. For the 26 users who also had 20+ games before signing up, the pace was 0.45 rating points per game before joining and 0.77 after — about 1.7× their own prior pace. Same person, same time class, different slope.

And here's the claim we killed: measured per month, the same data says users improve 3.6× faster after joining. That number is real, spectacular — and dishonest. Users simply play more after joining an improvement app, so a per-month framing smuggles play frequency in as skill. Only the per-game number survives scrutiny, so it's the only one we publish. If you're comparing tools, track your progress in per-game terms too.

How that pace compares to the rest of chess

Per-game rating pace — our users versus what published data implies is typical at each level. The grey bars are estimates (caveats below); our two numbers are measured directly.

A 1.7× jump over your own past only means something if that past was normal to begin with. It was. Our users' pre-signup pace of 0.45 rating points per game lands right on what the wider data implies for their level. Published medians from Chess.com's SmarterChess analysis put a studying 800-rated player near +239 rating a year, and Lichess's public rating data (hundreds of millions of games) shows beginners around 800–1000 gaining their first ~100 points within a few months. Convert either into a per-game figure for an active player and you land in the 0.3–0.5 range — exactly where our users started before joining.

Two honest caveats, because this is a comparison. First, improvement gets harder as you climb: the same external data has a 1600-rated player gaining only about +35 a year, so the grey bars drop fast with level — and our sample skews toward beginners, whose ceiling for quick gains is naturally higher. Second, turning an annual figure into a per-game one means assuming a game volume — the exact move we refused to make with our own per-month stat. So treat the grey bars as a rough band, not a precise line. What is not an estimate: 0.45 before and 0.77 after are both counted per game, directly, on the same accounts. Against even the fastest-improving external band, the post-signup number sits above it.

Five ways we tried to kill the stat

Before publishing, we attacked the result the way a skeptical reviewer would. The attacks and verdicts, unedited.

Killed

“You mixed time classes.”

Blitz and rapid ratings live on different scales; compute a delta across them and you fabricate numbers. True — and our first run did exactly that, producing a median of +36. Re-run within each user's dominant time class only, the median rose to +50. The attack was correct, and fixing it made the stat stronger, not weaker.

Downgraded

“They just play more, and more games means more rating.”

Partially lands. Per month, post-signup improvement looks 3.6× faster — but decomposing it shows most of that is play frequency, not play quality. We demoted the claim to the per-game version, ≈1.7×, and retired the per-month framing permanently.

Downgraded

“Outliers prop up the average.”

True in both directions: a +349 climber stays in the sample, while a −661 collapse was excluded as implausible organic play (five days, bullet — the pattern of account sharing, not chess). Verdict: the mean (+66) is decorative. The median (+50) is the stat.

Stands

“You're only measuring the users who stuck around.”

Correct, and undismissable. Requiring 20+ post-signup games self-selects motivated players; users who churned never enter the sample. That's survivorship bias, and without a randomized control group — which we don't have — it can't be argued away. So it goes in the article, not in a footnote: this is a stat about engaged users, not about everyone who signs up.

Untested

“Provisional ratings regress — your gainers were just calibrating.”

We haven't separated this effect, and our biggest gainer (352 → 701) pattern-matches a new account still finding its level — see regression toward the mean. It's unlikely to explain the whole distribution, but it's one more reason the headline is a median with n attached, not a hero number.

What we will and won't claim

We will claim: 82% of active users gained rating within their first weeks (median +50, n=28), and active users improved ≈1.7× faster per game than their own pace before joining. Both are descriptive, both survived the grill, and both come with their sample size attached.

We won't claim: “Chess DNA adds X rating” — that's causal, and observational data can't support causality no matter how much a marketing page wants it to. And we won't claim “3.6× faster improvement,” because we know exactly which confound produces it. When any training tool shows you an improvement stat, ask which of these five attacks they ran against it — and what denominator the claim is hiding. If you'd rather test it on your own games, Chess DNA analyzes them free and shows you the same per-game curve we used here.

23 / 28

Users who gained rating — the full sample is charted above, including all five who lost.

18 days

Median measurement window. These are first-weeks gains, not a year of grinding.

0.73

Median rating points gained per game played after joining, across the 28 users.

n = 28

A small, honest sample — we'd rather publish a modest real number than a big soft one.

Questions people actually ask

Do chess improvement apps actually work?

For engaged users, measurably and modestly, yes: 82% of our users with 20+ post-signup games gained rating (median +50, n=28), at ≈1.7× their own prior per-game pace. What no app can honestly claim from observational data is causality — motivated players self-select into every such sample.

How much rating did Chess DNA users gain?

Median +50, first to last post-signup game, within each user's dominant time class. 23 of 28 gained; the spread ran +349 to −90 over a median 18-day window. The mean (+66) is inflated by one outlier, so we lead with the median.

Isn't this just selection bias?

Partly, and we say so in the article body: requiring 20+ games self-selects motivated users, and churned users never qualify. That's survivorship bias — undismissable without a control group. Everything we could test (class mixing, play frequency, outliers), we tested; this one we disclose.

Why per game instead of per month?

Per-month framing smuggles in play frequency: users play more after joining, so monthly gains jump even if each game teaches nothing. Our per-month number (3.6×) looked spectacular and we refused to publish it. Per game — 1.7× — is the honest denominator.

How was this measured?

Every user with ≥20 games after their first import (n=28), internal accounts excluded plus one implausible account (−661 in five days). Delta = last − first rating within the dominant time class; pace comparison uses the 26 users with ≥20 pre-signup games too.

Want the same measurement on your own chess? Chess DNA analyzes your games, finds the mistakes that actually cost you rating, and tracks your per-game pace — the number this article just argued is the only one worth watching.

Method. Sample: every Chess DNA user with ≥20 games played after signup (proxied by their first imported game), n=28. Internal accounts excluded, plus one account whose 661-point collapse in five days indicated account sharing rather than organic play. Ratings come from the user's own game records; deltas are last − first post-signup rating computed within each user's dominant time class only — mixing blitz and rapid ratings fabricates deltas (our mixed-class run gave +36; the class-clean run gives +50). The pace comparison uses the 26 users who also had ≥20 pre-signup games: 0.45 points per game before vs 0.77 after. No causal claim is made; see the grill section for the attacks we ran. Part of a series with How Chess Games Are Actually Lost and What Each Elo Level Struggles With.

About the author. Yuval I. is the founder of Chess DNA and a long-time competitive player. He builds the analysis pipeline behind this report — Stockfish-based game analysis that turns your own games into a personal weakness profile.
Chess DNA
Chess DNA — the improvement app that grills its own stats.
Get your Chess DNA →
Would your bar be teal or red? — Chess DNA tracks your per-game pace from your real games. Analyze my games