The San Francisco 49ers improved their record to 11-4 after a 48-27 win against the Indianapolis Colts in Week 16. 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

Brock Purdy, QB, 96.6, 63 snaps
George Kittle, TE, 94.8, 41 snaps
Trent Williams, LT, 91.0, 63 snaps
Colton McKivitz, RT, 85.7, 63 snaps
Skyy Moore, WR, 75.9, 7 snaps

Highest-graded 49ers: Defense

Dee Winters, LB, 94.0, 55 snaps
CJ West, DT, 90.9, 20 snaps
Upton Stout, CB, 84.8, 48 snaps
Keion White, DE, 74.7, 34 snaps
Malik Mustapha, FS, 74.7, 59 snaps

Lowest-graded 49ers: Offense

Luke Farrell, TE, 43.7, 27 snaps
Kyle Juszczyk, FB, 55.2, 36 snaps
Jordan Watkins, WR, 56.9, 8 snaps
Austen Pleasants, LT, 60.0, 3 snaps
Matt Hennessy, C, 60.0, 3 snaps

Lowest-graded 49ers: Defense

Garret Wallow, LB, 29.9, 4 snaps
Eric Kendricks, LB, 36.1, 10 snaps
Jason Pinnock, SS, 40.9, 11 snaps
Deommodore Lenoir, CB, 41.0, 59 snaps
Luke Gifford, LB, 47.2, 3 snaps

Highest-graded Colts

Laiatu Latu, ROLB, 84.2, 40 snaps
Josh Sills, LG, 82.6, 4 snaps
Ameer Abdullah, RB, 78.8, 4 snaps
Alec Pierce, WR, 76.1, 58 snaps
Mo Alie-Cox, TE, 73.1, 13 snaps

Quarterback play

Brock Purdy earned the highest overall grade of the game after completing 25 of 34 passes for 295 yards, five touchdowns, and one interception, good for a 126.8 passer rating. His 96.6 offensive grade and 95.7 passing grade were both career highs.

For comparison, Colts quarterback Philip Rivers completed 23 of 35 passes for 277 yards, two touchdowns, and one interception. He finished with a 97.0 passer rating and a 49.6 offensive grade.

Highest marks

While Purdy was the highest-graded player overall, linebacker Dee Winters earned the top defensive grade. He posted a career-high 94.0 defensive grade, finishing with three tackles and an interception returned for a touchdown.

Blocking

Left tackle Trent Williams was the highest-graded offensive lineman in the game, earning a 91.0 offensive grade and the top run-blocking grade (93.0).

Center Jake Brendel recorded the best pass-blocking grade of the game (80.0), though his 63.0 run-blocking grade was the lowest among 49ers offensive linemen with significant snaps.

Left guard Spencer Burford earned the lowest pass-blocking grade (64.4) among 49ers offensive linemen, while the lowest pass-blocking grade overall belonged to tight end George Kittle, who suffered an ankle injury in the game.

In total, the 49ers’ offensive line surrendered five pressures.

Pressures allowed among O-line:

RT Colton McKivitz, RG Dominick Puni — 2 each
LG Spencer Burford — 1

Pass Catchers

Tight end George Kittle earned the game’s highest receiving grade (94.6) after catching seven passes for 115 yards and a touchdown on eight targets. All seven receptions resulted in first downs.

Running back Brian Robinson Jr. received the lowest receiving grade of the game (55.5), though he was targeted just once—and didn’t have a catch.

Wide receiver Kendrick Bourne finished with the next-lowest receiving grade (58.0), catching three passes for 27 yards on five targets. He and wide receiver Jauan Jennings were responsible for the game’s only drops.

Drops:

WR Kendrick Bourne, WR Jauan Jennings — 1 each

Rushing

Running back Christian McCaffrey posted the 49ers’ best rushing grade (70.1). He carried the ball 21 times for 117 yards, averaging 5.6 yards per attempt. It marked just his third 100-yard rushing performance of the season.

For Indianapolis, running back Jonathan Taylor rushed 16 times for 46 yards and a touchdown, earning a game-high 71.5 run grade.

Pass rush

