Stat Card / Efficiency
EPA (Expected Points Added)
How many expected points a single play added or removed, based on how it changed the down, distance, and field position.
Sample size warning
Single-week EPA totals are heavily influenced by a handful of plays. Do not rank players on one week of EPA.
What it measures
Before every snap, the situation on the field is worth a certain number of expected points: first and goal from the 2 is worth close to a touchdown, fourth and 20 from your own 5 is worth less than nothing. EPA is simply the change in that value from before the play to after it. A 5 yard gain on 3rd and 4 keeps the drive alive and earns positive EPA; the same 5 yards on 3rd and 12 usually ends the drive and earns negative EPA. That is the whole point: EPA knows the difference between yards that mattered and yards that did not.
Two sign conventions to keep straight:
- Offense: positive is good. Zero means the play neither helped nor hurt.
- Defense: our def columns describe what the defense allowed, so lower is better. A defense at -0.10 EPA per play allowed is excellent; a defense at +0.10 is getting shredded.
You will see EPA in two shapes. Totals (like a player's passing EPA for a week or season) reward both efficiency and volume. Rates (EPA per play, EPA per dropback) divide by opportunities and are the right tool for comparing players or teams with different workloads.
How it is computed here
We sum the nflverse EPA model's per-play values straight from play-by-play. Passing EPA sums qb_epa over dropbacks, the quarterback-centric version that does not charge the passer when a teammate fumbles after the catch. Rushing EPA sums plain epa over carries, and receiving EPA sums epa over targets. Team columns average epa across offensive snaps (pass or rush plays with an EPA value; special teams and voided penalty snaps are excluded).
Note that play-level credit is shared: a receiver's target EPA and the passer's dropback EPA count the same play from two perspectives. Adding a team's player EPA columns together does not reproduce team EPA.
How fast it stabilizes
Slowly, at the play level. One week of EPA is roughly 60 team plays or 35 dropbacks, and two or three big plays can swing the whole number. Weekly EPA describes what happened; it says very little about what happens next. Season-scale samples (several hundred plays) are where EPA starts to reflect true quality, which is why our season views are the default for any "who is better" question.
How it gets misused
- Ranking players on one week of EPA. A single pick-six or a 70 yard screen can dominate the total.
- Comparing offensive and defensive EPA without flipping the sign convention. Positive is good on offense and bad on defense.
- Comparing totals across different volumes. A quarterback with 650 dropbacks will usually out-total a better one with 400. Use the per-play and per-dropback rates.
- Treating EPA as one player's stat. Every dropback bundles protection, route running, play design, and the throw. It is the best public measure of a passing offense, not of a passer in isolation.
Where it lives in the data
The dictionary columns behind this metric, straight from the shipped views. Explore any of them at /explore.
| View | Column | Type | Description |
|---|---|---|---|
| player_week | passing_epa | DOUBLE | Total expected points added on dropbacks, using the quarterback-centric qb_epa which does not penalize the passer for fumbles lost by other players after the catch. |
| player_week | rushing_epa | DOUBLE | Total expected points added on carries. |
| player_week | receiving_epa | DOUBLE | Total expected points added on targets. |
| player_season | passing_epa | DOUBLE | Total expected points added on dropbacks, using the quarterback-centric qb_epa. |
| team_week | off_epa_per_play | DOUBLE | Offensive expected points added per play. The best single-number offense metric. |
| team_week | def_epa_per_play | DOUBLE | EPA per play allowed. Lower (more negative) is better defense. |
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.