Financial Data Analytics · Data Website Project

NFL player stats, 2009 to 2025: passing peaked, defenses changed

By Rykar Acebo

This report covers 291,750 regular-season player-games (one player in one game) from the 2009 through 2025 NFL seasons, taken from the nflverse weekly player stats. It looks at seasons and games rather than careers, so the start of the data never cuts a player off. Passing yards per team-game (one team in one game) peaked in 2015 at 259.2 and fell to 225.0 by 2025, while rushing stayed within 109 to 122. Over the same 17 seasons, interceptions per team-game fell 32% and sacks per pass attempt rose from 6.4% to 7.3%. The data show what changed, not why. A last pair of findings compares quarterbacks with a replacement-level passer, a stand-in built for this site. The dashboard lets you filter the same data, switch between player and team views, and try more advanced stats.

Open the dashboard →
291,750
Regular-season player-games analyzed
8,081
Different players (regular season)
259.2
Peak passing yards per team-game (2015)
225.0
Passing yards per team-game in 2025
7 to 17
Range of 1,000-yard rushers per season
-32%
Interceptions per team-game, 2009 to 2025
Finding 01 · Passing peaked, then slid

Passing yards per team-game peaked at 259.2 in 2015 and fell to 225.0 in 2025, while rushing stayed between 109 and 122

Adding up every player's passing yards and dividing by team-games, offenses averaged 232.3 passing yards in 2009, climbed to 259.2 in 2015, and fell to 225.0 in 2025, the lowest of the 17 seasons. That is 13.2% below the peak. Passing topped 250 in 7 of the 8 seasons from 2013 to 2020, all but 2017, when it dipped to 239.6, and every season from 2021 on was below 250.

Rushing barely moved. Rushing yards per team-game stayed between 108.8 and 121.6 every season, and finished 2025 at 116.9. In these numbers the drop is in passing; rushing did not move with it.

Chart for finding 1: Yards per team-game. The numbers behind it are in the table under the chart.
View the numbers
Passing yards per team-game peaked at 259.2 in 2015 and fell to 225.0 in 2025, while rushing stayed between 109 and 122
SeasonTeam-gamesPassing yards per team-gameRushing yards per team-game
2009512232.3116.7
2010512236.2114.5
2011512245.0117.2
2012512246.0115.9
2013512252.3112.9
2014512251.8111.3
2015512259.2108.8
2016512255.6108.9
2017512239.6109.7
2018512254.4114.4
2019512251.8112.9
2020512254.9118.9
2021544244.1115.2
2022542234.4121.6
2023544236.3112.7
2024544233.5119.8
2025544225.0116.9
Finding 02 · Passing peaked, then slid

Fewer quarterbacks reach 4,000 yards: 13 did in 2016, only 6 in 2025

A 4,000-yard passing season used to be common. In 2016, 13 quarterbacks got there, the most of any season. It was 6 in both 2024 and 2025.

This counts each player's regular-season total for one season. Seasons were 16 games through 2020 and 17 from 2021, so counts from 2021 on have a little extra room to reach the threshold. Each block in the chart is one player, colored by his team; hover a block to see who.

