CS Anchor Team analytics

CS2 · demo-evidence analytics

Your league's matches, in 3D and in the numbers.

Connect your league. Demos arrive on their own, parsed to round level and playable in 3D. No sample, no number.

OpenID sign-in — CS Anchor never sees your password. Early access: live surfaces are free.

Illustrative — sign in to see your own

Retake win rate 58.3% 7 of 12 rounds · de_mirage
Time to trade 3.4s median · 41 traded deaths
1v2 clutches never attempted — a dash, not a fake 0%

The 3D replay

The round itself, not a row about it.

The real viewer, running a real match, in this page. Drag to orbit the round; click a player and the camera follows him.

de_mirage · 21 rounds A real league match. The player and club names are replaced, because this page is public. Open it on its own page Too narrow to run in the page. It opens full screen.

The house rules

Numbers you can argue from.

never a fake zero

A stat with no sample renders a dash. "0%" is a claim about evidence; absence of evidence is shown as absence.

Every rate names its denominator

58.3% means nothing alone; 7 of 12 rounds is a fact you can check. Sample sizes ride on every card, and thin samples are tagged.

Refusal over guesswork

When a stat can't be computed correctly from the demos, the page says why it's absent instead of shipping a plausible wrong number. Knife rounds never count as real rounds.

Connect the league. The rest arrives on its own.

One connection puts the organiser's fixtures, results and table into the product, and on the feeds that publish them, the match demos too. Nobody uploads anything.

GG Arena · 1. divisjon 10 teams · 45 fixtures played · 20 Apr to 25 May
# Team & last five W–L Pts
1 Infurity WWWWW 8–1 24
2 Crashed out LWWWW 7–2 21
3 Bitfix Gaming WLWWW 6–3 18
4 VanirQuick WWLLW 6–3 18
5 1ADL WWLWL 6–3 18
6 Nidaros E-sport WWWLL 5–4 15
7 Highscore LLLWW 3–6 9
8 Quadrivium LLLWL 2–7 6
9 SLG LLLLL 2–7 6
10 Center Gaming LLLLL 0–9 0
Computed from the organiser's finished results under their own stored scoring rules: 3 points a win, 1 a draw, 0 a loss. Ties break on points, head to head, map diff, name. Not a table we invented a ranking for, and not one scraped from a stat site.

Nobody uploads a demo.

A fixture finishing is the only trigger. Everything from there to a round you can orbit happens without a person in the loop.

  1. The organiser marks a fixture finished

    The connector reads the division's own fixture list on a fifteen-minute timer. Finished means the organiser stamped it finished, not that we guessed from a score.

  2. The demo downloads itself

    Straight from the league, a few hundred megabytes at a time. The size is checked before a byte moves, the file is verified to really be a demo, and an identical one already in the bank is recognised and not stored twice.

  3. It parses to round level

    Ten to twenty seconds per demo: rounds, kills, economy, positions at eight hertz. A parse that finishes but reads implausibly is quarantined rather than published.

  4. The replay is stored, then it appears

    The 3D payload is extracted as the last step of the parse, before the demo file can ever be cleaned up. The match turns up in the bank labelled as the feed's, and its page carries Watch in 3D.

Columns from the Demo bank: each row's map, an origin reading auto, GG Arena feed, the round count, and the size of the demo that was fetched, from 248 to 497 megabytes.
Every row in the bank records how it arrived. These ones say the feed brought them.
The League page's Demos delivered panel: one row per fixture, each showing the date, the opponent, whether its demos are in the bank, and the maps they became.
The receipt, on the League page: every fixture the connector found, which of its demos it sent to parse, and what they became.

The schedule, and what it says between seasons.

Nothing ahead is on file

Every fixture in 1. divisjon has been played: all 45 finished, none pending. The connector records the organiser's own fixture list as it polls, and nothing it has recorded here is still unplayed. When they publish the next season, those fixtures appear in this module on the next poll.

Last results

  • 25 May SLG v Highscore 1–2
  • 25 May 1ADL v Infurity 0–2
  • 25 May Bitfix Gaming v Quadrivium 2–0
  • 25 May VanirQuick v Center Gaming 2–0
  • 25 May Nidaros E-sport v Crashed out 0–2

This is what the product does with an empty schedule: it says so, and shows what it does have. An analytics page that filled the gap with a placeholder fixture would be inventing a match that nobody is playing.

One map, read three ways.

Three modules off a single league match, exactly as the product draws them for a signed-in team. Every figure on them carries the rounds it was computed from.

