FantasyTools.ai
League Tool

Fantasy Football Playoff Odds Calculator

"Are we still alive?" is a math question. Type in your league's standings and this tool simulates the rest of the season 10,000 times — playoff probability, seed odds, and the exact number of wins that clinches it.

Fantasy Playoff Odds Calculator

Enter every team's record and points-for. We simulate the rest of the season 10,000 times and count how often each team makes the cut.

Regular-season weeks
Playoff spots
Standings — one row per team
Paste your standings instead
Add weekly scores instead of a record — optional

Already ranked your league? The power rankings generator takes the same standings, and this tool can load the table you saved there.

Standings and settings ride in the link. Your league is also saved on this device.
Remaining schedule — optional

Enter who plays whom in future weeks and the sim honors it. Anything you leave blank is drawn as a random pairing each sim — with real matchups the odds get sharper.

Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Week 7
Week 8
Week 9
Week 10
Week 11
Week 12
Week 13
Week 14
Advanced — spread, regression & seed

Each team’s rating is its points per game pulled toward the league average by weight games ÷ (games + K), so a few games of scoring are not read as a team’s true strength. With K = 8 a team’s own scoring counts for 27% of its rating after 3 weeks, 50% after 8 and 64% after 14. K is roughly how many games of league-average scoring your own scoring has to outweigh; set it to 0 to rate teams on raw points per game. Your banked record is never changed. Own-scoring weight this run: —.

Without weekly scores, auto σ is the spread of your league's per-team scoring averages, used as a FLOOR on weekly volatility, never a ceiling (minimum 22; 25 until 3 weeks are in) — season averages are smoother than weekly scores, so the raw spread understates how much a week can swing. With weekly scores, σ is measured directly: how far each team's own scores sit from its average, pooled across the league and blended with 25 at ten weeks' weight, and each team with two or more scores plays with its own spread, pulled toward the league figure with the same K. Setting σ yourself overrides all of it. Raise σ if your league is streakier; a bigger σ makes every race closer. Same inputs + same seed always reproduce the exact same odds — share both and anyone can verify your number. σ used this run: —.

Model: each team’s rating is its points per game, pulled toward the league average early in the season (weight games ÷ (games + 8); set in Advanced); weekly scores draw from a normal distribution around it, so p(A beats B) = Φ((ratingA − ratingB) ÷ (σ√2)). Standings break ties on points-for. No matchups entered — every sim draws random pairings each week.

Playoff odds by team

  • #1 seed
  • #2 seed
  • #3 seed
  • #4 seed
  • #5 seed
  • #6 seed
Simulated playoff probability, average final wins, and seed distribution for each team
TeamRecordPFPlayoffsAvg winsSeed odds
Team 1(you)0-00——
Team 20-00——
Team 30-00——
Team 40-00——
Team 50-00——
Team 60-00——
Team 70-00——
Team 80-00——
Team 90-00——
Team 100-00——
Team 110-00——
Team 120-00——
Show the full seed table
Exact probability of every seed for every team, plus the chance of missing the playoffs
Team#1#2#3#4#5#6Miss
Team 1———————
Team 2———————
Team 3———————
Team 4———————
Team 5———————
Team 6———————
Team 7———————
Team 8———————
Team 9———————
Team 10———————
Team 11———————
Team 12———————

How it works

A Monte Carlo simulation is the honest way to answer a playoff-race question, because playoff races aren't one question — they're thousands of tangled ones. Whether you make it depends on your games, everyone else's games, and how the tiebreaks shake out. Nobody can compute that in closed form, so instead we play the rest of the season out 10,000 times and count. If you make the playoffs in 7,340 of those simulated seasons, your odds are 73.4%. That's the whole trick.

The model, in one formula

Each team's rating starts from its points per game — points-for divided by games played — and is pulled toward the league average early in the season, as explained below. In every simulated game, each team's weekly score is drawn from a normal distribution centered on that rating, with a spread σ. σ is estimated from how far apart your league's scoring averages sit, but that spread is a floor on volatility, not a measurement of it — averaging across weeks smooths out exactly the week-to-week noise σ is meant to capture, so the estimate is held at a minimum of 22 (and defaults to 25 until three weeks are in). With weekly scores pasted in, σ is measured from them instead, as described further down. If your league swings harder than that, raise σ yourself in Advanced settings; a bigger σ makes every race closer. The difference of two normals is itself normal, which gives a clean win probability:

p(A beats B) = Φ((ratingA − ratingB) ÷ (σ√2))

where Φ is the standard normal CDF and a team's rating is its points per game, regressed as described below. Two teams rated the same are a coin flip. A team rated 25 more points per game than its opponent, at σ = 25, wins about 76% of the time — favored, but nowhere near safe, which is exactly what one season of fantasy football feels like. After each simulated week the standings update, ties in wins break on total points-for (each simulated score also accrues to points-for, so the tiebreak stays live), and at season's end the top teams are in. Count it all up across 10,000 seasons and you have your odds.

Why points-for is the honest rating

Your record is part luck: it depends on who you happened to play each week. Points-for is the luck-stripped signal — it's what your roster actually produced, regardless of schedule. A 4–6 team that's third in scoring is better than its record, and the sim knows it: that team wins more of its simulated games than its record suggests. Rating teams by wins would just launder schedule luck back into the forecast.