Chart for finding 2: Players with 4,000+ passing yards. The numbers behind it are in the table under the chart.
View the numbers
Fewer quarterbacks reach 4,000 yards: 13 did in 2016, only 6 in 2025
SeasonPlayers with 4,000+ passing yardsLeague leader (team) and total
200910Matt Schaub (HOU) 4,770
20105 (lowest value in this table)Philip Rivers (LAC) 4,710
201110Drew Brees (NO) 5,535 (highest value in this table)
201211Drew Brees (NO) 5,177
20139Peyton Manning (DEN) 5,477
201411Ben Roethlisberger (PIT) 4,952
201512Drew Brees (NO) 4,870
201613 (highest value in this table)Drew Brees (NO) 5,208
20178Tom Brady (NE) 4,577 (lowest value in this table)
201812Ben Roethlisberger (PIT) 5,129
201911Jameis Winston (TB) 5,109
202012Deshaun Watson (HOU) 4,823
202110Tom Brady (TB) 5,316
20229Patrick Mahomes (KC) 5,250
202310Tua Tagovailoa (MIA) 4,624
20246Joe Burrow (CIN) 4,918
20256Matthew Stafford (LA) 4,707

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Everyone who reached it, by season
Fewer quarterbacks reach 4,000 yards: 13 did in 2016, only 6 in 2025
SeasonPlayers with 4,000+ passing yardsWho (team) and total, top block first
200910Matt Schaub (HOU) 4,770; Peyton Manning (IND) 4,500; Tony Romo (DAL) 4,483; Aaron Rodgers (GB) 4,434; Tom Brady (NE) 4,398; Drew Brees (NO) 4,388; Ben Roethlisberger (PIT) 4,328; Philip Rivers (LAC) 4,254; Brett Favre (MIN) 4,202; Eli Manning (NYG) 4,021
20105Philip Rivers (LAC) 4,710; Peyton Manning (IND) 4,700; Drew Brees (NO) 4,620; Matt Schaub (HOU) 4,370; Eli Manning (NYG) 4,002
201110Drew Brees (NO) 5,535; Tom Brady (NE) 5,235; Matthew Stafford (DET) 5,100; Eli Manning (NYG) 4,933; Aaron Rodgers (GB) 4,636; Philip Rivers (LAC) 4,624; Tony Romo (DAL) 4,184; Matt Ryan (ATL) 4,177; Ben Roethlisberger (PIT) 4,077; Cam Newton (CAR) 4,051
201211Drew Brees (NO) 5,177; Matthew Stafford (DET) 4,967; Tony Romo (DAL) 4,903; Tom Brady (NE) 4,827; Matt Ryan (ATL) 4,719; Peyton Manning (DEN) 4,659; Andrew Luck (IND) 4,374; Aaron Rodgers (GB) 4,295; Josh Freeman (TB) 4,065; Carson Palmer (LV) 4,018; Matt Schaub (HOU) 4,008
20139Peyton Manning (DEN) 5,477; Drew Brees (NO) 5,162; Matthew Stafford (DET) 4,650; Matt Ryan (ATL) 4,515; Philip Rivers (LAC) 4,478; Tom Brady (NE) 4,343; Andy Dalton (CIN) 4,293; Carson Palmer (ARI) 4,274; Ben Roethlisberger (PIT) 4,261
201411Ben Roethlisberger (PIT) 4,952; Drew Brees (NO) 4,952; Andrew Luck (IND) 4,761; Peyton Manning (DEN) 4,727; Matt Ryan (ATL) 4,694; Eli Manning (NYG) 4,410; Aaron Rodgers (GB) 4,381; Philip Rivers (LAC) 4,286; Matthew Stafford (DET) 4,257; Tom Brady (NE) 4,109; Ryan Tannehill (MIA) 4,045
201512Drew Brees (NO) 4,870; Philip Rivers (LAC) 4,792; Tom Brady (NE) 4,770; Carson Palmer (ARI) 4,671; Matt Ryan (ATL) 4,591; Eli Manning (NYG) 4,432; Blake Bortles (JAX) 4,428; Matthew Stafford (DET) 4,262; Ryan Tannehill (MIA) 4,208; Kirk Cousins (WAS) 4,166; Jameis Winston (TB) 4,042; Russell Wilson (SEA) 4,024
201613Drew Brees (NO) 5,208; Matt Ryan (ATL) 4,944; Kirk Cousins (WAS) 4,917; Aaron Rodgers (GB) 4,428; Philip Rivers (LAC) 4,386; Matthew Stafford (DET) 4,327; Joe Flacco (BAL) 4,317; Andrew Luck (IND) 4,240; Carson Palmer (ARI) 4,233; Russell Wilson (SEA) 4,219; Andy Dalton (CIN) 4,206; Jameis Winston (TB) 4,090; Eli Manning (NYG) 4,027
20178Tom Brady (NE) 4,577; Philip Rivers (LAC) 4,515; Matthew Stafford (DET) 4,446; Drew Brees (NO) 4,334; Ben Roethlisberger (PIT) 4,259; Matt Ryan (ATL) 4,095; Kirk Cousins (WAS) 4,093; Alex Smith (KC) 4,042
201812Ben Roethlisberger (PIT) 5,129; Patrick Mahomes (KC) 5,097; Matt Ryan (ATL) 4,924; Jared Goff (LA) 4,688; Andrew Luck (IND) 4,593; Aaron Rodgers (GB) 4,442; Tom Brady (NE) 4,355; Philip Rivers (LAC) 4,308; Eli Manning (NYG) 4,299; Kirk Cousins (MIN) 4,298; Deshaun Watson (HOU) 4,165; Derek Carr (LV) 4,049
201911Jameis Winston (TB) 5,109; Dak Prescott (DAL) 4,902; Jared Goff (LA) 4,638; Philip Rivers (LAC) 4,615; Matt Ryan (ATL) 4,466; Russell Wilson (SEA) 4,110; Tom Brady (NE) 4,057; Derek Carr (LV) 4,054; Carson Wentz (PHI) 4,039; Patrick Mahomes (KC) 4,031; Aaron Rodgers (GB) 4,002
202012Deshaun Watson (HOU) 4,823; Patrick Mahomes (KC) 4,740; Tom Brady (TB) 4,633; Matt Ryan (ATL) 4,581; Josh Allen (BUF) 4,544; Justin Herbert (LAC) 4,336; Aaron Rodgers (GB) 4,299; Kirk Cousins (MIN) 4,265; Russell Wilson (SEA) 4,212; Philip Rivers (IND) 4,169; Derek Carr (LV) 4,103; Matthew Stafford (DET) 4,084
202110Tom Brady (TB) 5,316; Justin Herbert (LAC) 5,014; Matthew Stafford (LA) 4,886; Patrick Mahomes (KC) 4,839; Derek Carr (LV) 4,804; Joe Burrow (CIN) 4,611; Dak Prescott (DAL) 4,449; Josh Allen (BUF) 4,407; Kirk Cousins (MIN) 4,221; Aaron Rodgers (GB) 4,115
20229Patrick Mahomes (KC) 5,250; Justin Herbert (LAC) 4,739; Tom Brady (TB) 4,694; Kirk Cousins (MIN) 4,547; Joe Burrow (CIN) 4,475; Jared Goff (DET) 4,438; Josh Allen (BUF) 4,283; Geno Smith (SEA) 4,282; Trevor Lawrence (JAX) 4,113
202310Tua Tagovailoa (MIA) 4,624; Jared Goff (DET) 4,575; Dak Prescott (DAL) 4,516; Josh Allen (BUF) 4,306; Brock Purdy (SF) 4,280; Patrick Mahomes (KC) 4,183; Jordan Love (GB) 4,159; C.J. Stroud (HOU) 4,108; Baker Mayfield (TB) 4,044; Trevor Lawrence (JAX) 4,016
20246Joe Burrow (CIN) 4,918; Jared Goff (DET) 4,629; Baker Mayfield (TB) 4,500; Geno Smith (SEA) 4,320; Sam Darnold (MIN) 4,319; Lamar Jackson (BAL) 4,172
20256Matthew Stafford (LA) 4,707; Jared Goff (DET) 4,564; Dak Prescott (DAL) 4,552; Drake Maye (NE) 4,394; Sam Darnold (SEA) 4,048; Trevor Lawrence (JAX) 4,007
Finding 03 · The running back roller coaster

1,000-yard rushers swing widely, from 7 in some seasons to 17 in others

The number of players who ran for 1,000 yards in a season was 17 in 2010, fell to 7 in 2015 and 7 in 2021, then came back to 16 in 2024 and 17 in 2025.

There is no steady trend to explain it. The count is lowest in 2015, 2021 (7) and highest in 2010, 2025 (17). Each block in the chart is one player, colored by his team; hover a block to see who.

