How our team rankings work
This is our own on-field rating, built from actual results. It is a separate, clearly labeled layer from our recruiting talent ratings and any editorial judgment. If you came here because a rank moved and you want to know why, this page has the whole method.
The overall rating is an opponent-adjusted scoring margin, not a raw record and not a win probability. A higher number means we expect that team to outscore an average opponent by more points on a neutral field. It accounts for who a team played, not just whether it won. A team can move up after a loss to a strong opponent, and move down after a win over a weak one. Offense and defense are rated the same way and shown separately, so you can see whether a team is winning with points scored or points prevented.
We cap how much a single lopsided score can move a rating. A 60 to 0 win does not count for more than a 35 to 0 win. This keeps the model from rewarding teams for running up the score, and it keeps one blowout from distorting a whole season. We back-test the exact cap value against real outcomes before we trust it, and we publish the backtest result before anything here goes live, not after.
We estimate home field advantage from our own historical results rather than assuming a fixed number. Home and away are both recorded for every game and factored into the rating, so a road win is worth more than the identical score at home.
Strength of schedule is the average rating of the opponents a team has actually played, not their record. A team that beat three good teams has a higher schedule strength than a team that beat three weak ones, even with the same win total. We also publish a remaining-schedule figure where the rest of the schedule is known, so you can see what is left, not just what already happened. State rankings start from overall rating, and ties are broken first by schedule strength, then by games played. Two display rules then set the final order, and neither one changes any rating. Head to head: a team that beat another team this season and rates within 6 points below it is listed directly above it. Record: a team with two or more losses and a record at or below .500 is listed below a team rated within 4 points beneath it when that team has a winning record, at least three games, a schedule at or above the state middle and a win over a winning team. That is why the rating column is not always in order. National rankings work the same way across state lines. Early in the season, before teams have played many common or cross-state opponents, the preseason prior below is what makes those comparisons possible at all.
A team with one or two games played does not have enough current-season evidence to rate on its own. For those teams we blend in a prior: last season's rating, pulled back toward the state average, plus a talent signal from verified offers on the current roster. That prior carries real weight in the first few games and is phased out on a fixed schedule as actual results come in, reaching zero by around the sixth game. After that, the rating is entirely this season's results. Every team's row shows its prior weight and how many games have been rated, so you always know how much of a given number is this season and how much is still carryover.
Any team with fewer than three recorded games this season is marked provisional. Provisional ratings lean heavily on the preseason prior and can move a long way in a single week. We show the badge instead of hiding the uncertainty.
A game with no final score on file is not counted until a score is on file. It is not treated as a loss or dropped silently; it simply has not entered the rating yet. Forfeits and scrimmages are excluded from both the rating and the schedule-strength calculation, the same way an official result is required before a game counts at all. A canceled game is excluded outright. We do not use universal week numbers to describe where a team is in its season, because classifications and schedules do not line up the same way across states; we use games played and dated results instead.
Ratings run after every stats sweep: Saturday night, Sunday morning, and Wednesday morning. That is when the run picks up newly recorded finals and recomputes ranks, not once a week. A score corrected after a run has already published is not slipped into that already-published edition after the fact; it is picked up at the next sweep-triggered run, the same way a late score would be. Every page on this site shows the exact as-of date and time, with time zone, and how many games went into that run, so you can tell whether a correction has reached the page yet.
Win-loss records are the one exception: they are never stored on the ranking itself. Every record shown next to a team is computed live from the games table at the moment you load the page, so a record can never disagree with the schedule even if the rating run behind it is a few days old.
If a run is missed or falls behind, the affected page shows an updating notice, hides movement arrows, and labels ranks as of the stale run rather than presenting them as current. That happens automatically once a run is older than 7 days, or more than 48 hours behind the newest recorded final.
This is a fan product, not a prediction product. We are not telling you what will happen; we are telling you what our rating says right now and letting you check our work. As our correctness check, we look back at three completed seasons: when our higher-ranked team played our lower-ranked team, the higher-ranked team won 71 to 74 percent of the time across 2023 to 2025, versus 67 percent if you ranked by record alone. That is the receipt behind the number, not a pick, a projection, or anything about a future game.
This is not a recruiting-talent ranking and not an editorial top 25. Those are separate, clearly labeled products on this site. This page is specifically the on-field, results-based rating: what a team has actually done against the schedule it actually played.
Have a question about a specific rank? Start from that team's school page, where the current rank, rank history, full schedule, and roster all live together.