Preseason Analysis

Carver Willis Graded Last Among The 49ers Linemen A Week After Grading First On The Team

A player-by-player read of the grades from Thursday's 41-17 win at the Chargers. PFF put the rookie who started at left guard last of the eleven San Francisco linemen it charted, and put the man who took the other left guard snaps second among every lineman on the field. Nine days until the roster is due.

SK
Sam KezarAug 22, 20266 min read
Every call on this site goes on a public ledger and gets graded. The misses stay up.
Bryson Eason in a white 49ers practice jersey, number 67, airborne with both hands raised to bat down a pass during a drill on the Santa Clara practice fields, a coach at the left edge and two teammates in white practice jerseys standing behind him. This is a camp photograph and not from Thursday's game at the Chargers, in which Eason played 26 defensive snaps.

Thursday's 41-17 win at SoFi Stadium was worth one line of orientation and no more than that. The men in it are the story, because on August 30 at 3:00pm PT this roster goes from 90 to 53 and there is one game left.

What follows is those men, one at a time, against the grading layer the morning after could not carry. The caveat governs everything below: these are one vendor's numbers on samples measured in dozens of snaps, against another team's reserves, in a game nobody gameplanned. A Pro Football Focus grade is a place to look. It is not a verdict, and where the tape and the number point different directions, both are printed.

The left guard graded last, and the man beside him graded second in the game#

Carver Willis started at left guard and played 42 offensive snaps, more than any other San Francisco guard. PFF made him the lowest-graded of the eleven 49ers offensive linemen it charted, at 40.0, with a 41.1 run-blocking grade and a 44.4 in pass protection. He allowed two pressures on 24 pass-blocking snaps.

That is the same rookie who, seven days earlier against Tennessee, was PFF's highest-graded 49er on the field. He graded first among all 23 San Francisco players charted as run blockers in that game, and he played left tackle in it, 33 snaps of it. Part of what changed on Thursday is where he lined up. On Thursday only Colton McKivitz, who played 12 offensive snaps to Willis's 42, graded lower among the linemen in the phase Willis had just led the roster in.

Nick Zakelj played 38 snaps at left guard and graded second among every offensive lineman in the game, either team, at 72.9. Only Brandon Parker, at 74.5, graded higher, and Parker played right tackle for 25 snaps and was not charged with a pressure on 15 in protection. Zakelj was charged with one on 20.

Print the other half of that before it gets used for anything. Zakelj was released on August 10, three days before the Tennessee game, and re-signed on August 17. He was not on this roster for the first preseason game and did not play in it, so Thursday's 38 snaps are his entire preseason and there is no second game to check them against. Willis has 75 snaps across two. One of those two numbers is a sample and the other is an appearance.

He is also still missing from the club's own roster page, six days after the club announced it had signed him.

He is also not on the list of men competing for the job. Kyle Shanahan, asked about left guard after the game, named three: "The guys that are battling, they haven't all had a consistent three weeks or month to do it, especially Carver just coming back missing those first two weeks. And now Robert Jones is out. Connor Colby, he's been getting a lot of reps there too." Kirk Larrabee's own list at 49ers Webzone added Austen Pleasants and stopped there.

The rest of the room did not help. Connor Colby opened at right guard for 45 snaps and graded 49.6. Pleasants started at left tackle, moved inside, and left in the third quarter with a knee injury; he was PFF's lowest-graded pass-blocking lineman on the team at 29.1 and tied Enrique Cruz Jr. for the most pressures allowed by anyone in the game, four apiece. Robert Jones did not dress.

Shanahan on the timeline: "It's going to go down to the wire." Asked whether it could run past Week 1, "Possibly. We've got to pick one for week one, and hopefully one of those guys will separate themselves."

Two rookies had the best defensive night on this roster#

James Thompson Jr. was PFF's highest-graded 49ers defender at 90.3, its highest-graded 49ers pass rusher at 80.8, and its highest-graded 49ers run defender at 79.8. He played 26 defensive snaps.

