49ers
Preseason Analysis

Carver Willis Was The Best Run Blocker And Nearly The Worst Pass Protector

One rookie lineman graded at both ends of the same night, the man listed ahead of him graded last of every 49er on offense, and by Sunday the club had two guard jobs open instead of one. What the preseason opener actually decided, player by player.

SK
Sam KezarAug 16, 20266 min read
Every call on this site goes on a public ledger and gets graded. The misses stay up.
Gracen Halton, number 93, in a 49ers white practice jersey over a red long-sleeve shirt, smiling on the practice field with teammates stretching out of focus behind him. This is a training camp photograph and not from Thursday's preseason game, in which Halton played.

A preseason score is not information. The men who played in it are, and Thursday's 19-13 loss to Tennessee produced a set of grades that point in directions worth following for the sixteen days until this roster is cut to 53.

Start with the caveat, because it governs everything below. A preseason grade sits on a sample measured in dozens of snaps, against another team's backups, in a game neither side gameplanned. Every ranking here is what one vendor's model made of one short night. None of it is a verdict. All of it is a place to look.

The rookie who graded at both ends of the same game#

PFF's grades put Carver Willis, No. 74, first among all 23 49ers charted as run blockers, and near the bottom of the fifteen charted in pass protection. Same player, same night, opposite ends of the same table.

That is a coherent picture rather than a contradiction. The fourth-round rookie out of Washington came off the concussion protocol on August 10, had been taking second-team left guard reps, and played tackle on Thursday. A lineman who can move people but cannot yet handle a rusher one on one is a specific kind of roster asset, and a specific kind of risk: useful on early downs, exposed on third.

It also frames what happens next. Willis has two preseason games to close the pass-protection half, and the club has shown it will move him around while he does it.

Robert Jones graded last of every 49er charted on offense#

No qualifier available. The man the club's first unofficial depth chart listed as the starting left guard finished last among every 49er charted on offense, and last on the line in pass blocking. He also drew the offensive holding penalty that erased a 21-yard completion in the first quarter.

One correction, because the framing has been circulating wrong. Jones and Connor Colby did not compete head to head on Thursday. The official gamebook has Jones starting at left guard and Colby starting at right guard, in the same lineup, for the same night's work. A quality comparison between them is fair. A story where one beat the other for a job that night is not, because that job was not on the field.

Connor Colby graded fifth, and then the position changed underneath him#

Colby, No. 75, was the best of the five men who started on the line by PFF's grades, fifth among all 49ers charted on offense, with no penalty. The second-year guard out of Iowa opened camp taking the first-team left guard reps, moved right when Jones was listed there, and by Saturday was rotating back through the left side.

The job did not close. It reopened. Kyle Shanahan, on the record Saturday: "There definitely is a battle there. It's open for anybody." Two independent reports had Colby and Willis rotating with the first team.

And on Sunday it doubled. Dominick Puni entered the concussion protocol, which takes a projected starting guard off the field with sixteen days to go. The 49ers no longer have one guard question. They have two, at the same time, with the same small group of men available to answer them.

What a grade can see, and what it cannot#

This is the part worth being careful about, because the numbers above are doing real work in this piece and they have a known blind spot.

A grading model watching from outside the building does not know a team's protection rules. When a blitzer comes free, somebody has to be charged for it, and the model assigns by what it can observe rather than by which lineman actually owned that gap on that call. John Chapman, a former coach who publishes film reviews at 49ers Rush, has made this argument specifically about this game, and it is the right argument to make: on at least one snap the pressure that reached the quarterback was, in his reading of San Francisco's rules, a different lineman's responsibility than the one the ledger reflects.

That is a limitation, not a scandal. It is also why blocking grades are the least reliable category in any grading system, and why a rank like Hayden Rucci's, No. 83, in the bottom half of the 49ers charted as run blockers, is a flag to go watch rather than a fact about the player. Assignment is invisible from the outside. Outcome is not.

The pass rusher whose problem is not effort#

PFF's grades put Romello Height, No. 94, among the three lowest-rated 49ers defenders in the game.

The context makes it matter more, not less. Height has been taking first-string edge reps opposite Keion White with Nick Bosa held out and Mykel Williams on the physically unable to perform list. He has had the best opportunity of any young 49ers pass rusher this camp and has not yet converted it into game production. The gap between what a player does in a one-on-one drill and what he does with a pocket to preserve and a second defender in the picture is the whole distance between a camp story and a roster spot, and Thursday said he has not closed it.

Two games left to change that number, and the reps will be there while Bosa is not.

