Transparency

How CSDB.gg Data Works

Every number on this site traces back to a named source and a documented calculation. This page explains where the data comes from, how often it refreshes, and how derived stats are computed — so you can judge it, and correct us when we get something wrong.

See the data itself: CSDB Data Lab, pro player database, skins database and update tracker.

Where the Data Comes From

Skin, Sticker & Case Prices

Marketplace prices are aggregated by PriceEmpire, which tracks live listings across 14+ marketplaces including Buff163, Skinport, CSFloat, CS.MONEY, DMarket, BitSkins, Waxpeer, and the Steam Community Market. The “from” price you see on any item is the lowest listing across those sources at the last refresh, alongside per-marketplace quotes, liquidity scores, and 7/30/90-day trading volumes.

Pro Player Settings & Gear

Player settings — sensitivity, DPI, crosshair codes, viewmodel, video settings, and peripherals — are hand-curated from official sources: team announcements, verified player streams and config dumps, tournament broadcast overlays, and player interviews. Settings change often mid-season; each profile is re-checked when a roster move, gear sponsorship, or on-stream change surfaces.

Esports Matches & Tournaments

Live match data, schedules, results, and tournament brackets come from the PandaScore esports API. Team and player esports records are matched against our own settings database by name and roster history.

Game Data

Weapon stats, damage values, movement speeds, and economy numbers are taken from CS2 game files and verified in-game after each patch. Map callouts and lineups are maintained by hand against the current map pool.

Update Cadence

DataRefreshHow
Skin / sticker / case pricesHourlyPages regenerate via Incremental Static Regeneration (ISR) with a 1-hour revalidation window
Live matches & resultsNear real-timePandaScore feed polled on page load with short-lived caching
Pro settings & gearRollingHand-reviewed when roster moves, sponsorships, or on-stream changes surface
Weapon & game dataPer patchRe-verified against game files after each CS2 update

How Derived Stats Are Computed

eDPI
eDPI = DPI × in-game sensitivity. The standard way to compare true sensitivity across players regardless of mouse hardware. Used on player pages, the eDPI calculator, and pro averages.
Time to Kill (TTK)
Computed from each weapon's damage, armor penetration, fire rate, and the target's HP/armor: shots-to-kill at a given range multiplied by the weapon's cycle time. See the damage calculator for the interactive version.
StatTrak premium
Wear-matched percentage uplift: a StatTrak Field-Tested quote is only compared against the normal Field-Tested quote of the same skin, averaged across all wears where both exist. Full rankings on the StatTrak premium page.
Price tiers & “from” prices
An item's headline price is the lowest live listing across all tracked marketplaces and wears. Price-tier hubs (e.g. skins under $10) bucket by that lowest price and rank by 30-day trading volume, not list price.
Pro usage rankings
Gear rankings count how many players in the settings database use each product; brand share groups those counts by manufacturer. See most used mice and the other gear ranking pages.
Liquidity score (0–100)
Our own figure, not a provider's. Three weighted parts: sales velocity 55% (30-day sales, log-scaled — the gap between 5 and 50 sales matters enormously, the gap between 5,000 and 50,000 barely at all), listing depth 25% (active listings, log-scaled), and spread tightness 20% (cross-market spread inverted; 0% scores 1, 30%+ scores 0). Where the spread cannot be measured it counts as neutral rather than perfect. Items with no sales and no listings get no score at all — that is exactly the case where a confident number would mislead most. Every skin page shows the inputs beside the score.
Ask vs sold
(cheapest ask − median sale) ÷ median sale, wear-matched: a Factory New median is never compared against a Field-Tested ask, or the “premium” would just be the wear gap. Sold prices are completed Skinport transactions over 30 days; asks are the cheapest across tracked markets. Listings are what sellers want, sales are what buyers paid — the gap is the negotiating room.
Market estimate & confidence
A range, never a fake-precise single figure. Anchored on the median recent sale where one exists, otherwise the cheapest ask. The band widens as confidence falls and as the market disagrees with itself. Confidence is high with 30+ sales across 3+ markets, medium with 5+ sales or 3+ agreeing markets, and lowotherwise. An illiquid knife is honestly “$8,000–$10,500, low confidence”; quoting it at $9,247 would imply a precision the market does not have.
Volatility
Standard deviation of daily log returns, annualised. Log returns because price moves compound — a fall from 100 to 50 and a rise from 50 to 100 are the same size of move. Needs at least 10 observations; below that the figure is dominated by whichever day was noisy, which is how a stable item gets labelled “Very High” off one bad print. Bands: under 20% Low, under 45% Moderate, under 90% High, above that Very High.
True buy cost & sell proceeds
Buy cost adds the operator's published buyer fee to the listing. Sell proceeds subtract the sale fee, then the payout fee charged on top to withdraw — the one that quietly changes which marketplace is actually best. Fees come from each operator's own published schedule (dated in the fee tracker). Where an operator publishes no fee we mark the figure rather than assuming zero, since assuming zero would flatter exactly those who disclose least.
CSDB Team Rating (v1)
An Elo rating over every finished CS2 match in the trailing 120 days, processed in date order from a common 1000 baseline. The K-factor scales with tournament tier (S-tier moves a rating roughly seven times as much as a D-tier qualifier) and with series margin, so a 2–0 counts for more than a 2–1. Ratings are computed in three passes: the early passes establish how strong each opponent actually is, and only the final pass is published — without that, teams that play a high volume of matches against weak opposition drift to the top on activity alone. A team needs eight matches inside the window to be listed. See the table on the teams hub.
Map pool grades
Per-map win rates are windowed (last 90 days by default) rather than lifetime, because a team's map pool from two rosters ago says little about today. Grades come from a win rate shrunk toward 50% by a four-map prior, so a 1–0 record grades as average rather than perfect, and a map needs five plays in the window to be graded at all. Sample counts are shown next to every figure.
Match win probability (model v2)
One model powers every surface that prices a match. Pre-match it weights head-to-head record (15%), recent form (30%), map-pool strength (30%) and map-level head-to-head (25%). Form is genuinely recency-weighted — the last ten results decay at 0.85 per match back in time, blended 60/40 with the longer-run win rate. Head-to-head meetings decay at 0.8 per match. Live matches shift most of the weight onto the current series and map score. Probabilities are clamped to 5–95%, and confidence is reduced for thin samples, BO1s and low-tier events.

Spotted an Inaccuracy?

Data pipelines drift: a player switches mice off-stream, a marketplace delists an item, a patch changes a damage value. If a number looks wrong, tell us — corrections usually ship within a day or two.