Print the rest of that denominator, because it is the caution. Thompson was credited with one pressure on 17 pass-rushing snaps. A grade that high on production that thin is a model paying for how a rep looked rather than what it produced. The model may be right. It is 26 snaps.

Bryson Eason played 26 as well and took PFF's fourth-highest defensive grade on the team, behind Thompson, Jack Jones and Ogbo Okoronkwo. Jason Aponte of Niners Nation credited him with a batted pass and a team-high 88.4 in PFF's true pass rush measure. Eason also had the best defensive grade on the roster against Tennessee, which makes Thursday the second straight game he has finished near the top of it.

Neither is inside the 53 on the tracker this beat maintains. Matt Maiocco's third roster projection of the camp moved between them: "Last week, we gave the edge to James Thompson Jr. Now, we're shifting to Eason, while also giving strong consideration to Sebastian Valdez." It moved off the man the grades liked best.

Alfred Collins had a quiet grade and one loud rep#

Collins started, played 20 defensive snaps and graded 56.1. Five of the eleven San Francisco defensive linemen who played took more snaps than he did, all of them reserves, and PFF graded eight of the eleven above him.

That is the number. The tape, per Aponte, says something else about one rep: Collins "wasn't credited with a pressure, but shed RG Cole Strange with a quick swipe and was bearing down on Justin Herbert." Charting pays for the pressure. It does not pay for the swipe that did not quite arrive, and on 20 snaps that difference is the whole grade.

The backup running back job splits by down#

Sincere McCormick gained the most rushing yards of anyone on the field, 53 on six carries with a touchdown, and PFF graded him third of the four 49ers backs as a runner at 67.4. Khalil Herbert's 78.9 was the highest rushing grade in the game. Kaelon Black graded 71.8 on eight carries for 33 yards. Zamir White, on a team-high 12 carries for 29 yards, graded 49.1, the lowest of any back in the game.

McCormick's long run came with help. Aponte has Brayden Willis, taking snaps at fullback, springing it with a seal block.

And PFF made McCormick the team's lowest-graded pass blocker. For a back competing to be third or fourth in a Kyle Shanahan backfield, that is the half of the job that decides it. Aponte points the same way from the other end: Black's pass protection "shouldn't go unnoticed," and "the quickest way to find yourself in Kyle Shanahan's doghouse is to miss a blocking assignment."

Shanahan on Black, who was in his second day back from an adductor injury: "He ran real physical. We'd love to keep him in there a little bit longer, but being his second day back, we were smart with him."

Jack Jones confirmed it. Darrell Luter did not.#

Jones played 29 defensive snaps, took PFF's best coverage grade on the team at 89.9, allowed no catch on two targets and broke up two passes. Deommodore Lenoir was next at 76.8. Renardo Green graded 45.1 before his hamstring took him out after nine snaps.

Darrell Luter Jr. played 42, tied with Jalen Stroman for the most on the defense, and graded 57.2. Among the six cornerbacks who finished the game, PFF put his coverage last. He played 45 against Tennessee, second to Ephesians Prysock's 53. Across two preseason games he has been given as much work as any corner here and has not once been graded near the top of the room. Maiocco's projection has him on the 53. The tracker here has him at 3 and outside, and that gap is now two games old.

Two more, further down. Larry Worth III, a 21-year-old rookie out of Arkansas, played 18 snaps and graded 71.6, and PFF's coverage grades put him third on the defense behind Jones and Lenoir. He is not on this board at all. At safety the direction reverses: Jalen Stroman played 42 snaps and graded 37.5, and Ashtyn Davis, who sits on the tracker as the fourth safety and inside the 53, was PFF's lowest-graded 49ers defender at 29.7.

The rookie receiver, and nine days#