The defensive line grades went to the players nobody wrote about#

Bryson Eason, No. 67, an undrafted rookie, posted the best defensive grade on the roster that night. Gracen Halton, No. 93, the fourth-round rookie out of Oklahoma, was among the better ones: four tackles, a tackle for loss, and a sack of Cam Ward wiped out by a penalty on a teammate, which means his best play of the night exists in no statistic at all.

That last detail is the argument for watching football rather than reading about it. The box score has no column for a sack that a flag erased.

Meanwhile the corner room thinned in a week. Jack Jones hurt a hand, Nate Hobbs pulled a groin at the joint practice, and the club held tryouts for defensive backs. Darrell Luter Jr., No. 28, and Ephesians Prysock, No. 35, went from depth to one injury away from a Sunday role, and Prysock played more defensive snaps than any other 49er in the game, per the counts Kyle Posey published at Niners Nation.

A ranking is only as good as the snaps under it#

Jordan Watkins, No. 17, grades poorly as a run blocker, on a real sample. He was on the field more than any other 49ers receiver and blocked on a full night's worth of running plays, so the rank means something.

Wesley Grimes, No. 18, played 13 snaps. His blocking rank rests on a handful of plays, and on that sliver he grades lower than Watkins does.

Neither of those facts is worth much on its own, and putting them side by side is worth less. This is the most common way a preseason argument goes wrong: a number built on a full game gets compared to a number built on three plays, and the comparison looks rigorous because both sides have a figure attached. Print the denominator or drop the point.

Kurtis Rourke, and the thing that is not his ribs#

Rourke, No. 14, completed 12 of 14 for 101 yards before he left, and the club's account is that stadium X-rays showed nothing broken. He was not diagnosed with broken ribs, and no imaging beyond that has been published. He was released from hospital Thursday night.

Adrian Martinez, No. 4, threw the rest: 16 of 30 for 159 yards. A 53 percent completion rate on 30 attempts and an 86 percent rate on 14 are not comparable samples, and the honest version is that the club got 18 minutes of the quarterback it wanted to see and then two and a half quarters of something else.


What Thursday decided: nothing. What it produced is a short list of answerable questions for August 20 at the Chargers. Whether Willis's pass protection catches up to his run blocking. Whether Height gets to the quarterback instead of past him. Which two of Colby, Willis, Jones and a healthy Puni are standing at guard when the roster is set on September 1.

Those are checkable in four days, which is more than a preseason score will ever be.

Correction, 2026-08-17

This piece stated that the roster is set on September 1. The NFL's 2026 cutdown deadline is 3 p.m. PT on Sunday, August 30, and waiver claims are awarded at 10 a.m. PT on Monday, August 31. The guard question the piece poses is unchanged and is settled two days earlier than published.

DS


Sources and method. Grades are PFF's and are described here only as rankings; this site does not publish subscriber grade values. Starting lineups are from the official gamebook, passing and rushing lines from the ESPN box score, snap counts as published by Kyle Posey at Niners Nation on August 14, and Shanahan's quotation from his Saturday availability. The argument about protection rules is John Chapman's, made on his 49ers Rush film review.

Filed under 49ers

More on Connor Colby

His page →
Week 1 Takeaways

San Francisco Stopped The Rams On Fourth And One At Its Own 1, Then Drove 99 Yards

The 49ers opened 1-0 with a 27-7 win over the Rams at the Melbourne Cricket Ground, Thursday evening in the Bay Area and Friday morning in Australia. Los Angeles reached the San Francisco 1 in the third quarter and turned the ball over on downs; San Francisco answered with an 11-play, 99-yard touchdown drive. Connor Colby started at left guard and the whole line played every snap, George Kittle played 30 of 65 in his return, Kaelon Black carried more often than Christian McCaffrey, and De'Zhaun Stribling started at receiver without being thrown to. Nine takeaways off the official game book.

Sam KezarSep 11, 20265 min read
San Francisco Stopped The Rams On Fourth And One At Its Own 1, Then Drove 99 Yards
Depth Chart

Connor Colby And Kaelon Black Fill The Two Jobs Shanahan Called Fluid

San Francisco's public depth chart carried an empty box at left guard from August 27 until this week. Read at 2:52 p.m. Pacific on Sunday, it is stamped 09/4/26 and lists Connor Colby first at left guard and Carver Willis second. It also lists Kaelon Black second at running back ahead of Jordan James, which is the other job Kyle Shanahan called fluid on August 31, and George Kittle and Nick Bosa as starters. Colby was the incumbent in July, was passed by Robert Jones and then by Willis in August, and is first again on the club's own page. Jarrett Patterson, traded for to compete at guard, is listed second at center. The chart predates three roster moves and has one empty box left, at long snapper. The first Melbourne practice is Sunday at 7:50 p.m. Pacific.

