A rating tracker built
the way it should be
Chess Rating Tracker started with a simple annoyance: following a handful of players across Lichess and Chess.com meant opening a dozen profile pages and trying to remember last week's numbers. So we built something that remembers for you — it polls every tracked account on a fixed four-hour rhythm, stores every metric the public APIs expose, and charts all of it over time.
Our Mission
Record every number the chess platforms make public, keep it indefinitely, and present it in a form that answers a real question — is this player improving, stalling, or just having a bad fortnight? A single current rating cannot tell you that.
Our Commitment
Be a good citizen of the platforms we depend on. One request per account per cycle no matter how many people are watching, a descriptive User-Agent on every call, conditional requests wherever they are supported, and an immediate stop the moment a rate limit says stop.
What We Do
Four things, done carefully, are what separate a useful rating history from a screen-scrape.
Scheduled Polling
Every tracked account is refreshed on a four-hour cycle, with its slot in the window fixed by a hash of the username so upstream load stays perfectly flat.
Full Snapshot Capture
We keep the raw API response alongside the parsed fields, so a metric we do not chart yet is still recorded and can be surfaced later without losing history.
Time-Series Charting
Ratings, puzzle scores, game counts and play time are all stored as points in time, which is what makes 7-day, 30-day, 90-day and all-time views possible.
Rate-Limit Discipline
Persistent per-platform token buckets, exponential backoff with jitter, and a circuit breaker on repeated failures — so one bad hour never turns into a ban.
Why Chess Rating Tracker
The numbers behind the product, not marketing round-ups.
100 + 100
Players Per User
A hundred Lichess accounts and a hundred Chess.com accounts each, tracked independently with their own counters and their own tab.
4 hours
Refresh Cycle
Six snapshots a day per account, staggered by a hash of the username so the load never spikes on the hour.
1 request
Per Account Per Cycle
Global deduplication means the cost of a popular player is fixed, however many people are following them.
5 modes
Puzzle Metrics
Puzzle Storm, Racer, Streak and standard puzzles on Lichess; Puzzle Rush and Tactics on Chess.com — runs and bests, both charted.
Our Principles
Four rules that decide every engineering trade-off we make.
Completeness
If a public endpoint returns it, we store it — including the fields we do not chart yet, because you cannot backfill history you never kept.
Honesty in the Data
Provisional ratings are drawn differently, gaps are shown as gaps, and we never interpolate a point that was not actually observed.
Restraint Upstream
Global deduplication, fixed polling slots and hard rate limits. Growth in users must not mean growth in requests to Lichess or Chess.com.
Transparency
The admin dashboard shows every poll run, every failure, every status code and the exact quota headroom left on each platform.