De'Zhaun Stribling was the highest-graded 49er on the field at 90.5, with the best receiving grade on the team at 85.1, on four catches for 46 yards and 14 offensive snaps. He also dropped a likely touchdown, which Shanahan declined to wave off: "That's his strength is his hands."

One game remains, Thursday at Las Vegas, 5:00pm PDT at Allegiant Stadium. For most of the men above it is the last one they get.

Sources: official NFL game book, San Francisco at Los Angeles Chargers, August 20, 2026; 49ers.com schedule and roster pages, read August 22; David Bonilla, 49ers Webzone, August 21; Jason Aponte, Niners Nation, August 21; Kirk Larrabee, 49ers Webzone, August 21; Matt Maiocco, NBC Sports Bay Area, August 21.

Filed under 49ers

More on Carver Willis

His page →
Kyle Juszczyk will miss a few weeks and the 49ers have no other fullback
49ers Notebook

Kyle Juszczyk will miss a few weeks and the 49ers have no other fullback

Kyle Shanahan said Monday that Kyle Juszczyk has a hyperextended knee and a bone bruise and will miss a few weeks, that Marques Sigle has a high ankle sprain, and that Upton Stout is day to day with a sprained AC joint. Brayden Willis, Luke Farrell and George Kittle share the fullback's work. Nick Bosa and James Thompson Jr. are probably out again at Seattle; Mykel Williams could be activated.

Sam KezarOct 5, 20263 min read
San Francisco won by 20 without a sack. Miami gave up five.
Game Week

San Francisco won by 20 without a sack. Miami gave up five.

San Francisco hosts Miami at 1:25 p.m. Pacific on FOX in its home opener. The 49ers beat the Rams 27-7 in Melbourne without a sack, taking eight quarterback hits instead, four of them by Osa Odighizuwa. Miami lost 27-13 at Las Vegas behind Malik Willis, who was sacked five times. Eddy Piñeiro is questionable with an illness that cost him all three practices, and the club auditioned two kickers Saturday and signed neither. Ten men to watch, and the reason the first one is the kicker.

Sam KezarSep 20, 20264 min read
San Francisco Promoted A Fourth Tight End And Worked Out Three More
49ers Roster

San Francisco Promoted A Fourth Tight End And Worked Out Three More

San Francisco promoted tight end Brayden Willis from the practice squad to the active roster on Tuesday morning and signed defensive lineman McKinnley Jackson to the practice squad. The promotion fills the roster spot Alfred Collins vacated on September 10 and puts the active roster back at 53. Hours later the NFL's transaction report showed the club had worked out five players, three of them tight ends. Jake Tonges, who played eight snaps in Melbourne before he was hurt, remains on the active roster with no injury designation and no published imaging result, and the club's Week 2 injury report does not exist yet. Willis has played 23 regular-season games, all with the 49ers, and has no career receptions.

Sam KezarSep 15, 20264 min read

More on Jack Jones

His page →
Jack Jones is the roster spot the Buckner trade cost
49ers Notebook

Jack Jones is the roster spot the Buckner trade cost

The 49ers announced the DeForest Buckner trade Wednesday afternoon, a 2027 fourth-round pick to Indianapolis, and released cornerback Jack Jones to open the roster spot. Jones was active for all seven games and played 23 of 68 defensive snaps in the loss at Atlanta, per the official game book. The active roster now carries ten defensive linemen and five cornerbacks, and it is full at 53. Nick Wagoner of ESPN said Wednesday he would be surprised if the 49ers made no further move before the Nov. 10 trade deadline.

Sam KezarOct 28, 20263 min read
Nick Bosa Practised For The First Time Since August 3
Camp Notebook

Nick Bosa Practised For The First Time Since August 3