Two 49ers tied for the best pass-rushing grade of the game. Defensive tackles CJ West and Alfred Collins each earned career-high 91.7 pass-rushing grades and recorded their first NFL sacks.

West also logged four pressures, tying Colts pass rusher Laiatu Latu for the most in the game.

Defensive end Clelin Ferrell earned the lowest pass-rushing grade among 49ers defenders (55.7).

Pressures by 49ers defenders:

Run defense

Linebacker Tatum Bethune was the highest-graded run defender in the game, earning a 77.4 grade with two stops. Cornerback Upton Stout followed closely with a 76.5 run-defense grade.

Defensive tackle Alfred Collins posted the 49ers’ lowest run-defense grade (31.1), followed by defensive end Clelin Ferrell (46.4).

Pass defense

Linebacker Dee Winters also led the game in coverage, earning a career-high 93.9 coverage grade. He was targeted three times, allowing one catch for 11 yards and returning an interception for a touchdown.

Cornerback Upton Stout earned the game’s next-best coverage grade (81.2), allowing four receptions for 45 yards on eight targets.

Linebacker Eric Kendricks recorded the lowest coverage grade on the team (29.8), allowing two catches for 27 yards on two targets.

Tackling

Cornerback Upton Stout led the 49ers with an 81.8 tackling grade.

Linebacker Luke Gifford earned the lowest tackling grade of the game (26.0). While he missed one tackle, linebacker Tatum Bethune led all players in the game with three missed tackles.

Missed tackles by 49ers defenders:

LB Tatum Bethune — 3
LB Luke Gifford, CB Darrell Luter Jr., LB Eric Kendricks, FS Malik Mustapha, LB Dee Winters — 1 each

49ers Week 16 snap counts

Offense
66 – Dominick Puni (RG), Spencer Burford (LG)
63 – Brock Purdy (QB), Colton McKivitz (RT), Jake Brendel (C), Trent Williams (LT)
54 – Jauan Jennings (WR)
53 – Christian McCaffrey (RB)
46 – Kendrick Bourne (WR)
41 – George Kittle (TE)
36 – Kyle Juszczyk (FB)
29 – Demarcus Robinson (WR)
27 – Luke Farrell (TE)
16 – Jake Tonges (TE)
10 – Brian Robinson (RB)
8 – Jordan Watkins (WR)
7 – Skyy Moore (WR)
3 – Austen Pleasants (LT), Connor Colby (LG), Jordan James (RB), Mac Jones (QB), Matt Hennessy (C)

Defense
60 – Darrell Luter Jr. (CB), Ji’Ayir Brown (FS)
59 – Deommodore Lenoir (CB), Malik Mustapha (FS)
55 – Dee Winters (LB)
49 – Tatum Bethune (LB)
48 – Upton Stout (CB)
35 – Bryce Huff (DE)
34 – Keion White (DE)
32 – Clelin Ferrell (DE)
29 – Sam Okuayinonu (DE)
26 – Jordan Elliott (DT)
24 – Alfred Collins (DT)
22 – Kalia Davis (DT)
20 – CJ West (DT)
18 – Yetur Gross-Matos (DE)
11 – Jason Pinnock (SS)
10 – Eric Kendricks (LB)
4 – Garret Wallow (LB)
3 – Luke Gifford (LB)
1 – Eli Apple (CB), Marques Sigle (FS)

Special Teams
25 – Jake Tonges, Luke Farrell
22 – Luke Gifford
21 – Marques Sigle
20 – Jason Pinnock, Siran Neal
18 – Eddy Pineiro (K)
17 – Garret Wallow
16 – Eric Kendricks
11 – Eli Apple
9 – Austen Pleasants, Colton McKivitz, Connor Colby, Dominick Puni, Ji’Ayir Brown, Jon Weeks (LS), Matt Hennessy, Spencer Burford, Thomas Morstead (P)
8 – Skyy Moore
6 – Brian Robinson, Clelin Ferrell, Darrell Luter Jr., Keion White, Sam Okuayinonu
5 – Alfred Collins, Jordan Elliott, Tatum Bethune
4 – Kalia Davis
1 – Bryce Huff, CJ West, Dee Winters, Deommodore Lenoir, Jordan James, Malik Mustapha, Yetur Gross-Matos