Chart for finding 3: Players with 1,000+ rushing yards. The numbers behind it are in the table under the chart.
View the numbers
1,000-yard rushers swing widely, from 7 in some seasons to 17 in others
SeasonPlayers with 1,000+ rushing yardsLeague leader (team) and total
200915Chris Johnson (TEN) 2,006
201017 (highest value in this table)Arian Foster (HOU) 1,614
201115Maurice Jones-Drew (JAX) 1,606
201216Adrian Peterson (MIN) 2,097 (highest value in this table)
201313LeSean McCoy (PHI) 1,607
201413DeMarco Murray (DAL) 1,845
20157 (lowest value in this table)Adrian Peterson (MIN) 1,485
201612Ezekiel Elliott (DAL) 1,631
20179Kareem Hunt (KC) 1,327 (lowest value in this table)
20189Ezekiel Elliott (DAL) 1,434
201916Derrick Henry (TEN) 1,540
20209Derrick Henry (TEN) 2,027
20217 (lowest value in this table)Jonathan Taylor (IND) 1,811
202216Josh Jacobs (LV) 1,653
202312Christian McCaffrey (SF) 1,459
202416Saquon Barkley (PHI) 2,005
202517 (highest value in this table)James Cook (BUF) 1,621

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Everyone who reached it, by season
1,000-yard rushers swing widely, from 7 in some seasons to 17 in others
SeasonPlayers with 1,000+ rushing yardsWho (team) and total, top block first
200915Chris Johnson (TEN) 2,006; Steven Jackson (LA) 1,424; Thomas Jones (NYJ) 1,402; Maurice Jones-Drew (JAX) 1,391; Adrian Peterson (MIN) 1,389; Ray Rice (BAL) 1,339; Ryan Grant (GB) 1,253; Cedric Benson (CIN) 1,251; Jonathan Stewart (CAR) 1,133; Ricky Williams (MIA) 1,121; Frank Gore (SF) 1,120; Jamaal Charles (KC) 1,120; DeAngelo Williams (CAR) 1,117; Rashard Mendenhall (PIT) 1,108; Fred Jackson (BUF) 1,062
201017Arian Foster (HOU) 1,614; Jamaal Charles (KC) 1,467; Michael Turner (ATL) 1,371; Chris Johnson (TEN) 1,364; Maurice Jones-Drew (JAX) 1,324; Adrian Peterson (MIN) 1,298; Rashard Mendenhall (PIT) 1,273; Steven Jackson (LA) 1,241; Ahmad Bradshaw (NYG) 1,235; Ray Rice (BAL) 1,220; Peyton Hillis (CLE) 1,177; Darren McFadden (LV) 1,157; Cedric Benson (CIN) 1,111; LeSean McCoy (PHI) 1,080; Matt Forte (CHI) 1,069; BenJarvus Green-Ellis (NE) 1,008; LeGarrette Blount (TB) 1,007
201115Maurice Jones-Drew (JAX) 1,606; Ray Rice (BAL) 1,364; Michael Turner (ATL) 1,340; LeSean McCoy (PHI) 1,309; Arian Foster (HOU) 1,224; Frank Gore (SF) 1,211; Marshawn Lynch (SEA) 1,204; Willis McGahee (DEN) 1,199; Steven Jackson (LA) 1,145; Ryan Mathews (LAC) 1,091; Reggie Bush (MIA) 1,086; Cedric Benson (CIN) 1,067; Shonn Greene (NYJ) 1,054; Chris Johnson (TEN) 1,047; Chris Wells (ARI) 1,047
201216Adrian Peterson (MIN) 2,097; Alfred Morris (WAS) 1,613; Marshawn Lynch (SEA) 1,590; Jamaal Charles (KC) 1,509; Doug Martin (TB) 1,454; Arian Foster (HOU) 1,424; Stevan Ridley (NE) 1,263; C.J. Spiller (BUF) 1,244; Chris Johnson (TEN) 1,243; Frank Gore (SF) 1,214; Ray Rice (BAL) 1,143; BenJarvus Green-Ellis (CIN) 1,094; Matt Forte (CHI) 1,094; Shonn Greene (NYJ) 1,063; Steven Jackson (LA) 1,045; Ahmad Bradshaw (NYG) 1,015
201313LeSean McCoy (PHI) 1,607; Matt Forte (CHI) 1,339; Jamaal Charles (KC) 1,287; Alfred Morris (WAS) 1,275; Adrian Peterson (MIN) 1,266; Marshawn Lynch (SEA) 1,257; Ryan Mathews (LAC) 1,255; Eddie Lacy (GB) 1,178; Frank Gore (SF) 1,128; DeMarco Murray (DAL) 1,121; Chris Johnson (TEN) 1,077; Knowshon Moreno (DEN) 1,038; Reggie Bush (DET) 1,006
201413DeMarco Murray (DAL) 1,845; Le'Veon Bell (PIT) 1,361; LeSean McCoy (PHI) 1,319; Marshawn Lynch (SEA) 1,306; Justin Forsett (BAL) 1,266; Arian Foster (HOU) 1,246; Eddie Lacy (GB) 1,139; Jeremy Hill (CIN) 1,124; Frank Gore (SF) 1,106; Lamar Miller (MIA) 1,099; Alfred Morris (WAS) 1,074; Matt Forte (CHI) 1,038; Jamaal Charles (KC) 1,033
20157Adrian Peterson (MIN) 1,485; Doug Martin (TB) 1,402; Todd Gurley (LA) 1,106; Darren McFadden (DAL) 1,089; Chris Ivory (NYJ) 1,070; Latavius Murray (LV) 1,066; Devonta Freeman (ATL) 1,056
201612Ezekiel Elliott (DAL) 1,631; Jordan Howard (CHI) 1,313; DeMarco Murray (TEN) 1,287; Jay Ajayi (MIA) 1,272; Le'Veon Bell (PIT) 1,268; LeSean McCoy (BUF) 1,267; David Johnson (ARI) 1,239; LeGarrette Blount (NE) 1,161; Devonta Freeman (ATL) 1,079; Lamar Miller (HOU) 1,073; Mark Ingram (NO) 1,043; Frank Gore (IND) 1,025
20179Kareem Hunt (KC) 1,327; Todd Gurley (LA) 1,305; Le'Veon Bell (PIT) 1,291; LeSean McCoy (BUF) 1,138; Mark Ingram (NO) 1,124; Jordan Howard (CHI) 1,122; Melvin Gordon (LAC) 1,105; Leonard Fournette (JAX) 1,040; C.J. Anderson (DEN) 1,007
20189Ezekiel Elliott (DAL) 1,434; Saquon Barkley (NYG) 1,307; Todd Gurley (LA) 1,251; Joe Mixon (CIN) 1,168; Chris Carson (SEA) 1,151; Christian McCaffrey (CAR) 1,098; Derrick Henry (TEN) 1,059; Adrian Peterson (WAS) 1,042; Phillip Lindsay (DEN) 1,037
201916Derrick Henry (TEN) 1,540; Nick Chubb (CLE) 1,494; Christian McCaffrey (CAR) 1,387; Ezekiel Elliott (DAL) 1,357; Chris Carson (SEA) 1,230; Lamar Jackson (BAL) 1,206; Leonard Fournette (JAX) 1,152; Josh Jacobs (LV) 1,150; Joe Mixon (CIN) 1,137; Dalvin Cook (MIN) 1,135; Marlon Mack (IND) 1,091; Aaron Jones (GB) 1,084; Carlos Hyde (HOU) 1,070; Mark Ingram (BAL) 1,018; Phillip Lindsay (DEN) 1,011; Saquon Barkley (NYG) 1,003
20209Derrick Henry (TEN) 2,027; Dalvin Cook (MIN) 1,557; Jonathan Taylor (IND) 1,169; Aaron Jones (GB) 1,104; David Montgomery (CHI) 1,070; James Robinson (JAX) 1,070; Nick Chubb (CLE) 1,067; Josh Jacobs (LV) 1,065; Lamar Jackson (BAL) 1,005
20217Jonathan Taylor (IND) 1,811; Nick Chubb (CLE) 1,259; Joe Mixon (CIN) 1,205; Najee Harris (PIT) 1,200; Dalvin Cook (MIN) 1,159; Antonio Gibson (WAS) 1,037; Ezekiel Elliott (DAL) 1,002
202216Josh Jacobs (LV) 1,653; Derrick Henry (TEN) 1,538; Nick Chubb (CLE) 1,525; Saquon Barkley (NYG) 1,312; Miles Sanders (PHI) 1,269; Dalvin Cook (MIN) 1,173; Justin Fields (CHI) 1,143; Christian McCaffrey (CAR/SF) 1,139; Travis Etienne (JAX) 1,125; Aaron Jones (GB) 1,121; Jamaal Williams (DET) 1,066; Kenneth Walker III (SEA) 1,050; Rhamondre Stevenson (NE) 1,040; Tyler Allgeier (ATL) 1,035; Najee Harris (PIT) 1,034; Tony Pollard (DAL) 1,007
202312Christian McCaffrey (SF) 1,459; Derrick Henry (TEN) 1,167; Kyren Williams (LA) 1,144; James Cook (BUF) 1,122; D'Andre Swift (PHI) 1,049; James Conner (ARI) 1,040; Najee Harris (PIT) 1,035; Joe Mixon (CIN) 1,034; David Montgomery (DET) 1,015; Raheem Mostert (MIA) 1,012; Travis Etienne (JAX) 1,008; Tony Pollard (DAL) 1,005
202416Saquon Barkley (PHI) 2,005; Derrick Henry (BAL) 1,921; Bijan Robinson (ATL) 1,456; Jonathan Taylor (IND) 1,431; Jahmyr Gibbs (DET) 1,412; Josh Jacobs (GB) 1,329; Kyren Williams (LA) 1,299; Chuba Hubbard (CAR) 1,195; Aaron Jones (MIN) 1,138; Bucky Irving (TB) 1,122; James Conner (ARI) 1,094; Rico Dowdle (DAL) 1,079; Tony Pollard (TEN) 1,079; Najee Harris (PIT) 1,043; Joe Mixon (HOU) 1,016; James Cook (BUF) 1,009
202517James Cook (BUF) 1,621; Derrick Henry (BAL) 1,595; Jonathan Taylor (IND) 1,585; Bijan Robinson (ATL) 1,478; De'Von Achane (MIA) 1,350; Kyren Williams (LA) 1,252; Jahmyr Gibbs (DET) 1,223; Christian McCaffrey (SF) 1,202; Javonte Williams (DAL) 1,201; Saquon Barkley (PHI) 1,140; Travis Etienne (JAX) 1,107; D'Andre Swift (CHI) 1,087; Tony Pollard (TEN) 1,082; Rico Dowdle (CAR) 1,076; Breece Hall (NYJ) 1,065; Kenneth Walker III (SEA) 1,027; Chase Brown (CIN) 1,019
Finding 04 · The running back roller coaster

