Every number on the draft board is your own league's rules applied to a real 2025 stat line, computed here rather than taken from anyone else. This is exactly how, and exactly how far to trust it.

Season 2025 Built 21 Aug 2026 2,876 players 44,515 stat rows 39 scorable columns

The short version

A player's score is his 2025 statistics multiplied by your scoring rates and added up. Nothing is fetched from a fantasy provider, nothing is cached from a previous season's settings, and no number is rounded before the end.

That matters because the obvious alternative, asking ESPN for a points total, does not work. Without a league attached, ESPN returns appliedTotal: 0 for every player. The raw counting stats are there; the points are not. So the arithmetic happens here, which has the useful side effect that it happens under your rules rather than a default someone else chose.

Change a rate in Scoring & Roster and every board, ranking and recommendation moves with it on the next query. There is no stored per-player total to go stale.

How a score is made

Reconciles exactly Fully editable

Most rules are worth a fixed amount per unit, so scoring is a multiplication and a sum. Below is the PPR preset in full: every rate the app ships with. Negative rates are shown in red, as a ledger would.

PPR preset · 25 per-unit rates
StatPoints StatPoints
pass_yds0.04fg_0_193
pass_td4fg_20_293
pass_int-2fg_30_393
rush_yds0.1fg_40_494
rush_td6fg_50_595
rec1.0fg_605
rec_yds0.1fg_missed-1
rec_td6pat_made1
fumbles_lost-2def_sacks1
two_pt_pass2def_int2
two_pt_rush2def_fum_rec2
def_td6def_safeties2
def_blocks2

Worked example

The best PPR receiver of 2025, scored line by line. This is the whole calculation. There is no adjustment underneath it.

Puka Nacua WR · LAR · 2025 season · PPR
Receptions129× 1.0129.00
Receiving yards1,715× 0.1171.50
Receiving touchdowns10× 660.00
Rushing yards105× 0.110.50
Rushing touchdowns1× 66.00
Fumbles lost1× -2-2.00
Total375.00

Reconciles. The stored reference column reads 375.00. Half-PPR 310.50, standard 246.00.

Banded scoring

Defences only Paid per game

Two stats cannot be scored at a rate per unit. A shutout is worth far more than twice as much as allowing seven points, and no single multiplier can say that. So points and yards allowed are scored in bands instead: the defence lands in one band and collects its value.

Default bands · points allowed, per game
AllowedPoints AllowedPoints
01028-34-1
1-6735+-4
7-134
14-201
21-270
Default bands · yards allowed, per game
AllowedPoints AllowedPoints
under 1005350-399-1
100-1993400-449-3
200-2992450-499-5
300-3490500+-6

Two rules the bands obey

Defences only
A band applies to a defence and to nothing else. Every offensive row in the database carries points allowed of zero (zero, not blank), so without this rule a quarterback lands in the shutout band and is paid for it.
Once per game
A defence collects its band every week, so across a season it is paid seventeen times. The season row therefore holds a per-game average for these two columns and season totals for everything else. Fed a season total of 300-plus points allowed, every defence in the league lands in the bottom band and the category that most separates them stops separating them.
Both of these were wrong until 21 Aug 2026

The band had no position gate and was paid once for the whole season. Every non-defence scored 15 points too high and every defence roughly seventeen times too low on its biggest category. Two errors pushing the same way, so defences ranked far below where they belonged. Both are fixed, and the test suite now scores every player with the bands set and again with them cleared to prove it stays fixed. If you drafted using this app before that date, the defence rankings you saw were wrong.

Worked example

Broncos D/ST DST · 2025 season · PPR
Sacks68× 168.00
Interceptions10× 220.00
Fumble recoveries3× 26.00
Defensive touchdowns1× 66.00
Blocked kicks2× 24.00
Points allowed18.3/gband 1 × 1717.00
Yards allowed303.2/gband 0 × 170.00
Total121.00

Reconciles. 303.2 yards a game falls in the 300-349 band, which is worth nothing, so the yards line contributes zero here even though it is scored.

The stat line

Thirty-nine columns are available to score. The app reads them from the database schema rather than a hard-coded list, so a column added to the database appears in the rules form by itself.

Passing
pass_att · pass_cmp · pass_yds · pass_td · pass_int · pass_1d · two_pt_pass
Rushing
rush_att · rush_yds · rush_td · rush_1d · two_pt_rush
Receiving
targets · rec · rec_yds · rec_td · rec_1d
Loose ball & misc
fumbles · fumbles_lost · sacks
Kicking
fg_made · fg_att · fg_missed · fg_0_19 · fg_20_29 · fg_30_39 · fg_40_49 · fg_50_59 · fg_60 · pat_made · pat_missed
Defence
def_sacks · def_int · def_fum_rec · def_safeties · def_td · def_blocks · points_allowed · yards_allowed

Carried but not scored by default

Twelve of the thirty-nine have no rate in any preset. They are stored, shown in the full-stats view, and available to score if your league does. They simply default to nothing so that nobody is quietly awarded points for a pass attempt.

fg_att · fg_made · fumbles · pass_1d · pass_att · pass_cmp · pat_missed · rec_1d · rush_1d · rush_att · sacks · targets

Note that fg_made and fg_att are deliberately unscored: field goals are already paid by distance band, and scoring both would pay every kick twice.

Season and week

