Skip to content
MBStats

Stat Card / Method

League baseline

The league-wide average for a metric in a given season, the honest zero point every comparison should start from.

What it measures

What "average" actually was, for a specific season and season type. A 0.05 EPA per play offense is above average in most seasons and unremarkable in a high-scoring one; 22 points per game meant different things in 2016 and 2025. The league_baselines view exists so no number on this site has to float free of context: every chart can draw the league line, and every claim of "good" can be checked against the year it happened in.

Baselines here are plays-weighted, not team-averaged: the league EPA per play is the mean over every offensive snap in the league, so high-volume teams count for exactly their share of plays. For most metrics the two approaches land close together, but the plays-weighted version is the one that makes "the average play" a true statement.

How it is computed here

One row per season per season type carries the full-season baseline (its week is null), and one row per week carries the weekly value, computed over every offensive snap league-wide: EPA per play, success rate, yards per play, pass rate, per-dropback and per-rush EPA, CPOE, and points per team game. Use the null-week rows for season reference lines and the weekly rows to plot the league as a curve. The builder's "league average line" annotation reads directly from this view, so the line on your chart is the same number in this table.

How fast it stabilizes

Season-level baselines are the most stable numbers in the product, built from roughly 30,000 plays each. Weekly baselines wobble with weather, byes, and schedule quirks, which is visible (and interesting) when you plot them: scoring drifts across a season, and December football is not September football.

How it gets misused

  • Comparing across seasons without re-baselining. "Best since 2016" claims need each season measured against its own average, not one fixed bar.
  • Mixing regular season and playoff baselines. Playoff fields are stronger and colder; REG and POST rows are kept separate here on purpose.
  • Treating average as replacement level. League average is the middle of the NFL, a high bar. An average starter is a valuable player, not a shrug.

Where it lives in the data

The dictionary columns behind this metric, straight from the shipped views. Explore any of them at /explore.

ViewColumnTypeDescription
league_baselinesepa_per_playDOUBLELeague-average EPA per offensive play.
league_baselinessuccess_rateDOUBLELeague-average success rate.
league_baselinespass_rateDOUBLELeague-wide share of offensive snaps that were dropbacks.
league_baselinescpoeDOUBLELeague-average completion percentage over expected. Close to zero by construction; useful as a sanity anchor.
league_baselinespoints_per_team_gameDOUBLEAverage points scored per team per game in the scope of this row.

Related metrics

Formulas reference the nflverse play-by-play columns our ingest actually uses; the reference table above is generated from the live data dictionary. Back to the full glossary.