49ERS MOCK DRAFT GRADE B

Soft swarm B

URL soft-swarm-49ers-5143

Letter grade with a four-component score, written analysis, and a pick-by-pick breakdown for every selection in this saved mock.

My Mock Drafts →
Grade another draft →
B

San Francisco 49ers

A respectable, level-headed haul for the 49ers: B.

by Iowradar · 2026 NFL Draft · 10 picks · 4 steals · 5 reaches
Value B-
Need B
Trades B-
Future B

This is the pick they will still be bragging about in July: A.J. Haulcy, the No. 50 name on the board, stolen at Round 3, Pick 14.

They will need Heidenreich to outplay his draft slot in a hurry to justify it. For all the activity, running back went untouched, which is hard to explain.

All told, a draft that does its job without fuss, and there is real value in that.

Pick-by-Pick

R2.15 · Pick 47 · Gabe Jacas · LB-EDGE · rank 52
Gabe Jacas in pick 47 is exactly on the number, no argument either way. It patches a soft spot without any drama.
R2.26 · Pick 58 · Blake Miller · OT · rank 45
Blake Miller slid further than he should have, and No. 58 is lovely value for the offensive lineman. They walked in needing this and walked out with it.
R3.14 · Pick 78 · A.J. Haulcy · S · rank 50
They barely believed it either: A.J. Haulcy still on the board at Round 3, Pick 14. Useful depth more than a marquee fix.
R4.13 · Pick 113 · Justin Joly · TE · rank 122
Justin Joly in pick 113 is the kind of reach that only looks good if he outplays it. It plugs a real leak on the depth chart.
R4.27 · Pick 127 · Malik Muhammad · CB · rank 99
Malik Muhammad in the 127th pick is the kind of fall that makes a whole class. Not urgent, but hardly pointless.
R4.33 · Pick 133 · Kevin Coleman Jr. · WR · rank 162
Kevin Coleman Jr. at pick No. 133 is a steep price for a hunch, hard to square with any board. A glaring weakness, addressed head on.
R4.39 · Pick 139 · Zxavian Harris · DT · rank 154
They liked Zxavian Harris enough to skip the value, taking him in the 139th overall pick. It also answers one of the loudest questions on the roster.
R5.7 · Pick 147 · Beau Stephens · OG · rank 158
They jumped the gun on Beau Stephens, taking him earlier than his grade liked. Better still, it is exactly the hole they had to fill.
R6.28 · Pick 209 · Eli Heidenreich · WR · rank 239
A swing that ignored the value entirely, Eli Heidenreich well ahead of where he belonged. This was priority one on the needs board, and now it is handled.
R7.38 · Pick 254 · Trey Zuhn III · OT · rank 246
They stopped a slide they were happy to see, landing Trey Zuhn III in slot 254. A must-fix position, and they treated it like one.