Our Story

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.