Every game, every stat category, and what the board says. 3.68 points per game in 2025, an ADP of 147.4, usage worth 4.2.
27 years old · 4 seasons of experience · 2022 draft class
| SLEEPER | 139.6 |
| ESPN | 166.6 |
| YAHOO | 124.3 |
| UNDERDOG | 182.3 |
| CBS | 159.1 |
| FFA | 165 |
| Goes around | Round 13, pick 3 in a 12-team draft |
| Positional rank | RB47 |
| Bye week | 11 |
| ADP standard deviation | 19.1 picks |
San Francisco 49ers returns 5 of 6 continuity slots, replacing wr1. Brock Purdy at quarterback, Kyle Shanahan as head coach, Klay Kubiak calling it. The offense projects to 33.7 pass attempts a game at high confidence and 27.7 rushes.
In: Mike Evans (wr1), De'Zhaun Stribling (wr2), Christian Kirk (wr4), Jacob Cowing (wr7), Kaelon Black (rb2). Out: Jauan Jennings (wr1), Kendrick Bourne (wr3), Brian Robinson Jr. (rb2).
The projected carry split across the offense:
| Christian McCaffrey | 58.4% |
| Kaelon Black | 25% |
| Jordan James | 15.3% |
| Isaac Guerendo | 1.3% |
Key additions: Signed WR Mike Evans from Bucs in free agency. Signed WR Christian Kirk in free agency. Drafted WR De'Zhaun Stribling in the 2nd round from Ole Miss. Drafted RB Kaelon Black in the 3rd round.
Key departures: WR Brandon Aiyuk (who did not play all of 2025 due to injury) is gone. WR Jauan Jennings is also gone. He has functioned as 49ers WR 1/2 for the past two seasons. RB Brian Robinson Jr left to ATL in free agency.
Notes: Stribling round 2 has opportunity to break out early. Mike Evans signing in free agency. Should be alpha WR1 but aging & injury risk. Potential sell high but should produce in 2026. Drafted RB Kaelon Black round 3 from Indiana. Black was not even invited to the NFL combine, but 49ers LOVE him. Could assume RB2 role immediately if he beats out Jordan James. Ricky Pearsall has an opportunity to break out as a WR2 but needs to stay healthy enough to do so. Signed Christian Kirk in offseason, veteran with no fantasy value but will take away targets. Kittle recovering from torn achilles. Drafted Wills the TE. Tonges should function as primary TE2, Wills will be TE3. CMC is a potential sell high candidate but know if healthy he is the number 1 overall RB in 2026.
How the volume number was reached: Same QB Brock Purdy returning — anchor to 2025 actuals (33.7 att/g); Regressed 30% toward league mean 33.5, floored at 30 → 33.6 att/g.
Offensive environment: SF rates 25.4 against a league average of 23, 2.4 points above it on opponent-adjusted least squares (multi-capture merge).
Opponent-adjusted run defense faced, against 2025 ratings. Positive is an easier slate.
| Full season | -1.6 · harder |
| Weeks 1–6 | +0.3 · neutral |
| Weeks 12–17 | -5.3 · harder |
| Fantasy playoffs (15–17) | -8.2 · harder |
Read this narrowly. Our own testing found that season-long strength of schedule does not survive as a draft input — defensive quality is among the least stable team properties year to year, and a preseason slate is built on last year's identities. The playoff-weeks column is the only one we would let break a tie, and even then it is a tiebreaker rather than a reason. The finding.
From the absence record rather than a depth chart — who actually gained when he was out.
| Season | Games missed | Main beneficiary | Their PPR gain |
|---|---|---|---|
| 2023 | 2 | Chris Rodriguez Jr. | +9.4 |
Everything in this section is about his dynasty trade value — what he is worth as a long-term asset in the trade market. It is not a forecast of his 2026 fantasy scoring. A player can be a fine redraft pick while his dynasty value falls, and the reverse. The redraft read is above; this is a different question with a different answer.
His dynasty value has moved -28.3% over the last twelve months. The market cycle classifies him as post-crash. The base rate that applies: after a -25% crash, RBs recover only 15% of the time (keep falling 85%).
For context on how long this lasts at the position: the average career at his position produces 1.7 elite seasons and 2.4 startable seasons.
Matched on production profile — production-driven (pedigree ignored). The last column is how that player’s dynasty value moved the following year — a market outcome, not a scoring one.
| Player | Season | Their PPG | Similarity | Next year |
|---|---|---|---|---|
| Cam Akers | 2024 | 5.8 | 70% | -35.7% |
| Alexander Mattison | 2022 | 5.2 | 69% | -7% |
| Chase Edmonds | 2022 | 5.7 | 68% | -27.4% |
| Kenneth Gainwell | 2024 | 3.7 | 66% | +98.5% |
| Joshua Kelley | 2023 | 3.6 | 65% | -59.4% |
Of the 5 with a following season on record, 1 gained value, 4 lost it and 0 held roughly flat.
| Drafted | 2022, round 3, pick 98 by WAS |
| College | Alabama |
| Age at draft | 23 |
| Height | 6′2″ |
| Weight | 225 lb |
| 40-yard dash | 4.53s |
| Vertical | 30″ |
| Broad jump | 119″ |
| Career PPR per game | 8.8 |
| Week-to-week variation | 0.7 |
| Boom rate | 13% |
| Bust rate | 28.3% |
| Games missed per season | 1 |
| Injury history | Knee, Hamstring |
| Correlation between his posted line and his actual score | 0.25 |
That correlation is how closely the books’ posted line tracked what he actually scored, week to week. A higher number means the market has him figured out and there is less to exploit; a lower one means his weeks are harder to price.
Injury type matters more than games missed. Measured across our injury database, knee and foot returns stay below a player’s pre-injury baseline for all three of the first games back, while hamstring returns over-recover by the third.
His best game was Week 10 against LA — 11.5 PPR on 9 touches and a 2.6% target share, in a game that finished 26-42. His worst was Week 8 against HOU at 0, on 0 touches, final score 15-26. Across 17 games he cleared 20 points 0 times and came in under 8 points 15 times. In the 6 games decided by 8 points or fewer he averaged 2.8; in the 11 decided by more, 4.1. He scored more when the game was not close.
His usage that season was worth 4.2 points per game. He scored 3.68, 20.2% below it. The engine classified the season as unlucky.
| Wk | Opp | Score | PPR | Rec | Tgt | Yds | Car | Rush | TD | Tgt% | Snap% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | SEA | 17-13 | 4.7 | 1 | 2 | 4 | 9 | 33 | 0 | 5.9% | — |
| 2 | NO | 26-21 | 2.9 | 1 | 1 | -1 | 6 | 20 | 0 | 2.6% | — |
| 3 | ARI | 16-15 | 2.2 | 0 | 0 | 0 | 2 | 22 | 0 | 0% | — |
| 4 | JAX | 21-26 | 2.1 | 0 | 0 | 0 | 5 | 21 | 0 | 0% | — |
| 5 | LA | 26-23 | 1.2 | 0 | 0 | 0 | 5 | 12 | 0 | 0% | — |
| 6 | TB | 19-30 | 3.8 | 3 | 3 | 8 | 0 | 0 | 0 | 8.1% | — |
| 7 | ATL | 20-10 | 3.6 | 0 | 0 | 0 | 9 | 36 | 0 | 0% | — |
| 8 | HOU | 15-26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0% | — |
| 9 | NYG | 34-24 | 11.3 | 0 | 0 | 0 | 5 | 53 | 1 | 0% | — |
| 10 | LA | 26-42 | 11.5 | 1 | 1 | 4 | 8 | 41 | 1 | 2.6% | — |
| 11 | ARI | 41-22 | 2.4 | 0 | 1 | 0 | 8 | 24 | 0 | 4% | — |
| 12 | CAR | 20-9 | 5.4 | 1 | 2 | 4 | 7 | 40 | 0 | 6.3% | — |
| 13 | CLE | 26-8 | 2.6 | 0 | 0 | 0 | 8 | 26 | 0 | 0% | — |
| 15 | TEN | 37-24 | 2.1 | 0 | 0 | 0 | 9 | 21 | 0 | 0% | — |
| 16 | IND | 48-27 | 2 | 0 | 1 | 0 | 5 | 20 | 0 | 3% | — |
| 17 | CHI | 42-38 | 3.8 | 1 | 1 | 6 | 4 | 22 | 0 | 3% | — |
| 18 | SEA | 3-13 | 0.9 | 0 | 0 | 0 | 2 | 9 | 0 | 0% | — |
| Receptions | 8 |
| Targets | 12 |
| Receiving yards | 25 |
| Carries | 92 |
| Rushing yards | 400 |
| Touchdowns | 2 |
| Points per game | 3.68 |
| Yards per target | 2.08 |
| Catch rate | 66.67% |
| Yards per carry | 4.35 |
| Target share | 2.09% |
| Air-yards share | -0.01% |
| WOPR | 0.032 |
| RACR | 0.363 |
| Average depth of target | 0 |
| Yards after catch per reception | 4.4 |
| Yards before catch per reception | -1.3 |
| Total YAC | 35 |
| Broken tackles | 0 |
| Drop rate | 0% |
| Passer rating when targeted | 70.1 |
| Receiving EPA per game | -0.24 |
| Rushing EPA per game | -0.04 |
| Red-zone targets | 4 |
| Red-zone target share | 4.4% |
| End-zone target share | 0% |
| Red-zone carry share | 12.5% |
| Goal-line carry share | 7.4% |
| Expected receiving TDs | 0.95 |
| Actual receiving TDs | 0 |
| Receiving TD luck | -0.95 |
| Expected rushing TDs | 1.47 |
The offense threw it 574 times. 2 team-mates cleared the competing-target threshold.
| Christian McCaffrey | 24.76% |
| Jauan Jennings | 17.27% |
| George Kittle | 13.24% |
| Kendrick Bourne | 10.17% |
| Ricky Pearsall | 10.17% |
| Jake Tonges | 8.83% |
He caught passes from 2 quarterbacks that season, and the splits are not close.
| QB | Games | Targets | PPG | Y/T | Tgt% |
|---|---|---|---|---|---|
| Brock Purdy | 9 | 7 | 2.89 | 2 | 2.47% |
| Mac Jones | 8 | 5 | 4.56 | 2.2 | 1.66% |
3 of his 17 games were blowouts, 11.2% of his snaps coming in them. He averaged 2.33 in those and 2.82 in close games — his scoring did not depend on garbage time.
His best game was Week 4 against ARI — 20.3 PPR on 24 touches and a 10% target share, in a game that finished 42-14. His worst was Week 16 against PHI at 2.1, on 13 touches, final score 36-33. Across 14 games he cleared 20 points 1 time and came in under 8 points 3 times. In the 9 games decided by 8 points or fewer he averaged 8.5; in the 5 decided by more, 16.6. He scored more when the game was not close.
His usage that season was worth 11.2 points per game. He scored 11.41, 0.6% above it. The engine classified the season as neutral. On receiving touchdowns specifically he finished 0 against 1.04 expected, a gap of -1.
| Wk | Opp | Score | PPR | Rec | Tgt | Yds | Car | Rush | TD | Tgt% | Snap% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | TB | 20-37 | 17.9 | 3 | 4 | 49 | 12 | 40 | 1 | 16.7% | — |
| 2 | NYG | 21-18 | 14.6 | 1 | 3 | 3 | 17 | 133 | 0 | 10.3% | — |
| 3 | CIN | 38-33 | 10.7 | 1 | 1 | 4 | 16 | 33 | 1 | 4.3% | — |
| 4 | ARI | 42-14 | 20.3 | 3 | 3 | 12 | 21 | 101 | 1 | 10% | — |
| 5 | CLE | 34-13 | 13.8 | 0 | 0 | 0 | 7 | 18 | 2 | 0% | — |
| 7 | CAR | 40-7 | 13.1 | 0 | 0 | 0 | 12 | 71 | 1 | 0% | — |
| 8 | CHI | 18-15 | 8.6 | 1 | 1 | 11 | 16 | 65 | 0 | 2.9% | — |
| 11 | PHI | 18-26 | 14.2 | 1 | 1 | 9 | 16 | 63 | 1 | 3.1% | — |
| 12 | DAL | 26-34 | 3.4 | 1 | 2 | 11 | 5 | 13 | 0 | 5.9% | — |
| 13 | TEN | 42-19 | 17.9 | 1 | 1 | 6 | 16 | 103 | 1 | 3.3% | — |
| 15 | NO | 20-19 | 11.7 | 3 | 3 | 22 | 21 | 65 | 0 | 9.7% | — |
| 16 | PHI | 36-33 | 2.1 | 2 | 3 | 17 | 10 | 24 | 0 | 8.3% | — |
| 17 | ATL | 30-24 | 8.9 | 2 | 2 | 9 | 13 | 60 | 0 | 5.7% | — |
| 18 | DAL | 23-19 | 2.6 | 1 | 1 | 6 | 5 | 10 | 0 | 3.3% | — |
| Receptions | 20 |
| Targets | 25 |
| Receiving yards | 159 |
| Carries | 187 |
| Rushing yards | 799 |
| Touchdowns | 8 |
| Points per game | 11.41 |
| Yards per target | 6.36 |
| Catch rate | 80% |
| Yards per carry | 4.27 |
| Target share | 5.96% |
| Air-yards share | -0.94% |
| WOPR | 0.083 |
| RACR | -0.226 |
| Average depth of target | -0.9 |
| Yards after catch per reception | 9 |
| Yards before catch per reception | -1 |
| Total YAC | 179 |
| Broken tackles | 1 |
| Drop rate | 0% |
| Passer rating when targeted | 76.5 |
| Rushing yards over expected | 0 |
| Receiving EPA per game | -0.2 |
| Rushing EPA per game | -0.86 |
| Red-zone targets | 5 |
| Red-zone target share | 5.6% |
| End-zone target share | 2.7% |
| Red-zone carry share | 35% |
| Goal-line carry share | 48.7% |
| Expected receiving TDs | 1.04 |
| Actual receiving TDs | 0 |
| Receiving TD luck | -1.04 |
| Expected rushing TDs | 10.43 |
Against everyone in the 100+ carries pool that season:
| Points per game | 28 of 46 |
| Yards per target | 19 of 46 |
| Target share | 34 of 46 |
| Air-yards share | 26 of 46 |
The offense threw it 525 times. 2 team-mates cleared the competing-target threshold.
| Terry McLaurin | 23.26% |
| Zach Ertz | 18.09% |
| Olamide Zaccheaus | 12.72% |
| Noah Brown | 11.13% |
| Austin Ekeler | 8.15% |
| Dyami Brown | 7.95% |
He caught passes from 2 quarterbacks that season, and the splits are not close.
| QB | Games | Targets | PPG | Y/T | Tgt% |
|---|---|---|---|---|---|
| Jayden Daniels | 12 | 24 | 12.01 | 6.38 | 6.68% |
| Marcus Mariota | 2 | 1 | 7.85 | 6 | 1.65% |
5 of his 14 games were blowouts, 51.9% of his snaps coming in them. He averaged 16.6 in those and 8.53 in close games — a meaningful share of his scoring came with the game already decided.
His best game was Week 2 against DEN — 28.9 PPR on 21 touches and a 8.8% target share, in a game that finished 35-33. His worst was Week 13 against MIA at 5.3, on 7 touches, final score 15-45. Across 15 games he cleared 20 points 3 times and came in under 8 points 2 times. In the 8 games decided by 8 points or fewer he averaged 15.9; in the 7 decided by more, 10.2. He scored more when the game was live.
His usage that season was worth 11.4 points per game. He scored 13.21, 16.3% above it. The engine classified the season as lucky.
| Wk | Opp | Score | PPR | Rec | Tgt | Yds | Car | Rush | TD | Tgt% | Snap% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ARI | 20-16 | 13.6 | 1 | 2 | 7 | 19 | 59 | 1 | 6.9% | — |
| 2 | DEN | 35-33 | 28.9 | 2 | 3 | 42 | 18 | 87 | 2 | 8.8% | — |
| 3 | BUF | 3-37 | 7 | 0 | 0 | 0 | 10 | 70 | 0 | 0% | — |
| 4 | PHI | 31-34 | 13.1 | 2 | 2 | 6 | 14 | 45 | 1 | 5.1% | — |
| 5 | CHI | 20-40 | 8.3 | 4 | 4 | 33 | 6 | 10 | 0 | 8.3% | — |
| 6 | ATL | 24-16 | 13.6 | 2 | 2 | 25 | 10 | 31 | 1 | 9.5% | — |
| 7 | NYG | 7-14 | 8.3 | 0 | 1 | 0 | 8 | 23 | 1 | 2.8% | — |
| 8 | PHI | 31-38 | 9.9 | 2 | 2 | 20 | 10 | 59 | 0 | 3.9% | — |
| 9 | NE | 20-17 | 11.7 | 1 | 2 | 4 | 18 | 63 | 1 | 4.5% | — |
| 10 | SEA | 26-29 | 27.7 | 6 | 6 | 119 | 8 | 38 | 1 | 14.3% | — |
| 11 | NYG | 19-31 | 20.2 | 7 | 9 | 59 | 17 | 73 | 0 | 21.4% | — |
| 12 | DAL | 10-45 | 8.4 | 2 | 3 | 11 | 15 | 53 | 0 | 6.8% | — |
| 13 | MIA | 15-45 | 5.3 | 0 | 0 | 0 | 7 | 53 | 0 | 0% | — |
| 17 | SF | 10-27 | 11.6 | 4 | 4 | 32 | 9 | 44 | 0 | 15.4% | — |
| 18 | DAL | 10-38 | 10.5 | 3 | 3 | 10 | 9 | 25 | 1 | 10.7% | — |
| Receptions | 36 |
| Targets | 43 |
| Receiving yards | 368 |
| Carries | 178 |
| Rushing yards | 733 |
| Touchdowns | 9 |
| Points per game | 13.21 |
| Yards per target | 8.56 |
| Catch rate | 83.72% |
| Yards per carry | 4.12 |
| Target share | 7.89% |
| Air-yards share | -1.3% |
| WOPR | 0.109 |
| RACR | -2.721 |
| Average depth of target | -1.3 |
| Yards after catch per reception | 11.4 |
| Yards before catch per reception | -1.2 |
| Total YAC | 411 |
| Broken tackles | 6 |
| Drop rate | 0.1% |
| Passer rating when targeted | 133.3 |
| Rushing yards over expected | 0 |
| Receiving EPA per game | 1.36 |
| Rushing EPA per game | -1.41 |
| Red-zone targets | 5 |
| Red-zone target share | 7.2% |
| End-zone target share | 6.1% |
| Red-zone carry share | 47.4% |
| Goal-line carry share | 44.4% |
| Expected receiving TDs | 1.15 |
| Actual receiving TDs | 2 |
| Receiving TD luck | 0.85 |
| Expected rushing TDs | 4.7 |
Against everyone in the 100+ carries pool that season:
| Points per game | 22 of 49 |
| Yards per target | 2 of 49 |
| Target share | 31 of 49 |
| Air-yards share | 38 of 49 |
The offense threw it 636 times. He took 7.17% of the targets. 2 team-mates cleared the competing-target threshold.
| Terry McLaurin | 22% |
| Curtis Samuel | 15.17% |
| Jahan Dotson | 13.83% |
| Logan Thomas | 13% |
| Antonio Gibson | 9.83% |
| Brian Robinson ← | 7.17% |
6 of his 15 games were blowouts, 25.8% of his snaps coming in them. He averaged 8.52 in those and 15.85 in close games — his scoring did not depend on garbage time.
His best game was Week 12 against ATL — 20.5 PPR on 21 touches and a 13.6% target share, in a game that finished 19-13. His worst was Week 8 against IND at 2, on 8 touches, final score 17-16. Across 12 games he cleared 20 points 1 time and came in under 8 points 5 times. In the 8 games decided by 8 points or fewer he averaged 9.7; in the 4 decided by more, 8.7. He scored more when the game was live.
His usage that season was worth 12.2 points per game. He scored 9.39, 23% below it. The engine classified the season as unlucky.
| Wk | Opp | Score | PPR | Rec | Tgt | Yds | Car | Rush | TD | Tgt% | Snap% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 5 | TEN | 17-21 | 2.2 | 0 | 0 | 0 | 9 | 22 | 0 | 0% | — |
| 6 | CHI | 12-7 | 12 | 0 | 0 | 0 | 17 | 60 | 1 | 0% | — |
| 7 | GB | 23-21 | 10.6 | 2 | 2 | 13 | 20 | 73 | 0 | 6.3% | — |
| 8 | IND | 17-16 | 2 | 0 | 0 | 0 | 8 | 20 | 0 | 0% | — |
| 9 | MIN | 17-20 | 5.8 | 2 | 2 | -6 | 13 | 44 | 0 | 7.7% | — |
| 10 | PHI | 32-21 | 14.6 | 0 | 0 | 0 | 26 | 86 | 1 | 0% | — |
| 11 | HOU | 23-10 | 5.7 | 0 | 0 | 0 | 15 | 57 | 0 | 0% | — |
| 12 | ATL | 19-13 | 20.5 | 2 | 3 | 20 | 18 | 105 | 1 | 13.6% | — |
| 13 | NYG | 20-20 | 13.1 | 2 | 2 | 15 | 21 | 96 | 0 | 5% | — |
| 15 | NYG | 12-20 | 11.7 | 1 | 1 | 18 | 12 | 89 | 0 | 3.7% | — |
| 16 | SF | 20-37 | 5.8 | 0 | 1 | 0 | 22 | 58 | 0 | 2.9% | — |
| 17 | CLE | 10-24 | 8.7 | 0 | 1 | 0 | 24 | 87 | 0 | 3.6% | — |
| Receptions | 9 |
| Targets | 12 |
| Receiving yards | 60 |
| Carries | 205 |
| Rushing yards | 797 |
| Touchdowns | 3 |
| Points per game | 9.39 |
| Yards per target | 5 |
| Catch rate | 75% |
| Yards per carry | 3.89 |
| Target share | 3.57% |
| Air-yards share | -0.41% |
| WOPR | 0.049 |
| RACR | -0.147 |
| Average depth of target | -0.9 |
| Yards after catch per reception | 8 |
| Yards before catch per reception | -1.3 |
| Total YAC | 72 |
| Broken tackles | 2 |
| Drop rate | 0.1% |
| Passer rating when targeted | 78.5 |
| Rushing yards over expected | 0 |
| Receiving EPA per game | -0.17 |
| Rushing EPA per game | -0.52 |
| Red-zone targets | 1 |
| Red-zone target share | 1.6% |
| End-zone target share | 0% |
| Red-zone carry share | 29.6% |
| Goal-line carry share | 37.5% |
| Expected receiving TDs | 0.13 |
| Actual receiving TDs | 1 |
| Receiving TD luck | 0.87 |
| Expected rushing TDs | 5.03 |
Against everyone in the 100+ carries pool that season:
| Points per game | 33 of 42 |
| Yards per target | 23 of 42 |
| Target share | 39 of 42 |
| Air-yards share | 29 of 42 |
The offense threw it 554 times. 2 team-mates cleared the competing-target threshold.
| Terry McLaurin | 22.6% |
| Curtis Samuel | 17.33% |
| Logan Thomas | 11.49% |
| Jahan Dotson | 11.49% |
| Antonio Gibson | 10.92% |
| J.D. McKissic | 7.53% |
He caught passes from 2 quarterbacks that season, and the splits are not close.
| QB | Games | Targets | PPG | Y/T | Tgt% |
|---|---|---|---|---|---|
| Taylor Heinicke | 9 | 11 | 9.98 | 5.45 | 4.36% |
| Carson Wentz | 3 | 1 | 7.63 | 0 | 1.2% |
1 of his 12 games were blowouts, 5.2% of his snaps coming in them. He averaged 5.8 in those and 9.74 in close games — his scoring did not depend on garbage time.
Ask the Coach about Brian Robinson →