The Carolina Panthers‘ passing game struggled: The Panthers averaged just one passing yard per minute over the first two-thirds of the game as they continued tinkering with their wide receiver rotation.
Get PFF+ for 40% off: Use promo code BLACKFRIDAY to unlock the PFF Player Prop Tool, Premium Stats, fantasy dashboards, the PFF Mock Draft Simulator, industry-leading fantasy rankings and much more — everything you need to win your season.
PFF’s fantasy football recap focuses on player usage and stats, breaking down all the vital information you need to achieve fantasy success in 2025.
Carolina Panthers @ San Francisco 49ers
Ricky Pearsall’s snap rate returns to normal: Pearsall played a higher percentage of snaps in 12 personnel than he did last week.
Pearsall opened the season as the 49ers’ top wide receiver, playing 89.6% of the offensive snaps over the first three weeks. He sprained his PCL partway through Week 4, forcing him to miss Weeks 5-10. During most of October, Jauan Jennings and Kendrick Bourne operated as the top two receivers, with Demarcus Robinson joining them in three-receiver sets.
Pearsall returned last week and logged 74.5% of the offensive snaps. Five of those missed plays came in garbage time, but he was still off the field more than usual, especially in 12 and 21 personnel, where he played 70.7% of the snaps. He primarily took snaps from Bourne. This week, Pearsall’s usage in 12 personnel climbed above 80%. His overall snap rate didn’t reach 80%, but that was due to 22 personnel, where Jennings has been the 49ers’ primary wide receiver throughout the season.
This led to an even bigger drop in Bourne’s snap share. Skyy Moore had already begun cutting into Bourne’s playing time in Week 10. Moore didn’t play in Week 11 but did take a few snaps in this game when Pearsall was off the field. Bourne has already been dropped in most redraft leagues and can be safely dropped in any remaining leagues where he is still rostered.
Pearsall had a quiet outing with two catches for 6 yards, which wasn’t surprising given how heavily the Panthers rely on zone coverage. Pearsall’s production has been far stronger against man coverage, while most of the other 49ers receivers perform better against zone. He should be in line for better results over the next five weeks.

Panthers tweak their wide receiver rotation: Seventh-round rookie Jimmy Horn Jr. was a little more involved in the passing game than usual.
The only stable piece in the Panthers’ wide receiver room has been Tetairoa McMillan, who has played more than 80% of the snaps this season as their X receiver. That remained true in this matchup, and he added a touchdown late in the third quarter.
Jalen Coker missed the first six weeks of the season and was eased back into the lineup, but his role has been steady over the past four weeks. He has played 100% of the snaps in 11 personnel and very few in any other grouping. Because Carolina lives in 11 personnel, Coker has consistently logged the second-most snaps among Panthers wideouts. Unfortunately, he hasn’t matched last season’s production, finishing this game with three catches for 32 yards.
Xavier Legette has been the Panthers’ Z receiver outside of the two games he missed early in the season. He consistently played at least 74% of the offensive snaps over the first eight weeks, but his role has dipped recently. Between Weeks 9 and 11, he was rotated out heavily in three-receiver sets — replaced by some combination of Brycen Tremayne and Jimmy Horn Jr. — and he also lost snaps in two-receiver sets to Coker and Horn. This week, nearly all of the snaps he lost went to Horn.
Horn has primarily been a slot receiver this season, as has Coker, so Horn’s expanded role pushed Coker to more snaps out wide. Legette has flashed twice with games over 80 receiving yards, but he has been held to 31 yards or fewer in his other eight outings, including this one.
It’s increasingly unlikely that any Panthers receiver outside of Tetairoa McMillan will hold fantasy relevance for the remainder of the season. The continued late-season tinkering with the rotation — despite a fully healthy depth chart — signals that the coaching staff still isn’t settled at the position. It wouldn’t be surprising if Carolina looks to add another wide receiver this offseason.

Miscellaneous Notes
49ers quarterback Brock Purdy (toe) and wide receiver Ricky Pearsall (knee) were full participants in practice all week.
The 49ers waived quarterback Adrian Martinez last Monday with Purdy fully healthy, and signed him to the practice squad on Tuesday.
Fourth-round rookie wide receiver Jordan Watkins was a healthy inactive for a second straight week with Pearsall healthy.
Tight end George Kittle has averaged 16.6 PPR points per game since Week 8, which is third-best among tight ends, behind only Trey McBride and Brock Bowers. Anyone who decided to draft a tight end early has been relatively happy over the middle parts of the season.
49ers’ kicker Eddy Pineiro was ruled out Saturday due to a right hamstring injury. He didn’t practice all week. The 49ers signed kicker Matt Gay to the practice squad on Thursday and elevated him to replace Pineiro for this game.
The 49ers voided the guarantees in wide receiver Brandon Aiyuk’s contract, which puts into doubt whether he plays at all this season. He will likely be released in the offseason, allowing him to sign a new contract with a new team for 2026.
Rico Dowdle’s snap rate wasn’t nearly as high as it was in the last few weeks. Chuba Hubbard took over as the primary third-down back, and the game script put Carolina in more passing situations throughout the game. Dowdle ran well, but wasn’t given many opportunities.
The Panthers elevated running back DeeJay Dallas from the practice squad for this game on Monday.
Table notes
Snaps include plays called back due to penalties, including offensive holding or defensive pass interference. The other three stats have these plays removed.
Targets may differ from official NFL sources. The most likely discrepancy would be from a clear thrown-away pass, where the NFL may give the target to the nearest receiver, while this data will not.
Carries are only on designed plays. Quarterback scrambles won’t count for the total number of carries in the game.