Sam KezarSep 6, 20264 min read
Connor Colby And Kaelon Black Fill The Two Jobs Shanahan Called Fluid
Camp Battles

The 49ers Have Two Depth Charts And Only One Of Them Has A Left Guard

The depth chart at 49ers.com carries twenty-nine position rows and a name in the first column of twenty-eight of them. Left guard is the twenty-ninth, its first column is empty, and the page stamps itself August 27, which was eight days ago. A separate one-page sheet dated September 2 lists Connor Colby first at left guard and Carver Willis second, and the club does not publish it: the media site its own pronunciation guide points to refuses a request from outside. Kyle Madson of Niners Wire reports that the sheet is assembled by the communications staff with no input from the coaches and binds nobody. Kyle Shanahan said on August 31 that he did not know who starts, and nothing since has replaced that. Seven of the seventy-two men still named on the club's live chart are on the September 2 sheet's injured reserve list, three of them offensive linemen.

Grant LombardSep 4, 20265 min read
The 49ers Have Two Depth Charts And Only One Of Them Has A Left Guard

More on Dominick Puni

His page →
Camp Notebook

Kurtis Rourke Has Three Broken Ribs And Does Not Play Tonight

Kyle Shanahan confirmed on Tuesday that Kurtis Rourke broke three ribs in the preseason opener, twelve days after the club said the X-rays taken in the stadium showed nothing broken and sent him to hospital for more imaging. Rourke does not play in Thursday's finale at Las Vegas and Adrian Martinez takes the last game of the third quarterback competition. Shanahan also named Christian Kirk and Vederian Lowe as candidates to open the regular season on injured reserve, a designation that costs each of them at least the first four games and costs San Francisco a roster spot on Sunday; said Dominick Puni is most likely back in the concussion protocol; put Nick Bosa, Jacob Cowing, Upton Stout and Mike Evans back at practice next week rather than this one; and left the left guard job to Connor Colby and Carver Willis with Robert Jones hurt. The club signed defensive lineman Jah Joyner on Thursday morning and placed Victor Dimukeje on injured reserve to make room.

Sam KezarAug 27, 20263 min read
Kurtis Rourke Has Three Broken Ribs And Does Not Play Tonight
Camp Notebook

Left Guard Is Down To Two And The Last Practice Of Camp Is Over

San Francisco practised for the last time in training camp on Tuesday morning and Kyle Shanahan said afterwards that the left guard competition is close to being decided between Connor Colby and Carver Willis, with Robert Jones removed from it by a calf injury Shanahan put at around the Australia trip. Matt Maiocco had Willis taking the first-team snaps. Dominick Puni practised and then reported residual symptoms and is most likely back in the concussion protocol. Shanahan named Christian Kirk and Vederian Lowe as possible candidates to start the season on injured reserve, hedging both. Mike Evans, Jacob Cowing, Upton Stout, Romello Height, Kyle Juszczyk, Kirk, Kurtis Rourke and Nick Bosa did not practise across two published absence lists that do not match. Height's injury is an ankle and Juszczyk's finger is fractured. The 49ers play at Las Vegas on Thursday at 5:00 p.m. PDT and the roster is due at 53 at 3:00 p.m. PT on Sunday.

Sam KezarAug 25, 20264 min read
Left Guard Is Down To Two And The Last Practice Of Camp Is Over
Camp Notebook

Both Of The 49ers' Outside Cornerbacks Missed The Same Practice

The 49ers announced shoulder injuries for cornerback Deommodore Lenoir and rookie receiver De'Zhaun Stribling on Saturday, calling both day-to-day, and Renardo Green did not practice two days after the hamstring that took him out of the Chargers game. Jordan James practiced for the first time this camp, and Dominick Puni and C.J. West cleared the concussion protocol. Nick Bosa and Christian McCaffrey were not in a session Kyle Shanahan had described them as on track for. Eight days to the cutdown, and nothing crossed the line on the 53-man tracker.

Sam KezarAug 22, 20263 min read
Both Of The 49ers' Outside Cornerbacks Missed The Same Practice

On the record

Called Shots →
Held upJul 27, 2026