Bitfix Gaming 13–7 VanirQuick · de_overpass · from the GG Arena feed

  1. A man up in eleven rounds. Ten of them won.

    The Man-advantage matrix from a real match page: a five by five grid of alive-counts, Bitfix Gaming down the side and VanirQuick across the top, each cell showing a round win rate over the number of rounds it was computed from, washed green above the diagonal and red below it.
    Every alive-count a round passed through, both ways round, each cell over the rounds it was computed from. The note under the grid says why they do not add up to the map: a round that went 5v4 then 4v4 then 4v3 is counted in all three.
  2. The same 5v4, said as a finding.

    The Takeaways module from a real match page: four cards for Bitfix Gaming, each with a tag saying whether the finding helped or cost them, a headline, a figure, the sample it came from, and a sentence naming the threshold the rule had to clear.
    A card appears only when the map cleared the threshold printed on it, and the four are ordered by how many rounds each one covers. Nothing is ranked by importance, because importance is a judgement and these are counts.
  3. Three cards answer. One refuses.

    Four firepower cards from a real match page, each naming both clubs with its own sample: headshot share, damage per kill, rifle kills and AWP kills. The damage card shows a dash and a paragraph explaining that this demo's parse cannot support the figure.
    Four cards from the match page's Aim family, both clubs on every one of them with its own sample. That demo was parsed before the overkill cap, so damage per kill cannot be computed correctly from it. The card names the parse it needs and what would fix it, where a plausible wrong number would have fitted the layout better.

A match page carries ten of these families, and the Numbers page carries the season-scale version of the matrix: the same grid over every round a team has played rather than one map's.

Solo

Your own game, on the record.

My stats with form and progress, clutch records by situation, per-map breakdowns, your demos parsed and kept. No team setup required.

Team

A shared home for prep.

Match library, the Players split and the Man advantage page; scouting reports on upcoming opponents; a hub with roster, join flow and a prep checklist the whole team works from.

What it measures

From the demo file to the gameplan.

Match library & 2D replay

Series grouped into expandable rows, per-map detail, and canvas round replay drawn from real position traces.

Zones & map control

Presence by named zone 20s in, duel share by area, kill locations — versioned vocabulary, recomputable as it improves.

The Numbers page

Trades and time to trade, man-advantage conversion and its matrix, economy cross-tabs, the cost of a death.

Scouting reports

An opponent's season shape, save patterns backed by economic evidence, players to plan for, head-to-head ledger.

Leagues & odds

Standings computed from the league's own rules, fixtures as they finish, and bracket odds that publish their seed and assumptions.

Hub & sharing

Team hub with a shared prep checklist, and revocable share links for any page worth showing around.

Tiers

Three shapes, honest pricing.

Billing is not active yet. CS Anchor is in early access — everything live today is free to use, and caps and prices will be announced before anything is charged.

Free

Your demos, parsed honestly.

  • Demo upload and the full parse pipeline
  • Match library with per-map detail
  • Core team and player stats, every rate with its sample
  • 2D round replay from real position traces

Pricing at billing activation

Pro

Depth for the player who reviews.

  • My stats: form, clutch record, progress over time
  • Man advantage: trades, economy, cross-tabs, tempo
  • Zone presence and map-control breakdowns
  • Aim and skill trends as they prove out

Pricing at billing activation

Teams

The shared home for a roster that preps together.

  • Team hub: roster, join flow, shared prep checklist
  • Scouting reports on upcoming opponents
  • League standings, fixtures and bracket odds
  • Share links for pages worth showing around

Pricing at billing activation

FAQ

Asked and answered.

What does CS Anchor need from me?
CS2 demo files. Upload them directly, or connect a supported league and let the poller fetch match demos as fixtures finish. Every stat in the product is computed from demo evidence — there is no manual entry and nothing is scraped from third-party stat sites.
Which leagues does it support?
GG Arena and Power Ligaen connectors exist today; fixtures, results and standings flow in once a league is connected. An ESEA connection through the FACEIT API is planned.
What makes the stats different?
Every rate carries the sample it came from, a stat with no sample renders a dash instead of a fake zero, and a number that cannot be computed correctly from the demos is refused with a reason rather than approximated. Knife rounds are excluded from real-round stats everywhere.
Does it work for solo players?
Yes. A solo workspace gets My stats, form and progress tracking, clutch records, per-map breakdowns and personal demos — without any team setup. Team workspaces add the shared hub, scouting and league surfaces on top.
What does it cost?
Billing is not active yet — CS Anchor is in early access and everything currently live is free to use. The tier shapes are published on this page; caps and prices land when billing activates, and will be announced before anything is charged.