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.
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.
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.
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.
Flat until 56%, climbs fastest between 62–70%, then flattens again. The steepest zone is exactly where "good" tips into "statistically weird."
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.
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.
| Rating | Division | Expected matches | Team cap (×0.7) | Cohort n |
|---|---|---|---|---|
| < 400 | Bronze | 28 | 20 | 1,725 |
| 400–599 | Silver | 78 | 55 | 20,379 |
| 600–849 | Gold | 280 | 196 | 14,573 |
| 850–1099 | Master | 1,375 | 963 | 2,538 |
| 1100–1199 | Champion 1.1k | 3,310 | 2,317 | 368 |
| 1200–1299 | Champion 1.2k | 4,821 | 3,375 | 206 |
| 1300–1499 | Champion 1.3–1.4k | 7,342 | 5,139 | 226 |
| 1500–1699 | Champion 1.5–1.6k | 12,649 | 8,854 | 104 |
| 1700–1899 | Champion 1.7–1.8k | 17,942 | 12,559 | 15 |
| ≥ 1900 | Champion 1.9k+ | 34,743 | 24,320 | 1 |
Live capture, not a mockup — a real Champion (1.5k–1.6k) profile, 591 ranked matches, 78.5% win rate. Scroll top to bottom.
@grant none. No fetch, no XMLHttpRequest, no analytics. Nothing leaves the tab, ever.localStorage, no cookies. The stats cache and language choice live in memory only — both die with the tab.Tampermonkey or Violentmonkey, any browser.
One click on Greasy Fork — or point your manager at geoguessr-profile-anomaly-score.js in the repository for the latest commit.
Visit any geoguessr.com/user/… page. The panel appears on its own.