300-carry seasons: 7 in 2010, never more than 3 a year from 2013 to 2023, then 6 in 2024 and 4 in 2025

A 300-carry season was more common early on: 6 players in 2009 and 7 in 2010. From 2013 to 2023 the count never passed 3, and in 2023 no one reached it.

The count was 6 in 2024 and 4 in 2025. The counts are small, so one or two bell-cow backs (a running back who gets most of his team's carries) make a visible difference. Each block in the chart is one player, colored by his team; hover a block to see who.

Chart for finding 4: Players with 300+ carries. The numbers behind it are in the table under the chart.
View the numbers
300-carry seasons: 7 in 2010, never more than 3 a year from 2013 to 2023, then 6 in 2024 and 4 in 2025
SeasonPlayers with 300+ carriesLeague leader (team) and total
20096Chris Johnson (TEN) 358
20107 (highest value in this table)Michael Turner (ATL) 334
20112Maurice Jones-Drew (JAX) 343
20125Arian Foster (HOU) 351
20132LeSean McCoy (PHI) 314
20142DeMarco Murray (DAL) 392 (highest value in this table)
20151Adrian Peterson (MIN) 327
20161Ezekiel Elliott (DAL) 322
20171Le'Veon Bell (PIT) 321
20181Ezekiel Elliott (DAL) 304
20192Derrick Henry (TEN) 303
20202Derrick Henry (TEN) 378
20212Jonathan Taylor (IND) 332
20223Derrick Henry (TEN) 349
20230 (lowest value in this table)None (lowest value in this table)
20246Saquon Barkley (PHI) 345
20254Jonathan Taylor (IND) 323

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Everyone who reached it, by season
300-carry seasons: 7 in 2010, never more than 3 a year from 2013 to 2023, then 6 in 2024 and 4 in 2025
SeasonPlayers with 300+ carriesWho (team) and total, top block first
20096Chris Johnson (TEN) 358; Thomas Jones (NYJ) 332; Steven Jackson (LA) 325; Adrian Peterson (MIN) 315; Maurice Jones-Drew (JAX) 312; Cedric Benson (CIN) 301
20107Michael Turner (ATL) 334; Steven Jackson (LA) 330; Arian Foster (HOU) 326; Rashard Mendenhall (PIT) 324; Cedric Benson (CIN) 321; Chris Johnson (TEN) 316; Ray Rice (BAL) 307
20112Maurice Jones-Drew (JAX) 343; Michael Turner (ATL) 301
20125Arian Foster (HOU) 351; Adrian Peterson (MIN) 348; Alfred Morris (WAS) 335; Doug Martin (TB) 319; Marshawn Lynch (SEA) 315
20132LeSean McCoy (PHI) 314; Marshawn Lynch (SEA) 301
20142DeMarco Murray (DAL) 392; LeSean McCoy (PHI) 312
20151Adrian Peterson (MIN) 327
20161Ezekiel Elliott (DAL) 322
20171Le'Veon Bell (PIT) 321
20181Ezekiel Elliott (DAL) 304
20192Derrick Henry (TEN) 303; Ezekiel Elliott (DAL) 301
20202Derrick Henry (TEN) 378; Dalvin Cook (MIN) 312
20212Jonathan Taylor (IND) 332; Najee Harris (PIT) 307
20223Derrick Henry (TEN) 349; Josh Jacobs (LV) 340; Nick Chubb (CLE) 302
20230
20246Saquon Barkley (PHI) 345; Derrick Henry (BAL) 325; Kyren Williams (LA) 316; Bijan Robinson (ATL) 304; Jonathan Taylor (IND) 303; Josh Jacobs (GB) 301
20254Jonathan Taylor (IND) 323; Christian McCaffrey (SF) 311; James Cook (BUF) 309; Derrick Henry (BAL) 307
Finding 05 · Receivers: more 100-catch seasons

100-catch seasons got more common: never more than 7 a year through 2017, at least 7 a year from 2020, and 12 in 2023

The count was 6 in 2009 and only 2 in 2010 and 2011. It reached 12 in 2023 and was 7 in 2025, so the rise is uneven.

The count of 100-catch players and team passing yards per game did not move together: 12 players in 2023 with 236.3 yards per team-game, against 7 players in 2015 with 259.2. These are counts of individual players, so a few high-volume receivers can move the number from one season to the next. Seasons were 16 games through 2020 and 17 from 2021. The data do not say why. Each block in the chart is one player, colored by his team; hover a block to see who.

Chart for finding 5: Players with 100+ receptions. The numbers behind it are in the table under the chart.
View the numbers
100-catch seasons got more common: never more than 7 a year through 2017, at least 7 a year from 2020, and 12 in 2023
SeasonPlayers with 100+ receptionsLeague leader (team) and total
20096Wes Welker (NE) 123
20102 (lowest value in this table)Roddy White (ATL) 115
20112 (lowest value in this table)Wes Welker (NE) 122
20126Calvin Johnson (DET) 122
20135Pierre Garcon (WAS) 113
20145Antonio Brown (PIT) 129
20157Antonio Brown (PIT) 136
20163Larry Fitzgerald (ARI) 107 (lowest value in this table)
20175Jarvis Landry (MIA) 112
201811Michael Thomas (NO) 125
20195Michael Thomas (NO) 149 (highest value in this table)
20208Stefon Diggs (BUF) 127
202110Cooper Kupp (LA) 145
20229Justin Jefferson (MIN) 128
202312 (highest value in this table)CeeDee Lamb (DAL) 135
202410Ja'Marr Chase (CIN) 127
20257Puka Nacua (LA) 129

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Everyone who reached it, by season
100-catch seasons got more common: never more than 7 a year through 2017, at least 7 a year from 2020, and 12 in 2023
SeasonPlayers with 100+ receptionsWho (team) and total, top block first
20096Wes Welker (NE) 123; Steve Smith (NYG) 107; Andre Johnson (HOU) 101; Brandon Marshall (DEN) 101; Dallas Clark (IND) 100; Reggie Wayne (IND) 100
20102Roddy White (ATL) 115; Reggie Wayne (IND) 111
20112Wes Welker (NE) 122; Roddy White (ATL) 100
20126Calvin Johnson (DET) 122; Brandon Marshall (CHI) 118; Wes Welker (NE) 118; Andre Johnson (HOU) 112; Jason Witten (DAL) 110; Reggie Wayne (IND) 106
20135Pierre Garcon (WAS) 113; Antonio Brown (PIT) 110; Andre Johnson (HOU) 109; Julian Edelman (NE) 105; Brandon Marshall (CHI) 100
20145Antonio Brown (PIT) 129; Demaryius Thomas (DEN) 111; Julio Jones (ATL) 104; Matt Forte (CHI) 102; Emmanuel Sanders (DEN) 101
20157Antonio Brown (PIT) 136; Julio Jones (ATL) 136; DeAndre Hopkins (HOU) 111; Jarvis Landry (MIA) 110; Brandon Marshall (NYJ) 109; Larry Fitzgerald (ARI) 109; Demaryius Thomas (DEN) 105
20163Larry Fitzgerald (ARI) 107; Antonio Brown (PIT) 106; Odell Beckham Jr. (NYG) 101
20175Jarvis Landry (MIA) 112; Larry Fitzgerald (ARI) 109; Michael Thomas (NO) 104; Keenan Allen (LAC) 102; Antonio Brown (PIT) 101
201811Michael Thomas (NO) 125; Zach Ertz (PHI) 116; DeAndre Hopkins (HOU) 115; Adam Thielen (MIN) 113; Julio Jones (ATL) 113; Davante Adams (GB) 111; JuJu Smith-Schuster (PIT) 111; Christian McCaffrey (CAR) 107; Antonio Brown (PIT) 104; Travis Kelce (KC) 103; Stefon Diggs (MIN) 102
20195Michael Thomas (NO) 149; Christian McCaffrey (CAR) 116; DeAndre Hopkins (HOU) 104; Keenan Allen (LAC) 104; Julian Edelman (NE) 100
20208Stefon Diggs (BUF) 127; Davante Adams (GB) 115; DeAndre Hopkins (ARI) 115; Darren Waller (LV) 107; Travis Kelce (KC) 105; Allen Robinson (CHI) 102; Keenan Allen (LAC) 100; Tyler Lockett (SEA) 100
202110Cooper Kupp (LA) 145; Davante Adams (GB) 123; Tyreek Hill (KC) 111; Justin Jefferson (MIN) 108; Diontae Johnson (PIT) 107; Mark Andrews (BAL) 107; Keenan Allen (LAC) 106; Jaylen Waddle (MIA) 104; Hunter Renfrow (LV) 103; Stefon Diggs (BUF) 103
20229Justin Jefferson (MIN) 128; Tyreek Hill (MIA) 119; Travis Kelce (KC) 110; Stefon Diggs (BUF) 108; Austin Ekeler (LAC) 107; CeeDee Lamb (DAL) 107; Amon-Ra St. Brown (DET) 106; Chris Godwin Jr. (TB) 104; Davante Adams (LV) 100
202312CeeDee Lamb (DAL) 135; Amon-Ra St. Brown (DET) 119; Tyreek Hill (MIA) 119; Evan Engram (JAX) 114; Michael Pittman (IND) 109; Keenan Allen (LAC) 108; Stefon Diggs (BUF) 107; A.J. Brown (PHI) 106; Puka Nacua (LA) 105; Adam Thielen (CAR) 103; Davante Adams (LV) 103; Ja'Marr Chase (CIN) 100
202410Ja'Marr Chase (CIN) 127; Amon-Ra St. Brown (DET) 115; Brock Bowers (LV) 112; Trey McBride (ARI) 111; Malik Nabers (NYG) 109; Justin Jefferson (MIN) 103; CeeDee Lamb (DAL) 101; Garrett Wilson (NYJ) 101; Drake London (ATL) 100; Jaxon Smith-Njigba (SEA) 100
20257Puka Nacua (LA) 129; Trey McBride (ARI) 126; Ja'Marr Chase (CIN) 125; Jaxon Smith-Njigba (SEA) 119; Amon-Ra St. Brown (DET) 117; Christian McCaffrey (SF) 102; Chris Olave (NO) 100
Finding 06 · Defenses: fewer interceptions, more sacks

Interceptions per team-game fell from 1.025 in 2009 to 0.699 in 2025

Defenses came up with 1.025 interceptions per team-game in 2009. By 2025 that had fallen to 0.699, a drop of 32%.

The decline is gradual, with small year-to-year bumps and no single-season cliff. The data show that it happened, not why.

Chart for finding 6: Interceptions per team-game. The numbers behind it are in the table under the chart.
View the numbers
Interceptions per team-game fell from 1.025 in 2009 to 0.699 in 2025
SeasonInterceptionsInterceptions per team-game
20095251.025
20105100.996
20115060.988
20124680.914
20135020.980
20144500.879
20154360.852
20164150.811
20174300.840
20184190.818
20194100.801
20203950.771
20214400.809
20224180.771
20234300.790
20243870.711
20253800.699
Finding 07 · Defenses: fewer interceptions, more sacks

Players with 6+ interceptions fell from 11 in 2009 to 5 or fewer in every season since 2013, and 1 in 2025

In 2009, 11 defenders had six or more interceptions. By 2013 it was 4, and in 2025 only 1 player did it. Every season from 2013 to 2025 had between 1 and 5.

The season high in the data is 11 interceptions, by Trevon Diggs in 2021. Each block in the chart is one player, colored by his team; hover a block to see who.

Chart for finding 7: Players with 6+ interceptions. The numbers behind it are in the table under the chart.
View the numbers
Players with 6+ interceptions fell from 11 in 2009 to 5 or fewer in every season since 2013, and 1 in 2025
SeasonPlayers with 6+ interceptionsLeague leader (team) and total
200911 (highest value in this table)Asante Samuel (PHI) 9
20109Ed Reed (BAL) 8
20117Charles Woodson (GB) 7
20126Tim Jennings (CHI) 9
20134Richard Sherman (SEA) 8
20142Glover Quin (DET) 7
20155Marcus Peters (KC) 8
20164Casey Hayward (LAC) 7
20174Darius Slay (DET) 8
20184Damontae Kazee (ATL) 7
20193Anthony Harris (MIN) 6 (lowest value in this table)
20203Xavien Howard (MIA) 10
20213Trevon Diggs (DAL) 11 (highest value in this table)
20224C.J. Gardner-Johnson (PHI) 6 (lowest value in this table)
20233DaRon Bland (DAL) 9
20245Kerby Joseph (DET) 9
20251 (lowest value in this table)Kevin Byard (CHI) 7

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Everyone who reached it, by season
Players with 6+ interceptions fell from 11 in 2009 to 5 or fewer in every season since 2013, and 1 in 2025
SeasonPlayers with 6+ interceptionsWho (team) and total, top block first
200911Asante Samuel (PHI) 9; Charles Woodson (GB) 9; Darren Sharper (NO) 9; Jairus Byrd (BUF) 9; Brent Grimes (ATL) 6; Darrelle Revis (NYJ) 6; Dominique Rodgers-Cromartie (ARI) 6; Johnathan Joseph (CIN) 6; Leon Hall (CIN) 6; Nick Collins (GB) 6; Zack Bowman (CHI) 6
20109Ed Reed (BAL) 8; Asante Samuel (PHI) 7; Devin McCourty (NE) 7; Troy Polamalu (PIT) 7; Aqib Talib (TB) 6; DeAngelo Hall (WAS) 6; Jason Allen (MIA/HOU) 6; Joe Haden (CLE) 6; Tramon Williams (GB) 6
20117Charles Woodson (GB) 7; Eric Weddle (LAC) 7; Kyle Arrington (NE) 7; Brandon Browner (SEA) 6; Carlos Rogers (SF) 6; Corey Webster (NYG) 6; Dashon Goldson (SF) 6
20126Tim Jennings (CHI) 9; Richard Sherman (SEA) 8; Stevie Brown (NYG) 8; Patrick Peterson (ARI) 7; Casey Hayward (GB) 6; Thomas DeCoud (ATL) 6
20134Richard Sherman (SEA) 8; Antrel Rolle (NYG) 6; Brandon Boykin (PHI) 6; Deandre Levy (DET) 6
20142Glover Quin (DET) 7; Tashaun Gipson (CLE) 6
20155Marcus Peters (KC) 8; Reggie Nelson (CIN) 8; Kurt Coleman (CAR) 7; Trumaine Johnson (LA) 7; Marcus Williams (NYJ) 6
20164Casey Hayward (LAC) 7; Dominique Rodgers-Cromartie (NYG) 6; Marcus Peters (KC) 6; Quintin Demps (HOU) 6
20174Darius Slay (DET) 8; Kevin Byard (TEN) 8; A.J. Bouye (JAX) 6; Eric Weddle (BAL) 6
20184Damontae Kazee (ATL) 7; Kyle Fuller (CHI) 7; Xavien Howard (MIA) 7; Eddie Jackson (CHI) 6
20193Anthony Harris (MIN) 6; Stephon Gilmore (NE) 6; Tre'Davious White (BUF) 6
20203Xavien Howard (MIA) 10; J.C. Jackson (NE) 9; Tyrann Mathieu (KC) 6
20213Trevon Diggs (DAL) 11; J.C. Jackson (NE) 8; Amani Oruwariye (DET) 6
20224C.J. Gardner-Johnson (PHI) 6; Justin Simmons (DEN) 6; Minkah Fitzpatrick (PIT) 6; Riq Woolen (SEA) 6
20233DaRon Bland (DAL) 9; Geno Stone (BAL) 7; Jessie Bates (ATL) 6
20245Kerby Joseph (DET) 9; Xavier McKinney (GB) 8; Byron Murphy (MIN) 6; C.J. Gardner-Johnson (PHI) 6; Marlon Humphrey (BAL) 6
20251Kevin Byard (CHI) 7
Finding 08 · Defenses: fewer interceptions, more sacks

Sacks per pass attempt rose from 6.4% in 2009 to 7.3% in 2025

Dividing sacks by pass attempts, the sack rate was 6.38% in 2009 and 7.33% in 2025. It peaked at 7.64% in 2023.

Sacks are not counted in pass attempts, so this rate is sacks per attempt. Over the same seasons interceptions per team-game fell while sacks per attempt rose. The data show what changed, not why.

Chart for finding 8: Sacks per pass attempt. The numbers behind it are in the table under the chart.
View the numbers
Sacks per pass attempt rose from 6.4% in 2009 to 7.3% in 2025
SeasonSacksPass attemptsSacks per pass attempt
20091,08617,0356.38%
20101,12117,2726.49%
20111,18117,4226.78%
20121,16217,7886.53%
20131,28818,1367.10%
20141,20717,8796.75%
20151,18218,2986.46%
20161,10618,2956.05%
20171,19017,4886.80%
20181,27017,6707.19%
20191,26917,8537.11%
20201,13118,0186.28%
20211,23218,7126.58%
20221,29118,0697.14%
20231,39918,3157.64%
20241,30417,8117.32%
20251,27817,4397.33%
Finding 09 · Pass rushers

J.J. Watt owns 4 of the 10 biggest QB-hit seasons, led by 51 in 2014

The top 10 single seasons for quarterback hits include 4 by J.J. Watt, in 2012 (43), 2013 (46), 2014 (51), 2015 (50). The record in the data is 51.

The source does not say how consistently QB hits were recorded over time, so treat this as a ranking of recorded hits, not a full count of pressure.

Chart for finding 9: QB hits in a season, top 10 player-seasons. The numbers behind it are in the table under the chart.
View the numbers
J.J. Watt owns 4 of the 10 biggest QB-hit seasons, led by 51 in 2014
PlayerSeasonTeamQB hits
J.J. Watt2014HOU51
J.J. Watt2015HOU50
Nick Bosa2022SF48
Zach Allen2025DEN47
J.J. Watt2013HOU46
J.J. Watt2012HOU43
Aaron Donald2018LA41
T.J. Watt2020PIT41
Zach Allen2024DEN40
Myles Garrett2025CLE39
Finding 10 · Pass rushers

The sack leader each season ranged from 15 (T.J. Watt, 2020) to 23 (Myles Garrett, 2025)

Every season has one clear sack leader, with no ties. The lowest leading total was 15 by T.J. Watt in 2020. The highest was 23 by Myles Garrett in 2025.

T.J. Watt led the league in 3 of the 17 seasons. Each bar is colored by the leader's team, and a leader who changed teams that season would show a bar split between them. Hover a bar to see who led.

Chart for finding 10: Sacks by each season's league leader. The numbers behind it are in the table under the chart.
View the numbers
The sack leader each season ranged from 15 (T.J. Watt, 2020) to 23 (Myles Garrett, 2025)
SeasonLeaderTeamSacks
2009Elvis DumervilDEN16.5
2010DeMarcus WareDAL15.5
2011Jared AllenMIN22
2012J.J. WattHOU20.5
2013Robert MathisIND19.5
2014Justin HoustonKC22
2015J.J. WattHOU17.5
2016Vic BeasleyATL15.5
2017Chandler JonesARI17
2018Aaron DonaldLA20.5
2019Shaquil BarrettTB19.5
2020T.J. WattPIT15 (lowest value in this table)
2021T.J. WattPIT22.5
2022Nick BosaSF18.5
2023T.J. WattPIT19
2024Trey HendricksonCIN17.5
2025Myles GarrettCLE23 (highest value in this table)

LowestHighestShading compares the seasons in this table, column by column. It marks highest and lowest, not good or bad.

Finding 11 · Value over replacement

Patrick Mahomes in 2022 was the best quarterback season by EPA over replacement, and only 4 of the top 10 are also in the top 10 for passing yards

EPA (expected points added) says how many points a play was worth compared with the average play in the same situation; an example is in "Terms in plain words" below. EPA over replacement (EPAOR) is a quarterback's total EPA minus what a replacement-level passer (the quarterbacks ranked below the top 32 by plays, described in finding 12) would have added on the same number of opportunities (his pass attempts, sacks and carries). The top season in 2009 to 2025 is Patrick Mahomes in 2022 with 308.1 points, ranked 4 in passing yards across all 17 seasons.

Ranking all quarterback seasons by EPAOR and by passing yards, 4 of the top 10 seasons appear on both lists. Passing yards reward volume; EPAOR also rewards efficiency and counts sacks, interceptions and scrambles. This is this site's own version of a value-over-replacement stat, not a full WAR. The replacement rule is in the data section below.

Chart for finding 11: EPA over replacement, top 10 quarterback seasons. The numbers behind it are in the table under the chart.
View the numbers
Patrick Mahomes in 2022 was the best quarterback season by EPA over replacement, and only 4 of the top 10 are also in the top 10 for passing yards
RankPlayer-seasonTeamEPAORTotal EPAOpportunitiesPassing-yards rank (of all QB seasons, 2009 to 2025)
1Patrick Mahomes 2022KC308.1217.47354
2Tom Brady 2012NE298.7197.868727
3Patrick Mahomes 2018KC298.1237.066612
4Peyton Manning 2013DEN296.0233.47092
5Lamar Jackson 2019BAL295.9198.9600333
6Aaron Rodgers 2011GB281.2227.359748
7Drew Brees 2011NO280.7217.17051
8Peyton Manning 2009IND274.0161.760068
9Drew Brees 2009NO267.6163.555686
10Tom Brady 2011NE267.5205.66865
Finding 12 · Value over replacement

Under this site's rule, quarterback replacement level averaged -0.113 EPA per play across the 17 seasons, below zero and below the 0.064 of the top 32

Each season, the quarterbacks ranked below the top 32 by plays form the replacement pool. Their EPA per play averaged -0.113, from -0.187 (2009) to -0.067 (2020). The top 32 averaged 0.064, above the replacement level in 17 of 17 seasons.

Read these figures with care. The pool is biased low by construction: it holds the players who ended up with the fewest plays, which includes benched and injured players, so it is a low bar and not a typical backup. The -0.113 is a simple mean of 17 season rates, not one rate pooled over every play, and the range from -0.187 to -0.067 is just the lowest and highest season, not a trend. For wide receivers the same rule gives a replacement level that averaged 0.125 EPA per opportunity (carries plus targets), from 0.036 (2017) to 0.219 (2020), against 0.241 for the top 64. The bar differs by position, so EPAOR scores should only be compared within a position.

Chart for finding 12: EPA per play (attempts, sacks, carries). The numbers behind it are in the table under the chart.
View the numbers
Under this site's rule, quarterback replacement level averaged -0.113 EPA per play across the 17 seasons, below zero and below the 0.064 of the top 32
SeasonQB pool sizeQB replacement EPA per playTop 32 QB EPA per playWR replacement EPA per opportunityTop 64 WR EPA per opportunity
200945-0.1870.0540.1180.186
201048-0.1300.0620.0980.205
201143-0.0900.0520.0960.210
201238-0.1470.0630.0870.235
201334-0.0880.0620.1380.209
201441-0.1180.0620.1080.233
201542-0.0980.0720.1110.239
201638-0.0770.0690.1210.229
201741-0.1420.0350.0360.204
201839-0.0920.0800.1570.281
201939-0.1620.0730.1550.284
202049-0.0670.1030.2190.315
202149-0.0760.0600.1640.251
202251-0.1230.0550.1050.248
202349-0.1390.0320.0810.264
202446-0.0820.0800.1490.268
202549-0.1040.0770.1850.239
About the data

Where the numbers come from and how they are computed

Source. The nflverse-data stats_player release: weekly player stats, one file per season, licensed CC-BY-4.0. Credit to the nflverse project and its contributors. Definitions of the advanced columns come from the nflverse player stats data dictionary.

What one row is. One row is one player in one game. The cleaned data has 304,515 rows and 69 columns for 17 seasons (2009 to 2025), 8,093 players (8,081 in the regular season) and 32 teams. The time column is season (and week) and the group columns are player and team. This report and the dashboard's starting view use regular-season rows only, which is 291,750 of them; playoffs can be added with the dashboard's season-type filter.

Rows dropped and other cleaning. The source files hold 304,877 rows. 362 were dropped for having no player (below), 0 for having no opponent and 0 as duplicates, which leaves 304,515 rows.

  • 362 rows dropped for having no player. These rows have no player ID, no player name and no position, so they cannot be a player-game. There is exactly one such row for each of the 362 season-weeks in the source (21 to 22 per season, 294 in the regular season and 68 in the playoffs), not one per team per week. Each has a team code, and 337 of them have non-zero stats, almost all penalties (330 rows) and safeties (84 rows). The source does not say what they are; they look like penalties and other plays charged to a team instead of a player. What was lost, counting regular-season totals in the dropped rows out of all rows: sacks 11 of 20,708, interceptions 0 of 7,521, solo tackles 163 of 353,204, QB hits 6 of 47,631, passing yards 0 of 2,163,026, rushing yards 0 of 1,016,067, receptions 2 of 191,313. Penalties are the one number that is visibly affected: 2,764 of 55,658 (5.0%) sit in dropped rows, so penalty rates on the dashboard and the team field are about 5% lower than the source's total. Nothing in the findings above uses penalties.
  • 4,536 all-zero rows kept. 4,536 rows (4,342 of them in the regular season) have a player ID, name, position and team but no tracked stat in the columns kept here (mostly linemen, defensive backs and linebackers who played without recording a stat). They are real players who appeared in the game (1.5% of regular-season rows), so dropping them would understate who played. They add nothing to any sum, and they do count as player-games in the "Player-games" measure and in per-player-game averages.
  • Team codes. The source uses one code per franchise across moves: the Raiders are LV, the Chargers LAC and the Rams LA in every season, so there are 32 teams in all 17 seasons and no renaming was needed.

Tackles for loss are not recorded in 2009 to 2011 and are marked NA (not zero) there. More generally, NA means the source has no value for that player in that game (for example, no pass attempts means no passing EPA); sums skip NA. Player names are not unique, so players are identified by player_id. Full details are in data/DATA_QUALITY.md and data/DATA_DICTIONARY.md.

Terms in plain words.

EPA (expected points added)
How many points a play was worth compared with the average play in the same situation. Example with made-up round numbers: a drive worth 1.0 expected points before a pass and 2.0 after a 20-yard catch gives that pass an EPA of +1.0. The values come from nflverse's model, not from this project.
Team-game
One team in one game. A season of 17 games is 17 team-games for that team.
Sack
A tackle of the quarterback behind the line of scrimmage before he throws. Defenders can share one (each gets half).
QB hit
A defender hits the quarterback as or just after he throws, without a sack.
Carry
One running play: a player runs with the ball (a rush attempt).
Dropback
A pass attempt or a sack: every time the quarterback drops back to pass. EPA per dropback is passing EPA divided by attempts plus sacks.
CPOE (completion percentage over expected)
How much more or less often a passer completes passes than nflverse's model expects given how hard each throw was, in percentage points. +2 means two points better than expected.
Opportunities
The plays a player was directly involved in: pass attempts + sacks + carries for a quarterback, carries + targets for a running back, receiver or tight end. For quarterbacks, "EPA per play" in finding 12 means EPA per opportunity.
Replacement level
What the players just below the starters produced: this site's rule puts everyone ranked below the top 32 quarterbacks (64 receivers) by opportunities in the replacement pool. The pool includes benched and injured players, so it is a low bar.
EPA over replacement (EPAOR)
A player's total EPA minus what the replacement rate would have produced on the same number of opportunities.
Bell-cow
A running back who gets most of his team's carries.

How every number is computed.

  • Team-game: one team in one game. Per-team-game rates add up every player's stat for the season and divide by the number of regular-season team-games (32 teams, 16 games each through 2020, 17 from 2021, with one fewer game in 2022).
  • Player-season counts (4,000-yard passers, 1,000-yard rushers, 300-carry backs, 100-catch receivers, players with 6+ interceptions): each player's regular-season total for one season is compared to the threshold, and players who met it are counted once. A player who changed teams has one total across teams.
  • Interceptions per team-game is defensive interceptions divided by team-games.
  • Sacks per pass attempt is defensive sacks (halves count) divided by pass attempts. Sacks are not part of attempts.
  • QB hits and sack leaders are single-season player totals. Ranking ties are broken by player name. No two players tied for the sack lead in any season.
  • Sack rates (two different ones): finding 8's "sacks per pass attempt" is defenders' sacks (halves count) divided by pass attempts, for the whole league. The dashboard's "Sack rate (sacks taken per dropback)" is sacks suffered by quarterbacks divided by attempts plus sacks, so the two are not the same number and are not expected to match.
  • Percent change: 1 minus the later value divided by the earlier value (for example 2025 against the peak, or against 2009).
  • Top 32 and top 64 "starter" rate: the starters' total EPA divided by the starters' total opportunities in that season, one pooled rate, like the replacement rate. The "averaged" figures in finding 12 are simple means of the 17 season rates, not one rate pooled over every play.
  • Players who changed teams: a player's season total is one number across teams. In the charts his block is split by team in proportion to each team's share of the stat (for EPAOR, each team's share of his opportunities).
  • Advanced stats on the dashboard: EPA per dropback is passing EPA divided by attempts plus sacks. ANY/A is (passing yards + 20 x touchdowns - 45 x interceptions + sack yards lost) divided by (attempts + sacks), with sack yards stored as negatives. CPOE is each game's CPOE weighted by that game's attempts. RACR is receiving yards divided by receiving air yards. Target share, air-yards share and WOPR are averages over games in which the player was targeted. Each dashboard measure states its definition under the chart.
  • EPA over replacement (EPAOR, this site's version): regular season only, one position group at a time (quarterbacks, running backs, wide receivers, tight ends). Opportunities are attempts + sacks + carries for quarterbacks and carries + targets for the others. Each season players are ranked by opportunities (ties by player ID); the top 32 quarterbacks, 32 running backs, 64 wide receivers and 32 tight ends are the starters and everyone below them is the replacement pool. The replacement rate r is the pool's total EPA divided by the pool's opportunities, and EPAOR = a player's EPA - r x opportunities. The cutoffs are a judgment call, not nflWAR's. Scores are in expected points, not wins, and are only comparable within a position. A pass's EPA appears under both the passer and the receiver, so EPA must not be added across players.

Limits. Totals are nflverse's numbers and can differ slightly from official league totals. Stats are only as good as the source; tackles depend on stat-crew scoring and are not used here. Metrics that need play-by-play, Next Gen Stats or Pro Football Reference data (EPA allowed, pressure rate, time to throw, missed tackles) are not in this dataset. Reasons for the trends, such as rule changes, are outside the data and are not tested here.

Every number on this page is computed by scripts/build_report.py from data/seasons/, and scripts/check_numbers.js recomputes them with the dashboard's own code.