📊 GeoGuessr Profile Anomaly Score
GeoGuessr userscript · v6.5.0

A smurf score you're allowed to argue with.

Most rank-anomaly tools hand you a percentage and ask you to trust it. This one hands you the arithmetic instead — try the exact formula on the right with your own numbers.

0Network calls
5Languages
10Division tiers
3Formulas you can check
📊 Try the math
Ranked Duels signal
Rating1150
Ranked games played80
Log scale · up to 40,000 — the 1.9k+ cap is 34,743
Win rate68%
Applied ranked signal
● Low <20% ● Limited <45% ● High <70% ● Very High ≥70%
§00 — Why raw stats lie

A 70% win rate means nothing on its own.

Ten matches at 70% and a thousand matches at 70% are not the same claim. And a Champion-division badge reached in eighty games is a very different story from the same badge reached in eight thousand. The script's whole job is folding both facts — rate and volume — into one number, and then showing exactly how.

Small samples swing wildly. A new account can run hot for twenty matches by pure variance. The script stabilizes every win rate with fifty hypothetical 50%-win-rate matches before judging it — the same empirical-Bayes shrinkage trick used to rank doctors and baseball hitters with too few observations.

Division alone hides the pace. Reaching Champion is unremarkable at 8,000 games and extraordinary at 80. The script compares your match count against a measured median for your exact rating, not a flat assumption.

§01 — The three signals

Every percentage traces back to a formula you can re-run.

Ranked Duels alone decides 50% of the final score — the most controlled signal available. Classic carries 30%, Team Duels 20% at a discounted cap, since teammate performance dilutes what it can prove alone.

01 / STABILIZATION

Empirical-Bayes shrinkage

Adds 50 hypothetical matches at a 50% win rate before anything else runs, so a lucky streak on a five-game account can't move the needle.

(G × wr + 50 × 0.5) / (G + 50)
G=80, wr=68% → (80×0.68 + 25) / 130 = 66.5%
02 / RISK CURVE

Piecewise, not linear

Flat until 56%, climbs fastest between 62–70%, then flattens again. The steepest zone is exactly where "good" tips into "statistically weird."

stab=66.5% → 0.25 + (66.5−62)/8 × 0.35 = 44.7%
03 / SMURF BOOST

Deficit × win rate

Only for Gold and above. If a division's typical player needs 3,310 games and you're there in 80, the shortfall itself becomes a signal — win rate or not.

(cap − G) / cap × wr
cap=3310, G=80 → (3310−80)/3310 × 68% = 66.3%
§02 — Where the numbers come from

Every cap is a measured median, not a guess.

Earlier versions used a hand-tuned table — a reasonable prior, honestly labeled as one. v6.5.0 replaces it with the median ranked-duels games played per rating cohort, sampled from a live population of ranked accounts.

RatingDivisionExpected matchesTeam cap (×0.7)Cohort n
< 400Bronze28201,725
400–599Silver785520,379
600–849Gold28019614,573
850–1099Master1,3759632,538
1100–1199Champion 1.1k3,3102,317368
1200–1299Champion 1.2k4,8213,375206
1300–1499Champion 1.3–1.4k7,3425,139226
1500–1699Champion 1.5–1.6k12,6498,854104
1700–1899Champion 1.7–1.8k17,94212,55915
≥ 1900Champion 1.9k+34,74324,3201
Thin sample at the top. The last two rows rest on 15 and 1 profiled players. That single 1.9k+ data point is the cap until more players are measured — treat scores near that boundary as lower-confidence than the rest of the table.
magnusgeo.magnusmagi.com/median → full dataset & methodology
§03 — The rest of the panel

What else it shows, unprompted.

Top half of the real panel on a live Champion-division profile: rank context, a 74.8% statistical anomaly score, raw data summary, and the how-it's-calculated list.
Bottom half of the same panel: the expected match threshold table, the personal math breakdown with the exact stabilized win rate, risk curve and smurf multiplier formulas, and the final weighted score.

Live capture, not a mockup — a real Champion (1.5k–1.6k) profile, 591 ranked matches, 78.5% win rate. Scroll top to bottom.

Auto-fetch
Clicks GeoGuessr's own Show stats button for you if the comparison modal hasn't loaded yet, then closes it again.
Languages
English, Turkish, Estonian, French and German — the full math derivation is translated, not just the headline.
Input data
Every rating, game count, win rate and cap used is listed below the breakdown, so the score can be reproduced by hand.
Zero network
@grant none. No fetch, no XMLHttpRequest, no analytics. Nothing leaves the tab, ever.
Draggable panel
Dismissible, repositionable, and re-derives instantly from cached numbers when you switch languages.
No storage
No localStorage, no cookies. The stats cache and language choice live in memory only — both die with the tab.
Known limits
A correlation, not proof — returning veterans and coaching accounts can trip it. Deliberately blind below Gold, since a low-rated smurf who hasn't climbed yet leaves no signal to find.
§04 — Run it yourself

Three steps, one file, no build.

01

Install a manager

Tampermonkey or Violentmonkey, any browser.

02

Add the script

One click on Greasy Fork — or point your manager at geoguessr-profile-anomaly-score.js in the repository for the latest commit.

03

Open a profile

Visit any geoguessr.com/user/… page. The panel appears on its own.

// @name GeoGuessr Profile Anomaly Score
// @version 6.5.0
// @match https://www.geoguessr.com/*
// @grant none