? Situational Presets
League EPA Landscape
Loading...
Power Rankings
Loading...
Key Storylines
Quick Stats
Explore
Loading...
Loading...
Coverage by Down & Distance

How does this defense change coverage based on situation?

Loading...

How do QBs perform against a specific coverage scheme? Select a coverage type in the sidebar.

Loading...
Loading...
Coverage Mix Over Time

How has this team's coverage mix evolved week-to-week?

Loading...
Loading...
Loading...

How much heat does this defense generate — and does it need to send extra rushers to get it? QB performance under pressure lives on the Quarterbacks tab (Pressure × Time to Throw view).

Loading...
Loading...
Definitions: pressure = FTN-charted pressure on the dropback (pressures / opposing dropbacks) . “Blitz (5+ rushers)” counts total pass rushers (n_pass_rushers ≥ 5) ; “Blitzers (2nd-level) ≥ 1” counts FTN's n_blitzers, which tallies only second-level rushers — the two blitz definitions differ by construction and are shown side by side, never blended. “Pressure w/o Blitz” = pressures on ≤4-rusher dropbacks over ≤4-rusher dropbacks . QB-fault sacks per FTN charting .
Loading...
Loading...

Loading...
Loading...

Loading...
Player 1
Loading...
Player 2
Loading...
Head-to-Head Comparison

Advanced Play Caller

Play-calling analytics from public charting data: model predictions by target route family, field zone targeting, and read progression.

Game Situation
Model Predictions — EPA by Target Route Family
Loading...
Defensive Coverage Tendencies
Loading...
Who Should I Throw To? Historical results in similar situations (not model-ranked)
Loading...
What NFL Coaches Called in This Situation
Loading...
The Matchup Pick a quarterback and the coverage he's facing — get the route concepts to call.
Loading...
Route Detail Individual targeted routes behind the family ranks (min 3 targets)
Loading...
Zone Targeting Click a field zone to see EPA predictions + historical data

Loading field...


Zone Breakdown — Historical EPA by Target Area
Loading...
EPA by Read
Loading...
Read Distribution
Loading...
Read × Receiver Breakdown
Loading...

Can you out-coach an NFL coordinator? Call plays in real game situations.

Game Situation
Your Call
Result
What NFL Coaches Called

Fantasy Matchup Tool

WR/TE matchup grades powered by route-vs-coverage analytics.

Loading...
Route vs Coverage Breakdown
Loading...

Loading...

Be Your Own GM

Build your roster, manage the cap, and test your moves in the Play Caller.

Current Roster
Loading...

Cap Used

Cap Available

% Used

Players

Cap Allocation by Position Group
Loading...
Position Group Breakdown
Cut a Player
Undo Moves
Sign a Free Agent

Trade
Modified Roster Download CSV
Loading...
Roster Changes for Play Caller

Your GM moves modify the roster that feeds into the Play Caller's model predictions. When you navigate to the Play Caller tab, it will use your modified roster to update receiver targets, personnel groupings, and EPA projections.


Roster Diff

Who's Overpaid? Who's a Bargain?

APY (x) vs EPA per play (y). Above the line = bargain, below = overpaid.

Loading...
Contract Roster View

Sortable, searchable roster with key contract details.

Loading...
Cap Allocation by Position
Loading...
Contract Database
Loading...

Loading...
Loading...

Run Direction vs Box Count
Loading...
Loading...
Loading...

WR/TE Route Tree
Loading...
Loading...

Route × Coverage Heatmap

Loading...

Underlying Table
Loading...

Usage and outcome association under the current filters — not play-calling causation.

Loading...
Denominators: Motion / No-Huddle / RPO / Shotgun rates are per scrimmage play; Play Action / Screen rates are per dropback.
Loading...
Loading...
Loading...
Loading...
Receiver Hands — league-wide
Loading...
About The Kneeldown

Thank you for visiting The Kneeldown. This project was originally created in 2022 when I was in high school. I used my experience as an R&D with PFF to create the site and build the original concept. Since then, life has gotten in the way and I haven't been able to maintain it as much until now where I've attempted to revive it, building it better than ever.