Connor Colby is the 49ers' starting left guard in the Week 1 game against the Los Angeles Rams on 2026-09-10. Scored off the official starting lineup for that game: Colby listed at left guard is a hit, any other player listed at left guard is a miss, including if Colby is unavailable through injury.

Made in the Camp Battles left guard primer. The basis is incumbency plus the calendar: Colby took all of the first-team left guard reps at the opening practice (Wagoner, ESPN, Jul 26), has roughly 450 snaps in this offense from six starts as a rookie, and Robert Jones has none while coming off a 2025 season lost to a neck injury. The call is genuinely at risk, and the falsifier is named in the piece: Jones opening the August 13 preseason game against Tennessee with the starters. Hurley's Niners Nation board already has Jones starting and Colby at backup right guard.

Latest on the 49ers

The whole beat →
Week 2 Analysis

Opponents have reached the 49ers' red zone five times and scored one touchdown

Two days after the 35-13 win over Miami, the two game books describe a defense that is hard to finish against and easy to move against. Opponents have gained 5.1 yards a play in both games and reached the San Francisco 20 five times for one touchdown. Miami spent 19:17 on its first three possessions and got six points, twice reaching goal to go and twice kicking. San Francisco's first four sacks of the season came either inside its own red zone or with a lead of 15 or more, and Nick Bosa is credited with none of them, and with no quarterback hit either, on 40 of 59 defensive snaps. PFF's charting of the same game puts him ahead of every other 49er in total pressures.

Sam KezarSep 22, 20266 min read
Opponents have reached the 49ers' red zone five times and scored one touchdown
49ers Takeaways

Week 2 takeaways: five touchdowns before San Francisco's first punt

San Francisco is 2-0 after a 35-13 win over Miami in the home opener. The 49ers scored touchdowns on their first five drives and did not punt until 10:38 of the fourth quarter. Purdy was 20 of 22 for 287 yards and two touchdowns with a 149.1 rating and no sack taken. The defense recorded four sacks after none in Week 1, from Marques Sigle, Keion White, Romello Height and a Warner-Stout split, none from Bosa. Miami had first and goal twice and came away with six points. Eddy Piñeiro, the kicker the week was spent on, attempted no field goal.

Sam KezarSep 21, 20265 min read
Week 2 takeaways: five touchdowns before San Francisco's first punt
49ers Roster

The 49ers won by 22 and came out of it needing a receiver and a lineman

Shanahan's Monday conference call produced four injury verdicts. Robinson and Thompson Jr. both have high-ankle sprains at three to six weeks, Robinson most likely to injured reserve. Height broke his hand and has surgery Tuesday, with an outside chance of playing at Arizona. Mike Evans has a hip that will be managed through the week. The receiver room is down to five men on the active roster with three on injured reserve, and the defensive line has now lost three players in two games. Shanahan, asked on Sunday about Leonard Floyd, said the club has already made calls.

Sam KezarSep 21, 20264 min read
The 49ers won by 22 and came out of it needing a receiver and a lineman

Earlier on the 49ers

Camp Notebook

Carver Willis Took The First-Team Left Guard Reps In El Segundo

Notes from Tuesday's joint practice against the Chargers in El Segundo, in order of what they do to the 53. The left guard competition moved, the secondary gave up deep balls to three different men, and a number of starters will play Thursday.

Sam KezarAug 18, 20263 min read
Carver Willis Took The First-Team Left Guard Reps In El Segundo
Camp Notebook

Jack Jones And Marques Sigle Were In Uniform Saturday. The 49ers Signed Nobody.

Jack Jones, No. 25, and Marques Sigle, No. 36, were in uniform for Saturday's 11:50 a.m. practice, two days after leaving the preseason opener with a hand and an oblique. Jacob Cowing, No. 6, was too. Christian McCaffrey (tightness), Nick Bosa (soreness and tendinitis in the surgically repaired knee) and Kurtis Rourke (ribs) did not practise. No transaction has been announced since August 12 on the club's own log and August 13 on ESPN's, and the roster sits at 90 chargeable players against a limit of 90, counted table by table on Saturday afternoon. Thursday's running backs carried 23 times for 52 yards. Nothing on the 53-man projection crossed the cut line.

Sam KezarAug 15, 20263 min read
Jack Jones And Marques Sigle Were In Uniform Saturday. The 49ers Signed Nobody.
Feature

What Kyle Shanahan Has Not Said

The 49ers opened camp this weekend without the man who has run it since 2017. Everything known about how he is has come from somebody else's mouth.

Posey ThompsonJul 26, 20268 min read
What Kyle Shanahan Has Not Said