The San Francisco 49ers improved their record to 10-4 after a 37-24 win against the Tennessee Titans in Week 15. Today, Pro Football Focus released its grades and snap counts from the game. Which Niners stood out, and who needs more work?
Highest-graded 49ers: Offense
- Trent Williams, LT, 95.6, 74 snaps
- Brock Purdy, QB, 91.0, 74 snaps
- George Kittle, TE, 89.8, 71 snaps
- Ricky Pearsall, WR, 88.0, 43 snaps
- Demarcus Robinson, WR, 87.6, 23 snaps
Highest-graded 49ers: Defense
- Clelin Ferrell, DE, 73.0, 39 snaps
- Jason Pinnock, SS, 71.1, 13 snaps
- Upton Stout, CB, 69.3, 37 snaps
- Dee Winters, LB, 65.5, 53 snaps
- CJ West, DT, 58.4, 14 snaps
Lowest-graded 49ers: Offense
- Brian Robinson, RB, 41.9, 12 snaps
- Jake Brendel, C, 50.7, 74 snaps
- Spencer Burford, LG, 52.2, 65 snaps
- Christian McCaffrey, RB, 58.4, 62 snaps
- Dominick Puni, RG, 58.7, 74 snaps
Lowest-graded 49ers: Defense
- Kalia Davis, DT, 29.1, 30 snaps
- Alfred Collins, DT, 29.9, 32 snaps
- Kevin Givens, DT, 32.6, 18 snaps
- Robert Beal Jr., DE, 46.2, 11 snaps
- Renardo Green, CB, 46.7, 52 snaps
Highest-graded Titans
- Kevin Zeitler, RG, 90.9, 37 snaps
- Peter Skoronski, LG, 87.5, 53 snaps
- Brandon Crenshaw-Dickson, LT, 82.0, 10 snaps
- Corey Levin, LT, 81.5, 16 snaps
- Gunnar Helm, TE, 80.9, 26 snaps
Quarterback play
Quarterback Brock Purdy played his most efficient game of the season, finishing 23-of-30 for 295 yards with three touchdowns and zero interceptions. His 140.3 passer rating marked the seventh time in his NFL career he has posted a rating of at least 140.0, tying Hall of Famer Kurt Warner for the most such games by a quarterback in his first four NFL seasons.
Purdy's 91.0 offensive grade and 90.7 passing grade were both season highs and his best marks since Week 3 of the 2024 season (91.1 offensive, 91.8 passing vs. the Rams).
For comparison, Titans quarterback Cam Ward finished 18-of-29 for 170 yards and two touchdowns, earning a 59.1 offensive grade and a 56.8 passing grade.
Highest marks
Left tackle Trent Williams earned the game's best overall grade, posting a career-high 95.6 offensive grade. Williams now owns a 90.2 offensive grade on the season and is on track to surpass the 90.0 mark for the fifth time in the past six seasons.
Just went through Williams' game. He had at lest six knock-down blocks, including this one ... https://t.co/sFHhabmckn pic.twitter.com/7KSTuiWhu1
— Matt Barrows (@mattbarrows) December 15, 2025
The game's best defensive grade belonged to Titans linebacker James Williams (80.1).
Blocking
In addition to earning the game's top overall grade, Trent Williams was also the highest-graded run blocker (95.1) and pass blocker (87.5). He surrendered just one pressure across 41 pass-blocking snaps.
The lowest-graded offensive lineman in the game was center Jake Brendel (50.7), who also earned the lowest run-blocking grade (50.8).
Left guard Spencer Burford posted the worst pass-blocking grade of the game (40.6), allowing a game-high four pressures and one sack.
In total, the 49ers' offensive line surrendered 10 pressures.
Pressures allowed among O-line:- LG Spencer Burford — 4
- RG Dominick Puni — 3
- C Jake Brendel, RT Colton McKivitz, LT Trent Williams — 1 each
Pass Catchers
The game's best receiving grade went to tight end George Kittle (90.1), who caught eight passes for 88 yards and a touchdown on nine targets.
Wide receiver Ricky Pearsall wasn't far behind, earning an 89.2 receiving grade. He finished with six catches for a game-high 96 yards on seven targets and has yet to be credited with a drop this season. According to Pro Football Focus, the only drop of his career came in Week 18 against the Arizona Cardinals.
Kittle was credited with the 49ers' lone drop against the Titans.
Rushing
Quarterback Brock Purdy earned the 49ers' best run grade (71.0) for the third consecutive game. He rushed seven times for 44 yards.
Christian McCaffrey was San Francisco's highest-graded running back (55.5), finishing with 22 carries for 73 yards (6.3 yards per attempt) and a rushing touchdown.
Pass rush
Defensive end Keion White earned the 49ers' best pass-rushing grade (72.5), followed by Clelin Ferrell (61.1).
Titans defensive tackle Jeffery Simmons posted the game's best pass-rushing grade (78.9).
The lowest-graded pass rusher in the game was defensive end Robert Beal Jr. (40.9).
Pressures by 49ers defenders:- DT Alfred Collins, DT Kalia Davis, DE Clelin Ferrell, DE Bryce Huff, DE Keion White — 2 each
- DE Robert Beal Jr. — 1
Run defense
While Titans linebacker Cedric Gray earned the game's best run-defense grade (90.2), linebacker Dee Winters posted the 49ers' highest mark in that category (74.9). It was Winters' best run-defense grade since Week 4 (84.0 vs. the Jaguars).
The lowest-graded run defenders in the game were 49ers defensive tackles Kalia Davis (29.1) and Alfred Collins (29.9). Collins, a rookie, has failed to post a run-defense grade above 50.0 in five of his last seven games, while Davis has been unable to do so in five of his last six.
Pass defense
Safety Jason Pinnock earned the game's best coverage grade (77.8), though he played just five coverage snaps and was not targeted.
Among 49ers defenders with heavier workloads, rookie cornerback Upton Stout earned the top coverage grade (70.7), allowing five receptions for 29 yards on five targets.
Safety Ji'Ayir Brown recorded the 49ers' lowest coverage grade (47.3). He was targeted three times and allowed one reception—a one-yard touchdown. Linebacker Curtis Robinson posted the second-lowest coverage grade on the team (48.9).
Tackling
Cornerback Upton Stout was the 49ers' highest-graded tackler (81.2), followed by safety Jason Pinnock (77.8). Neither missed a tackle in the game.
For the second consecutive week, rookie defensive tackle Alfred Collins earned the lowest tackling grade (22.9). Kalia Davis wasn't far behind with a 26.4 tackling grade.
- DT Alfred Collins, FS Malik Mustapha — 2 each
- DT Kalia Davis, CB Renardo Green, DE Bryce Huff, DE Robert Beal Jr., LB Curtis Robinson, DE Keion White, LB Dee Winters — 1 each
49ers Week 15 snap counts
Offense
74 - Brock Purdy (QB), Colton McKivitz (RT), Dominick Puni (RG), Jake Brendel (C), Trent Williams (LT)
71 - George Kittle (TE)
65 - Spencer Burford (LG)
62 - Christian McCaffrey (RB)
60 - Jauan Jennings (WR)
46 - Kyle Juszczyk (FB)
43 - Ricky Pearsall (WR)
33 - Kendrick Bourne (WR)
23 - Demarcus Robinson (WR)
18 - Luke Farrell (TE)
12 - Brian Robinson (RB)
9 - Connor Colby (LG)
2 - Jake Tonges (TE)
Defense
53 - Curtis Robinson (LB), Dee Winters (LB), Deommodore Lenoir (CB), Ji'Ayir Brown (FS), Malik Mustapha (FS)
52 - Renardo Green (CB)
39 - Clelin Ferrell (DE)
38 - Keion White (DE)
37 - Upton Stout (CB)
32 - Alfred Collins (DT)
31 - Bryce Huff (DE)
30 - Kalia Davis (DT)
18 - Kevin Givens (DT)
14 - CJ West (DT)
13 - Jason Pinnock (SS)
11 - Robert Beal Jr. (DE)
3 - Luke Gifford (LB)
Special Teams
21 - Darrell Luter Jr., Luke Farrell, Luke Gifford, Marques Sigle, Robert Beal Jr., Siran Neal
16 - Eddy Pineiro (K), Garret Wallow, Jalen Graham
15 - Chase Lucas
13 - Jake Tonges
8 - Austen Pleasants, Colton McKivitz, Connor Colby, Dominick Puni, Ji'Ayir Brown, Jon Weeks (LS), Matt Hennessy, Skyy Moore, Spencer Burford, Thomas Morstead (P)
5 - Alfred Collins, Brian Robinson, CJ West, Curtis Robinson, Kalia Davis, Keion White
3 - Isaac Guerendo, Jason Pinnock
1 - Upton Stout