Currently, it runs off of open source data meaning that there is no asymmetric information that is offered. The goal is to offer the average consumer the ability to understand football through a data-driven lens. If you have any suggestions, feedback, or questions, please reach out to me at ryweis1@outlook.com or on Twitter/X at @ryanweisman12 .

I am funding the hosting of this website by myself and plan to keep it free for the average user. If you have found the site valuable and would like to contribute to its hosting, feel free to do so here: Buy Me a Coffee .

Data Sources
Source Data Provider
nflfastR Play-by-play, EPA, win probability nflverse
FTN Charting Ball quality, play action, blitz, interception worthy nflverse via FTN
Participation Coverage scheme, route, personnel, formation nflverse
Next Gen Stats Time to throw, separation, air yards, RYOE nflverse via NGS
OverTheCap Contracts, APY, guaranteed money, cap hits nflreadr
Data Status

Every dataset behind the site, with its source, coverage, and when it was last rebuilt. Manifest generated 2026-07-19 18:26:17 UTC.

Dataset Source Rows Seasons Updated Cadence
Play-by-play (nflfastR + participation + FTN)  ⓘ nflreadr::load_pbp / load_participation / load_ftn_charting 197,362 2022-2025 2026-07-19 18:26 UTC Manual refresh; nightly upstream in season
NGS passing (weekly)  ⓘ nflreadr::load_nextgen_stats 3,631 2020-2025 2026-07-19 18:26 UTC Nightly in season
NGS receiving (weekly)  ⓘ nflreadr::load_nextgen_stats 8,871 2020-2025 2026-07-19 18:26 UTC Nightly in season
NGS rushing (weekly)  ⓘ nflreadr::load_nextgen_stats 3,703 2020-2025 2026-07-19 18:26 UTC Nightly in season
Fantasy opportunity (ffopportunity) nflreadr::load_ff_opportunity 36,063 2020-2025 2026-07-19 18:26 UTC Weekly in season
Contracts (OverTheCap)  ⓘ nflreadr::load_contracts 51,707 2026-07-19 18:26 UTC Periodic
Schedules  ⓘ nflreadr::load_schedules 1,411 2022-2026 2026-07-19 18:26 UTC Refresh + schedule releases
Rosters  ⓘ nflreadr::load_rosters 15,507 2022-2026 2026-07-19 18:26 UTC Season rollover + offseason updates
Snap counts (PFR) nflreadr::load_snap_counts 106,148 2022-2025 2026-07-19 18:26 UTC Weekly in season
ESPN QBR (season)  ⓘ nflreadr::load_espn_qbr 321 2022-2025 2026-07-19 18:26 UTC Weekly/season
ESPN QBR (weekly)  ⓘ nflreadr::load_espn_qbr(summary_type='week') 2,273 2022-2025 2026-07-19 18:26 UTC Weekly in season
Defensive player stats nflreadr::load_player_stats(summary_level='week') 45,553 2022-2025 2026-07-19 18:26 UTC Weekly in season
Team colors & logos nflreadr::load_teams 32 2026-07-19 18:26 UTC Static
Player identity dimension  ⓘ nflreadr::load_players 25,032 2026-07-19 18:26 UTC Periodic

Charting-era caveat: 2022 coverage/route/pressure labels come from the NGS participation release (~84% of pass plays charted, different route vocabulary); 2023+ is FTN-charted (~100%). Cross-era rates are computed on different instruments — era-sensitive views say so in place.

