Methodology

How the numbers on this site are actually made.

Every chart, story, and ranking on Steam Ranker comes from public APIs and a small set of derived metrics computed against them. This page documents the sources, the cadence, the trending score, and the rules that decide which stories surface. If you ever look at a number on the site and wonder where it came from, the answer is here.

Sources

Where the numbers come from

Four public APIs feed everything on the site. None of them are scraped: we hit documented endpoints with documented rate limits and store the responses in a Postgres database.

SteamLive concurrent players via ISteamUserStats / GetNumberOfCurrentPlayers. Game metadata (name, developer, genres, release date, content descriptors), screenshots, descriptions, and pricing come from the storefront API. Review counts and the user score come from appreviews.
TwitchLive viewer counts and 24-hour, 7-day, and 30-day viewership averages per game via the Helix API. The score blends current viewers into the trending ranking so a one-streamer carry on a flat-line game can still surface.
OpenCriticTop Critic Score where the game is listed. We pull it once on first ingest and refresh weekly.
IGDBAggregated critic scores as a fallback for games OpenCritic doesn't cover. Same refresh cadence.

Cadence

How often it updates

A sync job runs every 15 minutes. Each pass pulls current player counts for every tracked game, the live Twitch viewer count, and a fresh review-positivity reading. Historical peaks and daily highs are recomputed on the same cycle so the all-time peak you see is always within 15 minutes of the truth Steam itself shows.

Trends across longer windows (7-day, 30-day, 6-month, 1-year) roll up nightly. Critic scores refresh weekly. Game metadata (screenshots, store description, price) is checked daily but only rewritten when something actually changes.

Ranking

The trending score

Trending is not a popularity contest. A game with 200,000 players today that had 200,000 yesterday is not trending. A game with 5,000 players today that had 1,500 yesterday is. The score measures change against scale, with a recency multiplier for games near their release date.

For games with a measurable percent change against the prior window, the formula is:

score = sign(Δ) × min(|Δ%|, 200) × log10(|peak − baseline|)
        × recency_multiplier
        + log10(twitch_viewers) × 15

A few choices in there are worth explaining. The percent change is capped at 200%. Past tripling, additional growth stops making the story more interesting. A four-year-old niche game hitting +351% on a small base shouldn't out-rank a major launch with 55,000 concurrent players just because the percentage is bigger. Absolute scale takes over after the cap.

The log of the absolute movement is what gives scale its weight. Going from 5,000 to 10,000 players is a bigger event than going from 50 to 100, even though both are +100%. The log keeps that intuition honest without letting mega-launches crush everything else off the leaderboard.

The recency multiplier ramps from 2.0× at day zero down to 1.0× by day 30. Launch-week movement is more interesting than the same movement six months later, so the score reflects that. Past 30 days a game competes on its absolute movement alone.

For brand-new releases with no prior window to compare against, the score treats the entire launch crowd as the movement event, damped by the square root of the launch size so a 1,500-player launch and a 100,000-player launch don't both slam the cap. Calibration on day zero:

  1,500 CCU launch  →  score ≈   254
  5,000 CCU launch  →  score ≈   523
 10,000 CCU launch  →  score ≈   800
 40,000 CCU launch  →  score ≈ 1,840
 55,000 CCU launch  →  score ≈ 1,899  (cap)
100,000 CCU launch  →  score ≈ 2,000  (cap)

The Twitch boost is additive. A 200,000-viewer broadcast adds about 80 points. A quiet 100-viewer stream adds 30. Games below 1,000 concurrent players are dropped from the trending ranking entirely. Below that floor the noise floor is too high for any percent change to mean what it says.

Insights

The story engine

Above the leaderboard the site surfaces short stories: blowing up, climbing back, back from the dead, and so on. These are classifications, not editorial picks. A small set of detectors watches the data and fires a story when the numbers cross a threshold we've set ahead of time: a new all-time peak, an unusual launch shape, a sudden swing in review positivity, a Twitch spike that's doing more work than the CCU change explains. No human decides which game gets featured today.

Each story carries a virality score that determines its placement. The cards near the top of the page are the ones the math thinks are most worth telling someone about right now. When two stories fire on the same game we keep the one with the higher score and drop the other.

Honesty

What we measure vs. what we estimate

Live player counts, the all-time peak, the 24-hour peak, current Twitch viewers, current review counts, and review positivity are measured. They come straight from the source APIs and are stored as exact values. If Steam says a game has 29,503 players right now, the site says 29,503.

Trending rank, virality score, the story type assigned to a moment, and the prose headlines beneath each card are derived. The first two are deterministic functions of the measured inputs. The story type is a classifier output. The headline text is generated from a template by an LLM, gated by the classifier and the underlying numbers, then placed into the layout. The LLM never picks the game and never invents a metric. It writes the sentence around numbers the engine has already validated.

Caveats

What this site doesn’t claim to know

Twitch history doesn’t exist on this site. We only show live and rolling-window viewer counts. There is no backlog because the Helix API doesn’t expose one. Anyone who tells you they have year-over-year Twitch viewership for a specific game is reconstructing it from sampling, and we don’t.

Steam concurrent counts are a snapshot. Steam itself reports CCU on a roughly five-minute cadence, so any sub-five-minute precision in our trend lines is interpolation for chart smoothness, not new data.

Player counts are not sales.A game can sell millions and have a few hundred concurrent players if it’s single-player and the launch wave has passed. The opposite is also true: an Early Access game can have huge CCU on low total sales because the audience all plays at once. We surface what the player numbers actually say and try not to over-claim what they mean.

Adult-only and unreleased titles are excluded from sitemaps and the trending ranking. They’re still in the database for completeness but the page either 404s or renders without ads, depending on signals.

Mistakes happen

Corrections

If a number on the site looks wrong, it probably is. APIs go stale, sync jobs miss windows, and the story engine occasionally classifies a game in a way that doesn’t match what a human would say. The fastest way to get it fixed is to DM the page, card, or game that’s off: @SteamRanker on X. For anything longer, the contact page has the email address. Specifics help. “The Cyberpunk 2077 24h trend looks inverted” is actionable; “your site is broken” isn’t.

Built and maintained by Andrew Chaisson. Nova Scotia, Canada.

Last updated 2026-05-28