Retire the
spreadsheet.
Your league gets its own site — standings, points grids, race results — that updates itself within the hour of every race. Your points system, your drop weeks, your iRating tiers. Nobody pastes anything, ever again.
Sign in with your iRacing account · live in about a minute · founder pricing for early leagues
| 1 | Audrius | 994 | +44 |
| 2 | Jack | 950 | -44 |
| 3 | Zach | 940 | -54 |
| 4 | James | 882 | -112 |
| 5 | Ross | 781 | -213 |
Not a mockup — a real league scored by irstats, on its own subdomain, since its week 1. Surnames hidden here; full names live on the league site.
Racing here
Leagues on irstats
Live standings — surnames hidden on this page.
Lotus 79 Grand Prix Series · 96 drivers · 6 races scored
| 1 | Jack | 359 |
| 2 | James | 333 |
| 3 | Marko | 293 |
IMSA Vintage Series · 58 drivers · 3 races scored
| 1 | Mickey | 58 |
| 2 | Noel | 50 |
| 3 | Cal | 43 |
Your series · your points system · scored every week
Create your league — it fills this inResults appear on their own
Tell us your race slot — say, Sundays 16:30 UTC — and every split of every week is fetched, scored and published within the hour. If two sessions ever match, nothing is guessed: it lands in your review queue and you pick. A Discord bot that posts each week's results to your server is coming soon.
Your rules, exactly
Points tables, drop weeks that phase in mid-season, iRating-tiered championships, fastest-lap bonuses. Edit rules in a builder that shows the standings impact before you publish — and history keeps the rules it was scored under.
Every driver, no sign-ups
Race the slot and you're in the standings — drivers never register anywhere. Driver names link to full irstats profiles, and EU privacy handling is built in, not your problem.
Rules as config
If it's in your rules post, we can score it
Every championship runs on a rulebook like this — points tables per split, drop weeks that phase in, iRating tiers that lock at a driver's first race, bonuses, your own tiebreaker order. Edit it in a builder that shows the standings impact before you publish; every version is kept, so history stays scored under the rules of its day. These three are real — they're scoring live leagues right now.
{
"points": {
"mode": "single_table",
"tables": { "1": [124, 117, 111, 105, 100, …] }
},
"bonuses": { "fastest_lap": 2, "fastest_qualifier": 2 },
"drops": {
"mode": "by_season_length",
"by_season_length": [
{ "max_weeks": 5, "drops": 0 },
{ "max_weeks": 10, "drops": 1 },
{ "max_weeks": null, "drops": 4 }
]
},
"eligibility": {
"type": "irating_at_least",
"threshold": 3000,
"snapshot": "first_scoring_race"
}
}
"threshold": 3000— same races, two title fights: F1 scores 3K-and-over, F2 scores everyone under. Change one number and it's a Pro-Am split."snapshot"— a driver's tier locks at their first race of the season, even if their iRating climbs past the line later."by_season_length"— drop weeks phase in: none through week 5, one through 10, four at the finale."bonuses"— +2 pole and +2 fastest lap, judged across every split of the event.
{
"points": {
"mode": "per_split_table",
"tables": {
"1": [25, 22, 20, 18, 16, 15, …],
"2": [14, 12, 10, 9, 8, 7, …],
"3": [9, 6, 4, 3, 2, 1]
}
},
"eligibility": {
"type": "irating_below",
"threshold": 2800,
"rerank_within_eligible": true
},
"drops": { "mode": "by_season_length", "by_season_length": […] },
"tiebreakers": ["total_points", …]
}
"per_split_table"— the top split pays more than split 2, split 2 more than split 3. As many split scales as your grid needs."rerank_within_eligible"— a junior championship from the same results: drivers under the threshold re-ranked among themselves, no extra races."tiebreakers"— you choose the order dead heats are broken in.
{
"strategy_class":
"scoring.strategies.lotus79.L79CombinedStrategy",
"points": { "mode": "single_table", "tables": { "1": [124, …] } },
"bonuses": { "fastest_lap": 2, "fastest_qualifier": 2 },
"drops": { "mode": "by_season_length", "by_season_length": […] }
}
"strategy_class"— when a rule can't be a setting, it becomes a small plugin on the same engine. This league merges every split and re-ranks the entire field by average lap time — no settings menu on earth expresses that.- Config still does the rest — the plugin only supplies the ordering; points, drops and bonuses stay editable.
- We write the plugin and prove it against your existing spreadsheet before it goes live, row for row.
Drawn from live data
The title fight, week by week
VCR — IMSA Vintage Series — Overall Championship — Audi 90 GTO, IMSA Vintage Series - 2020 Season 3. Every league site charts its championship battle like this, automatically — and a Discord bot that posts standings and results straight into your server is on the way.
Live in three steps
From sign-in to your own site, in about a minute
Sign in with iRacing
No new account, no forms — your iRacing login is your irstats login.
Pick your series & race night
Choose from timeslots that actually run — we already know when your series races.
Your site is live
yourleague.irstats.com — standings appear on
their own within the hour of your next race.
Sunday's race can score itself.
Create your league siteEarly leagues create at founder pricing and keep it. Custom scoring rules beyond the builder? We port them by hand and prove them against your history — talk to us.