Introduction
Our NFL Playoff Chances and matchup pages show numbers like "78% to make the playoffs" or "if the Seahawks win this game, their title chances rise to 19%." Those aren't guesses, and they aren't a single deterministic prediction of what will happen. They come from actually playing out the rest of the season, over and over, and counting how often each outcome occurs.
This article explains how that process works end to end, and why we made one particular design choice that shapes everything downstream of it: letting team strength change as the season plays out, rather than freezing it at its pre-season value.
The Basic Idea: Play the Season Out, Thousands of Times
Nobody can know in advance who will win a given NFL game. But if you have a reasonable estimate of each team's current strength, you can estimate how likely each team is to win any given matchup. The simulator takes that one game-level idea and scales it up to an entire season.
For every game still left to play, the model doesn't pick a single winner. Instead, it simulates the whole remaining schedule as one complete, self-consistent "possible future": every regular season game, the standings and tiebreakers that follow from it, and the entire playoff bracket through to a Super Bowl winner. Then it does that again. And again. Tens of thousands of times, each one a full, independent replay of the rest of the season with its own sequence of upsets, blowouts and lucky bounces.
"No single simulated season is a prediction. The prediction is what fraction of them agree."
If a team makes the playoffs in 78,000 of 100,000 simulated seasons, we report that as a 78% chance to make the playoffs. If they win the Super Bowl in 9,000 of them, that's a 9% title chance. Every probability on the site is produced this way: a count, divided by the number of simulated seasons.
How One Simulated Game Gets Decided
Each team carries a rating that reflects its current estimated strength, on the same kind of scale chess players have used for decades: two evenly matched teams have similar ratings; a 100-point gap represents a meaningfully stronger team. Given both teams' ratings for a specific matchup, there's a well-established formula that converts that rating gap into a win probability. The bigger the gap, the more lopsided the probability, but it never reaches certainty, because upsets really do happen in the NFL.
A simulated game is then decided by drawing a random outcome weighted by that probability. It isn't a 50/50 coin flip; it's a coin weighted exactly to the model's win probability for that matchup. A separate random draw then decides the margin of victory, conditioned on who actually won that draw, so a simulated upset produces a plausible upset-sized margin rather than an unrealistic blowout or a suspiciously narrow win every time.
Home Field Advantage, and When It Doesn't Apply
Home teams get a boost added to their rating before that win-probability calculation, matching the real, measurable home-field advantage seen across NFL history. But not every game with a designated "home" team is actually played at that team's stadium. International Series games and other neutral-site matchups have a nominal home team for scheduling purposes only. The model checks each game for exactly this before applying any home-field boost, specifically so a neutral-site game is modelled as the genuinely even contest it actually is, not skewed toward whichever team happens to be listed first.
The Central Design Choice: Should Ratings Change Mid-Season?
Here's the question that shapes everything else. When the model simulates game 14 of a team's season, which rating should it use: the team's rating from before the season started, or a rating that reflects everything that's "happened" to that team so far, including earlier games in that same simulated season?
There are two defensible answers. You could hold every team's rating fixed at its pre-season value for the entire simulated season. That's simple, and it treats every game as an independent draw from the team's known, stable strength. Or you could update each team's rating after every game it plays, real or simulated, the same way a chess player's rating moves after every result, so a team's rating at Week 14 reflects its own Weeks 1 through 13, not just what was projected back in August.
Why We Chose to Let Ratings Evolve
A team's true strength is not a fixed number that holds for four months. Rosters change through injury. Young players and new coaching schemes take a few games to click. Teams respond to what's working and what isn't. All of that is real information about how good a team actually is right now, and a model that ignores it is throwing away exactly the signal a good forecast should be picking up.
"If a team is simulated to start 5-0, the rest of that same simulated season should know it."
This matters most inside a single simulated trial, not just in real life. Suppose that in one simulated season, a team wins its first five games. That's evidence, within that hypothetical world, that the team is playing above its pre-season level. An evolving-rating model updates that team's strength accordingly, so its remaining games in that same simulated season are drawn from a rating that reflects its hot start. A model frozen at pre-season values would treat that same team's sixth game as if the first five had never happened. Across tens of thousands of simulated seasons, that difference produces a meaningfully more realistic spread of outcomes, with some teams plausibly separating from a tight division race after a strong start and others fading after an early slide, rather than every team's fortunes reverting toward its pre-season projection every single week.
The trade-off is complexity. An evolving model has to carry state (each team's current rating) through every game of every simulated season, rather than reading one fixed number off a table. We think that trade-off is worth it, because the alternative isn't simpler in any way that matters. It's simpler only by ignoring information a forecaster shouldn't ignore.
From Games to Standings to a Champion
Once every regular season game in a simulated trial has been decided, the model builds the final standings from those results using the NFL's real seeding and tiebreaker rules, including division winners, wild cards and strength-of-record tiebreakers, then seeds the playoff bracket exactly as the league would. The playoffs are then simulated the same way the regular season was: current ratings feed a win probability for each matchup, a weighted draw decides the winner, ratings update, and the bracket advances round by round to a single simulated Super Bowl champion.
Turning Thousands of Simulated Seasons Into a Single Percentage
Every one of those tens of thousands of simulated seasons ends with a complete outcome for every team: did they make the playoffs, win their division, reach the conference championship, win the Super Bowl. Tallying how often each of those events occurred for a given team, across every simulated season, and dividing by the number of simulations, is where every probability on the site comes from. Run more simulated seasons and the percentages settle down and stop moving much between runs. That's the model converging on a stable estimate rather than reporting noise.
Keeping Comparisons Fair When Testing "What If"
Our matchup pages show how a team's outlook shifts depending on who wins a specific upcoming game. To make that comparison trustworthy, the two scenarios ("if they win" and "if they lose") are simulated using the exact same underlying randomness for every other game on the schedule. That means any game whose outcome doesn't depend on the two teams involved in the game being tested comes out identically in both scenarios, and any difference you see in a team's chances is attributable specifically to that one game's ripple effect, not to unrelated random noise happening to land differently between the two runs.
Kept Up to Date, Every Day
Ratings and results refresh daily as real games are completed, so every simulated season starts from the current, actual state of the year rather than a stale pre-season snapshot. The Playoff Chances page and each week's matchup pages are recalculated from that fresh data every day, which is also why you'll sometimes see a team's chances move even on a day they didn't play. Another team's result can shift the whole playoff picture around them.
If you want to see this in action, the Playoff Chances page shows the full league output this process produces, and any upcoming matchup page shows exactly how one game's outcome ripples through a team's own season outlook. Or try the NFL Simulator yourself and pick winners for any game left this season to watch every team's chances update live, using this exact process running in your browser.