Each player has one row per week plus a week 0 row holding the season. Everything the draft board shows reads the season row. Of 44,515 rows, 1,879 are actual season lines and 22,243 actual weekly; the remainder are ESPN's own projections, kept for reference and never mixed into a score.

Presets

Five scoring presets and seven roster shapes, all editable after you load one.

Scoring presets
PresetDiffers from PPR by
pprthe baseline
half_ppra reception is 0.5 rather than 1.0
standarda reception is 0
ppr_6pt_passa passing touchdown is 6 rather than 4
superflexa passing touchdown is 6 rather than 4
Roster shapes
ShapeStartersBench
standardQB RB×2 WR×3 TE FLEX K DST6
superflexstandard + SUPERFLEX6
two_qbQB×2 RB×2 WR×3 TE FLEX K DST6
flex_heavyQB RB WR×2 TE FLEX×3 K DST6
best_ballQB RB×2 WR×3 TE FLEX12
dynastysuperflex + 3 IR12
smallQB RB×2 WR×2 TE FLEX3

A tight-end premium is deliberately absent. It would need its own mechanism to be right, and an approximation that is wrong for every league is worse than its absence.

The 2026 score

670 players scored Not a prediction No K or DST

Separate from scoring, and read it differently. The 2026 column is a percentile rank within position, 1 to 100. It starts from a player's own points per game over recent seasons and adjusts for the circumstances he is walking into: strength of schedule, playing environment, and how available he has been.

Every component is stored beside the score, so it is never a black box. What is worth knowing is how little the circumstances are actually worth. Measured across four seasons and 27,218 player-games:

Measured effect of each factor
FactorReal size
Home vs away+1.6% to +2.4%, consistent direction
Indoors vs outdoorsWR +5.3% (n=2,970); other positions about 2%
Grass vs turf±0.5-2.4%, and the direction flips by position: tight ends better on grass, receivers on turf. That inconsistency is the signature of noise.
Strength of scheduleOne matchup swings a lot (Arizona allowed running backs +18.6%, Kansas City -11.4%), but over 17 games it converges to a season spread of just 3.9 to 7.0%.
Baseline points per gameVaries more than 300% between the best and worst startable players.

That last row is why circumstances are applied as multipliers on production rather than scored as separate weighted components. An earlier version weighted schedule at 50% and percentile-scaled it, which inflated a 5% real difference into the same range as a 3× production difference, promoting noise to the headline number. The widest circumstance swing in 2026 is about 11%: Dallas receivers with ten indoor games sit at 1.057, Pittsburgh receivers with none at 0.951.

Why environment is measured per position, never per player

One season gives a player a median of 3.5 indoor games and 6 on grass, and weekly fantasy scores swing from 3 to 30 points for the same man. A player-level "plays well indoors" split from that sample is noise wearing a suit. Worse, 67% of a team's games on its home surface are home games, so surface and home advantage are badly confounded. Pooling every player-game by position across four seasons gives thousands of observations instead of a handful.

Two numbers that differ, on purpose

The scouting table shows a PTS column and, once a draft is selected, a league points figure. They are not the same number and are not meant to be.

PTS
A fixed reference computed when the database was built, under standard PPR. It never changes and lets you compare against the rest of the world.
League points
Your rules, applied live. This is what the board ranks by and what the recommendations use.

For offensive players under the PPR preset the two agree to the penny. Two places they legitimately part company:

  • Defences, because the reference column scores points allowed but not yards allowed, while the preset scores both. Houston's defence reads 114 as a reference and 148 under the preset. The difference is 2 points a game for holding opponents under 299 yards, seventeen times over.
  • Kickers who touch the ball. Brandon Aubrey ran once for six yards on a trick play. The reference column only sums kicking; your league scores the rush, so he reads 0.6 higher. The league figure is the correct one.

What to distrust

Listed plainly, because a number you cannot calibrate is worse than one you can.

Mid-season trades
ESPN reports one team per player per season, so a traded player's pre-trade opponents are attributed to the wrong team. His schedule adjustment is wrong.
Rookies
No history, so no 2026 score at all. They are flagged as rookies in the scouting table and you are on your own for them.
Kickers and defences
Scored properly for 2025, but not projected forward. The 2026 column is blank and the ranking is last season's production under your rules.
Injury status
Preseason-noisy. Half the league carries no status at all and only 4.4% are questionable, so that flag costs just 3% here. Injured reserve, out and suspension carry real penalties.
Target share
An estimate. Team totals are reconstructed from ESPN's weekly rows, which reach 26.7 carries per team-game against a real 26, but only 30.2 targets against a real 33, because ESPN's player universe omits fringe pass-catchers. The shortfall spreads across backups so the leaders barely move, but it is an estimate.
Weekly advanced figures
Wild, and deliberately not surfaced. Only season aggregates are shown. A receiver with one carry can read 45 yards after contact per attempt, which is true and useless.
Average draft position
ESPN resets it after a completed season. It comes back as a constant 170.0 with an auction value of 0. The draft rank and auction value columns are used instead.
Yards per route run
Absent, not missing. No free source publishes routes run per receiver, and deriving it from who was on the field would flatter receivers and punish tight ends and backs who stay in to block.
The honest summary

The scoring is exact. It reconciles to the penny and you can check any player by hand from the tables above. The 2026 score is a ranking of how favourable a player's circumstances look, not a prediction of what he will do. An 81 against a 76 is well inside the noise.