Nick Bosa practised Wednesday for the first time since August 3, in individual drills and in team periods, per Nick Wagoner at ESPN. It is his first full practice since he tore the right anterior cruciate ligament in Week 3 of last season. He said afterwards that once a session reaches team work there is no governor on it, and that he is confident about Week 1. Ian Rapoport reported Wednesday morning that Bosa and George Kittle both travel to Australia. Kittle has now had three straight days of team work, dated to Monday by John Lynch. Six players sat out, three fewer than Tuesday: Renardo Green, Jacob Cowing, Luke Gifford, Gracen Halton, Romello Height and James Thompson Jr. Jack Jones was on neither list and did no work with the team. Left guard is still not named. The club hosted defensive tackle McKinnley Jackson on a visit and signed nobody.

Sam KezarSep 2, 20264 min read
Jack Jones Broke Up Two Passes At The Chargers. Nate Hobbs Has Not Played A Preseason Snap.
Camp Battles

Jack Jones Broke Up Two Passes At The Chargers. Nate Hobbs Has Not Played A Preseason Snap.

The official game book from Thursday night at SoFi Stadium credits Jack Jones with two passes defensed, the most by any 49er in a game the team finished with seven, and 29 of San Francisco's 59 defensive snaps. Nate Hobbs pulled a groin at the joint practice with Tennessee on August 11 and does not appear on the participation page of either preseason game. Kyle Shanahan said on August 13 that Hobbs would be out a few weeks. The roster is due Sunday, August 30 at 3:00pm PT. This board moves Jones from 5 to 7 and inside the projected 53, and Hobbs from 6 to 5 and outside it.

Sam KezarAug 21, 20266 min read

On the record

Called Shots →
Held upAug 5, 2026

Connor Colby is listed as San Francisco's starting left guard in the official starting lineup of the 49ers' Week 1 game against the Los Angeles Rams on 2026-09-10. If Robert Jones, Carver Willis, Brett Toth or anybody else starts there, the take is scored wrong.

Filed on the day the reporting went the other way, which is the point of filing it today. David Lombardi had Robert Jones taking the first-team left guard reps at the August 5 practice, the first published rep at the position since July 26. Chris Foerster's own explanation for it was that the staff wanted to keep moving Colby around, including at right guard, and that Carver Willis in concussion protocol and an undisclosed injury to Brett Toth limited that plan. So the alignment was a consequence of two absences rather than a decision about Colby, and the only unforced statement anybody has made about this competition is still Foerster's from the opening Sunday, when Colby took all the first-team reps and nobody had done anything to beat him out. What would make me wrong: Jones holding the first-team reps once Willis and Toth are back.

Latest on the 49ers

The whole beat →
The 49ers ran Las Vegas out of its plan before they took the ball away
49ers Deep Dive

The 49ers ran Las Vegas out of its plan before they took the ball away

San Francisco beat Las Vegas 38-17 on Sunday and is 7-1. The five second-half takeaways will be remembered, but the game was settled earlier. The 49ers' first three drives went 37 plays and 242 yards, took 19 minutes and 23 seconds and ended in touchdowns, and San Francisco ran 25 times for 125 yards before halftime. Las Vegas had the ball for 71 seconds in the first 13 minutes. Trailing by 11 at the half, the Raiders ran six times and threw 24 times after it, and Klint Kubiak said that being in position to throw on every down produces interceptions. The pass rush did not cause the turnovers: Cousins was hit twice on eight first-half throws and four times on 24 second-half throws. Two takeaways were punched out of receivers' hands, and one came off a fumbled exchange. The second half also showed a cost. San Francisco threw an interception, was stopped on fourth-and-1 at its own 40, and allowed 222 kickoff-return yards, and Las Vegas started three drives in 49ers territory. The game moved San Francisco's season turnover margin from minus-3 to plus-1. Las Vegas has now allowed 30 or more points six weeks running, so Dallas on Sunday is the first test of whether the formula holds.

Sam KezarNov 10, 20266 min read
The 49ers trade a sixth-round pick for Keenan Allen
49ers Notebook

The 49ers trade a sixth-round pick for Keenan Allen