Why early-season ratings are pulled toward the average

Three weeks of scoring is mostly noise. A team can average 135 over three games and be a 115-point team; if the model believed the 135 it would call a 3–0 start a lock and a 1–2 start dead, with eleven games still to play. So the rating is

rating = league PPG + w × (team PPG − league PPG), w = games ÷ (games + K)

with K = 8. After three weeks your own scoring counts for 27% of your rating (3 ÷ 11), after eight weeks 50%, after fourteen 64%; the rest is the league average. The 8 is the ratio of two variances: the week-to-week noise in one team's score (a spread of about 22 to 25 points) squared, over how far apart real team strengths sit in a typical league (about 8 points a game) squared, which works out to between 8 and 10. It is a judgment call, not a law, so it is disclosed here and adjustable: set K to 0 in Advanced and the tool rates teams on raw points per game, as it used to. The pull applies only to the forecast of what a team will score from here. The record you have already banked is never touched.

Saving, sharing and pasting

The tool keeps your league on your own device and writes it into the page address, so reloading does not wipe the standings and Copy link to this league sends the whole thing — standings, settings, seed — to the group chat. Anyone who opens the link sees exactly your odds. Nothing is uploaded. You can also paste a standings table copied from Sleeper, ESPN, Yahoo or NFL.com, or load the table you saved in the power rankings generator. Records are checked against the weeks completed: wins plus losses plus ties cannot be more than the weeks played (two a week in a median league), so an impossible record such as 7–1 after three weeks holds the odds back and points at the row instead of simulating a league that cannot exist.

Median leagues

Some leagues add a second game every week: each team also plays the league median, the middle score of the whole league that week. Above it is a win, below it is a loss, and with an even number of teams exactly half the league wins it. Tick +1 game vs the league median each week and the tool counts the way your platform does. A record holds both games, so a team has two results a week: type 6-2 after three weeks, not 3-0. Points per game and the rating weight then divide by the weeks played, not the results played. In the simulation every week left also scores each team against that week's median, so a team can win its matchup and lose the median game, or the reverse. The median setting rides in the shared link. "Win next week" and "win every remaining matchup" stay about the head-to-head game; the magic number counts wins from both games.

Weekly scores and each team's own spread

Standings say how many games a team won. The weekly scores say how it scores. Paste them into the optional weekly box, one team per line: the name, then that team's score for each week, oldest first. Two things change. Points-for is filled in from the scores if you left it blank, and each team plays the simulation with its own week-to-week spread instead of one league-wide number. A team that posts 95, 140 and 88 is a riskier bet than one that posts 112, 118 and 115 with the same average, and now the sim knows it. Early on one team's spread is mostly noise, so it is pulled toward the league's pooled spread with the same K as the rating, and the league spread itself is measured from the scores and blended with 25 at ten weeks' weight. Setting σ yourself in Advanced overrides all of it.

A grid of scores does not say who played whom, so it cannot give a head-to-head record on its own. Put a W, L or T after each score (Purple Reign 121.4 W 98.2 L) and a blank record is read from those letters, with the median game added in a median league. Otherwise the record comes from the standings you type or paste. The weekly box uses the same reader as the power rankings generator, and each tool can load the league the other saved, weekly scores and median setting included.

The magic number and paths to clinch

Because every simulated season is a full story — who won what, who got in — we can slice the 10,000 seasons after the fact. The magic number is the smallest number of additional wins W such that, among sims where you reached that total, you missed the playoffs less than 1% of the time: "win 3 of your last 5 and you're in." The win-next-week number works the same way — we partition the sims by next week's result and report your playoff rate in each half. No extra simulation, just honest conditioning on the runs we already have.

What the model doesn't know

  • Injuries and roster moves. The rating is season-long points per game — it can't see that your RB1 tore an ACL last week or that you just won a trade. If your team is meaningfully different from its season average, its true odds are too.
  • Schedule strength — unless you enter it. By default each future week draws random pairings, and the tool says so. Open the remaining-schedule panel and enter real matchups and the sim honors them; a soft closing schedule genuinely moves the number.
  • Your league's exact tiebreakers. The sim breaks ties on total points-for, the most common rule. If your league uses head-to-head or division records, edge cases can differ.

One more honesty note: 10,000 sims puts the sampling error on a mid-range probability at roughly ±1 point — the difference between 62% and 63% is noise, the difference between 62% and 85% is real. The advanced panel exposes the random seed, so the same inputs and seed reproduce the exact same odds — share both and anyone can check your number.

Reading the seed bars

Each team's bar splits its playoff probability across the seeds it lands, darkest green for the #1 seed down to the lightest for the last spot; the unfilled remainder is the chance of missing entirely. Hover any segment for the exact figure, or expand "Show the full seed table" below the chart for every number.

Next step

Getting in is half of it. Check the playoff schedule.

Sortable 32-team playoff SoS for weeks 15–17: opponent ranks by position, home and dome games, plus a roster playoff grade.

Open playoff schedule strength 

Chalk & Sharp, our AI start/sit assistant, is coming soon