Model Card — Play Caller EPA Model
  • What it does: predicts per-play EPA for a proposed pre-snap situation and target route family, scored under each coverage the selected defense actually plays (usage-weighted). It models the targeted receiver's route — not a full 5-man play concept.
  • Type: XGBoost regression (EPA), 45 features.
  • Trained: 2026-07-18 on 140,184 plays (2022 to latest season).
  • Random-split test RMSE: 1.3150 (correlation 0.334)
  • Out-of-time validation: trained only on past seasons, scored on a full future season it never saw (the honest test — the random-split RMSE above flatters the model). train 2022-2023 -> test 2024: model RMSE 1.310 vs situational baseline 1.385 (beats baseline); train 2022-2024 -> test 2025: model RMSE 1.305 vs situational baseline 1.380 (beats baseline) .
  • Top features by gain: is_pass, half_secs, ay_none, field_pos, distance
  • Limitations: trained on public charting only — no player tracking, no blocking assignments, no receiver identity; recommendations are historical-pattern estimates with real uncertainty, not guarantees. Coverage labels change provenance at the 2022/2023 charting-source boundary.
Model Card — Coverage-Mix Model
  • What it does: predicts which coverage a defense will show in a pre-snap situation, as a probability distribution. Those probabilities WEIGHT the Play Caller's per-coverage EPA predictions; the per-coverage EPA-allowed and box-count inputs stay empirical.
  • Type: XGBoost multiclass (multi:softprob), 45 features (pre-snap situation, offensive RB/TE counts, defense identity). Unit: one charted defensive pass play.
  • Classes: 10 charted coverage schemes (Cover 0–4, 6, 9, 2-Man, Combo, Prevent). BLOWN (busted coverage) is a data-quality bucket, never a class.
  • Trained: 2026-07-23 on 70,994 plays ( 2022–2025 ); validation mlogloss 1.6336 / top-1 37.5% at iteration 240 .
  • Out-of-time validation: trained only on past seasons, scored on a full future season it never saw. Promotion required beating the smoothed-empirical baseline on multiclass log-loss in BOTH expanding-window folds; it also wins top-1 accuracy in both:
  • Fold Test plays Log-loss (smoother) Log-loss (model) Top-1 (smoother) Top-1 (model)
    train 2022-2023 -> test 2024 19,829 1.8472 1.7506 31.2% 35.7%
    train 2022-2024 -> test 2025 19,602 1.8401 1.8297 27.5% 27.9%

    The 2025 fold's log-loss edge is thin (1.8297 vs 1.8401): on the most recent season the model is only marginally better than the smoother.

  • Limitations: pre-snap information only — no personnel packages beyond RB/TE counts, no motion, no injuries or roster context. Coverage labels change provenance at the 2022/2023 charting-source boundary (NGS participation vs FTN). Coverage calls are inherently noisy: even out-of-time, the best top-1 is ~36%.
  • Fallback: if the model bundle is missing or a defense/situation can't be encoded, the Play Caller logs one line and reverts to the hierarchically smoothed empirical mix (situation → defense → league, k = 15) — the previous production method, still fully tested.
Methodology
  • Pizza Charts: Percentile rankings computed against the full position pool using ECDF.

Per-metric definitions (EPA/Play, Success Rate, CPOE, Matchup Grades, and every other displayed metric) moved to the Metric Dictionary card below — each entry states its exact denominator, sample gate, shrinkage policy, charting-era caveat, and data source.

Metric Dictionary

Every metric the site displays, from one shared registry (the same entries power the in-place ⓘ tooltips). Each entry states the plain-language definition, the exact denominator, the minimum sample shown, any shrinkage applied, whether the 2022 charting-source break affects it, and where the data comes from.

Expected Points Added per play — the change in expected points caused by a play, from nflfastR's expected-points model. The site's universal currency: positive = good for the offense.