San Francisco acquired wide receiver Keenan Allen from Indianapolis on Tuesday, deadline day, for a 2027 sixth-round pick, the league transaction wire shows. It is the second trade between the clubs in three weeks, after DeForest Buckner on Oct. 27. Allen, 34, played at Cal and is a six-time Pro Bowler with 1,095 career catches, eighth all time. He had 40 catches for 351 yards and one touchdown in eight games for the Colts, their team lead. The club placed Gracen Halton on injured reserve with a fractured ankle the same afternoon, and its roster page showed 52 on the active roster before Allen was added. Allen joins a receiver room missing Mike Evans and Deebo Samuel Sr. last Sunday. He caught four passes for 26 yards against Dallas in Week 9, and the 49ers play at Dallas on Sunday.

Sam KezarNov 10, 20263 min read
Five takeaways in one half, and the 49ers never sacked Kirk Cousins
Takeaways

Five takeaways in one half, and the 49ers never sacked Kirk Cousins

San Francisco beat Las Vegas 38-17 at Levi's Stadium on Sunday and is 7-1. The 49ers scored touchdowns on their first three possessions, did not punt, and ran 43 times for 190 yards. Las Vegas turned the ball over on five of its six second-half possessions: Jaden Dugger's 35-yard interception return on the first play of the half, two forced fumbles, and interceptions by Renardo Green and Malik Mustapha. The official game book credits San Francisco with no sacks and six quarterback hits, two of them on the plays Green and Mustapha intercepted. Nick Bosa played 39 of 50 defensive snaps in his first game since Sept. 20, and DeForest Buckner played 34. Jordan Watkins caught all four of his targets for 86 yards and his first NFL touchdown. Christian McCaffrey's 12-yard catch set the Super Bowl-era record for touchdown catches by a running back and was Brock Purdy's 100th touchdown pass. Gracen Halton broke his ankle and is out for the season, Shanahan said; Green (back) and Deommodore Lenoir (foot) did not return.

Sam KezarNov 9, 20265 min read

Earlier on the 49ers

Denver built Sunday's zero. The hits that left with Bosa were Odighizuwa's
49ers Deep Dive

Denver built Sunday's zero. The hits that left with Bosa were Odighizuwa's

San Francisco did not sack Bo Nix in Sunday's 24-14 win over Denver and hit him twice, both in the fourth quarter. The zero was mostly Denver's design: Nix threw 36 of 42 passes short, Denver had allowed five sacks in three games, and the 49ers' own priority was keeping Nix in the pocket, which held him to two scrambles. The season numbers say something else. With Nick Bosa the 49ers were credited with 13 quarterback hits on 55 opponent pass plays; without him, 7 on 96. Bosa had one of the 13. Osa Odighizuwa had five, and he has had none since Bosa got hurt. Bosa is not expected back for Seattle.

Sam KezarOct 6, 20266 min read
The Injury List Picked Wednesday's Left Guard
Camp Notebook

The Injury List Picked Wednesday's Left Guard

The 49ers practiced Wednesday with 18 of their active 90 unavailable and the top five receivers they entered camp with all among them. Robert Jones took the first-team left guard reps, per David Lombardi, and Chris Foerster explained it as a plan to move Connor Colby around that the injuries to Carver Willis and Brett Toth cut short. Brock Purdy went 13 of 14. Two more players left during practice. Nobody who filed on the session reported a kick return by anybody, which is inconvenient for a call this site made Wednesday morning.

Sam KezarAug 6, 20264 min read
Four Transactions, Three Skirmishes, And Not One Word About Left Guard
Camp

Four Transactions, Three Skirmishes, And Not One Word About Left Guard

The fourth practice of camp and the first with contact. Four roster moves, three of the last four subtractions out of the same January class, a Wednesday tryout that became a Friday signing, and no line play reported by anyone.

Sam KezarJul 31, 20264 min read