Denominator
all plays in the selected sample (QB coverage/route views: the QB's pass plays vs the scheme; team views: scrimmage plays, rps %in% c('pass','run'), excluding kneels/spikes/special teams)
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
epa_play

The same nflfastR EPA, averaged over a receiver's targets — every play on which he was the targeted receiver.

Denominator
the receiver's targets (plays with him as targeted receiver)
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
epa_target

The same nflfastR EPA, averaged over ALL dropbacks — including sacks and throwaways, not just throws. Used by the Play Caller QB-vs-Coverage value box and the Pressure sub-tab's EPA/Dropback Allowed.

Denominator
all dropbacks (rps == 'pass'), sacks and throwaways included
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
epa_dropback

Share of plays with EPA > 0.

Denominator
plays in the current sample with a non-missing EPA
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
success_rate

Empirical-Bayes stabilized EPA: eb_shrink(x, n, prior, k) = (n·x + k·prior) / (n + k) with prior weight k = 25 observations — small-sample means are shrunk toward a relevant prior so thin cells can't dominate rankings. Raw values and n always remain visible.

Denominator
the cell's own plays/targets (n), shrunk toward the view's stated prior: Route×Coverage heatmap — same-coverage mean; Play Caller QB-vs-Coverage concepts — league mean for that concept vs that coverage; receiver ranking — situation-pool mean; Read Progression — per-read league mean
Min n shown
none (all n shown)
Shrinkage
eb_shrink k=25 toward the view's stated prior
Era caveat
No
Source
derived
Registry id
stabilized_epa

Completion Percentage Over Expected — actual completion minus nflfastR's expected completion probability given play difficulty.

Denominator
pass plays with a non-missing cpoe value (~80% fill on pass plays)
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
cpoe

Average Depth of Target — mean air yards on throws. The canonical instrument is pbp air_yards (coalesced with the 2022-only NGS ngs_air_yards); Weekly Stats shows NGS avg_intended_air_yards.

Denominator
throws with a charted air-yards value
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
adot

Share of throws with air yards ≥ 20 (the deep_throw flag, derived from coalesce(air_yards, ngs_air_yards)).

Denominator
throws with charted air yards (~93% of pass plays each season); deep = air yards ≥ 20
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
deep_throw_rate

Seconds from snap to release, from Next Gen Stats. QB-tab buckets: <2.3 / 2.3–2.8 / 2.8–3.3 / 3.3+ seconds.

Denominator
dropbacks with an NGS time_to_throw measurement
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
NGS weekly
Registry id
ttt

Share of opposing dropbacks with an FTN-charted pressure on the QB (was_pressure).

Denominator
charted pressures / opposing dropbacks (rps == 'pass')
Min n shown
100
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
pressure_rate

Share of dropbacks with five or more total pass rushers (n_pass_rushers ≥ 5). One of two blitz definitions shown side by side, never blended.

Denominator
5+-rusher dropbacks / opposing dropbacks with a charted n_pass_rushers
Min n shown
100
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
blitz_rate_rushers

Share of dropbacks where FTN's n_blitzers ≥ 1. n_blitzers counts only SECOND-LEVEL rushers, so this is a different construction from the 5+-rushers definition — the two are shown side by side, never blended.

Denominator
n_blitzers ≥ 1 dropbacks / opposing dropbacks with a charted n_blitzers
Min n shown
100
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
blitz_rate_blitzers

Pressure generated without sending extra rushers: the pressure rate restricted to dropbacks with four or fewer pass rushers.

Denominator
pressures on ≤4-rusher dropbacks / ≤4-rusher dropbacks (charted n_pass_rushers)
Min n shown
100
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
pressure_no_blitz

Share of sacks in the sample that FTN charted as the QB's fault (is_qb_fault_sack).

Denominator
FTN QB-fault sacks / sacks in the sample
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
Yes — affected by the 2022 (NGS participation) vs 2023+ (FTN) charting break; era notes appear in place.
Source
FTN charting
Registry id
qb_fault_sack_share

How often a defense lines up in each charted coverage scheme. BLOWN (busted coverage — a data-quality bucket, not a callable scheme) is excluded from numerator AND denominator, so shown usage sums to 100%.

Denominator
team plays in the scheme / team charted-coverage pass plays; league baseline = mean of per-team usage shares recomputed from the same filtered sample
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
Yes — affected by the 2022 (NGS participation) vs 2023+ (FTN) charting break; era notes appear in place.
Source
FTN charting
Registry id
coverage_usage

Player targets divided by team targets — computed PER TEAM STINT (player × team over that stint's weeks) so traded players are not blended across teams; the most recent stint is reported.

Denominator
player targets with the team / that team's total targets over the stint's weeks
Min n shown
30
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
target_share

Completions on the receiver's targets (mean of complete_pass over targets) — of ALL targets, unlike Drop %, which uses catchable targets only.

Denominator
receptions / all targets (catchable or not)
Min n shown
30
Shrinkage
none
Era caveat
No
Source
nflfastR
Registry id
catch_rate

Drops divided by CATCHABLE targets (FTN-charted catchable balls) — never of all targets (league ≈5.0%). Lower is better; inverted in pizza percentiles.

Denominator
FTN-charted drops on catchable targets / catchable targets
Min n shown
25
Shrinkage
eb_shrink k=25 toward the play-weighted league drop rate (computed from everyone before the display filter)
Era caveat
No
Source
FTN charting
Registry id
drop_rate_catchable

Contested-catch conversion: completed catches on FTN-charted contested targets.

Denominator
contested catches (contested & complete) / contested targets
Min n shown
25
Shrinkage
eb_shrink k=25 toward the play-weighted league contested conversion (computed from everyone before the display filter)
Era caveat
No
Source
FTN charting
Registry id
contested_conv

Share of dropbacks with an FTN-charted interception-worthy throw. Uncharted flags count as not-flagged (≥99.6% of plays are charted).

Denominator
INT-worthy throws / QB dropbacks (rps == 'pass')
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
Yes — affected by the 2022 (NGS participation) vs 2023+ (FTN) charting break; era notes appear in place.
Source
FTN charting
Registry id
int_worthy_rate

Share of a QB's interception-worthy throws that were actually intercepted — computed as the intersection sum(int & int_worthy) / sum(int_worthy), because tipped-ball INTs aren't always charted worthy. League ≈48.5% pooled 2022–25. Descriptive; never framed as “luck”.

Denominator
intercepted INT-worthy throws / INT-worthy throws
Min n shown
100
Shrinkage
none
Era caveat
Yes — affected by the 2022 (NGS participation) vs 2023+ (FTN) charting break; era notes appear in place.
Source
FTN charting
Registry id
int_worthy_conversion

Share of dropbacks FTN charted as throwaways (is_throw_away).

Denominator
throwaways / QB dropbacks (rps == 'pass')
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
throwaway_rate

NGS avg_separation — yards between the receiver and the nearest defender at catch/arrival; the receiver's weekly NGS average joined per play.

Denominator
targets with an NGS separation value (weekly player average joined per play)
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
NGS weekly
Registry id
separation

Rush Yards Over Expected — the NGS model's actual minus expected rush yards given blocking/box, as a per-attempt weekly average joined per play.

Denominator
carries with an NGS RYOE value (per-attempt weekly average)
Min n shown
none (all n shown)
Shrinkage
none
Era caveat
No
Source
NGS weekly
Registry id
ryoe

Team usage of the FTN play flags (motion, no-huddle, RPO, shotgun, play action, screens) vs the play-weighted league under the same filters. Association, not play-calling causation — the flags are not randomly assigned.

Denominator
Motion / No-Huddle / RPO / Shotgun per scrimmage play (rps %in% c('pass','run')); Play Action / Screen per dropback (rps == 'pass')
Min n shown
100
Shrinkage
none
Era caveat
No
Source
FTN charting
Registry id
tendency_usage_rate

Score = EPA the defense allows on the player's top routes vs league average, weighted by how often he runs them (0.5 = neutral). Letter grades curve the Score across the graded (100+ target) players: A = top 20%, B = next 20%, C = middle 20%, D = next 20%, F = bottom 20%.

Denominator
the receiver's charted-route targets overlaid on the opponent's coverage-allowed EPA; graded pool = players with ≥100 targets
Min n shown
100
Shrinkage
reliability curve: score pulled toward neutral 0.5 by min(targets/100, 1); letter grades only for ≥100-target players
Era caveat
Yes — affected by the 2022 (NGS participation) vs 2023+ (FTN) charting break; era notes appear in place.
Source
derived
Registry id
matchup_grade
Connect