San Francisco 49ers Snap Counts (2025)
2025 regular-season data. 17 reported games represented, through Week 18. Search by player name, position or team abbreviation. These are observed playing-time counts, not future rankings.
Connect your league for the league story behind the playing time.
72 of 72 player/team entries
| Player | Team | Pos | Games listed | Offense | Defense | Special teams |
|---|---|---|---|---|---|---|
| Dominick Puni | SF | OL | 17 | 1120 | 0 | 82 |
| Colton McKivitz | SF | OL | 17 | 1117 | 0 | 82 |
| Trent Williams | SF | T | 16 | 997 | 0 | 0 |
| Jake Brendel | SF | OL | 15 | 950 | 0 | 6 |
| Christian McCaffrey | SF | RB | 17 | 932 | 0 | 3 |
| Jauan Jennings | SF | WR | 15 | 795 | 0 | 3 |
| Kendrick Bourne | SF | WR | 16 | 594 | 0 | 0 |
| Brock Purdy | SF | QB | 9 | 576 | 0 | 0 |
| George Kittle | SF | TE | 11 | 554 | 0 | 0 |
| Mac Jones | SF | QB | 11 | 546 | 0 | 0 |
| Kyle Juszczyk | SF | FB | 17 | 510 | 0 | 45 |
| Ricky Pearsall | SF | WR | 9 | 480 | 0 | 2 |
| Spencer Burford | SF | OL | 11 | 458 | 0 | 53 |
| Connor Colby | SF | OL | 13 | 452 | 0 | 63 |
| Demarcus Robinson | SF | WR | 14 | 420 | 0 | 1 |
| Luke Farrell | SF | TE | 17 | 404 | 0 | 270 |
| Jake Tonges | SF | TE | 17 | 399 | 0 | 232 |
| Ben Bartch | SF | OL | 6 | 200 | 0 | 23 |
| Brian Robinson Jr. | SF | RB | 17 | 190 | 0 | 59 |
| Matt Hennessy | SF | OL | 17 | 173 | 0 | 81 |
| Marquez Valdes-Scantling | SF | WR | 5 | 141 | 0 | 0 |
| Austen Pleasants | SF | OL | 15 | 125 | 0 | 72 |
| Skyy Moore | SF | WR | 17 | 110 | 0 | 139 |
| Russell Gage | SF | WR | 1 | 28 | 0 | 0 |
| Jordan Watkins | SF | WR | 4 | 25 | 0 | 0 |
| Nick Zakelj | SF | OL | 3 | 23 | 0 | 11 |
| Malik Turner | SF | WR | 3 | 17 | 0 | 25 |
| Brayden Willis | SF | TE | 6 | 13 | 0 | 98 |
| Jordan James | SF | RB | 3 | 3 | 0 | 8 |
| Adrian Martinez | SF | QB | 1 | 1 | 0 | 0 |
| Deommodore Lenoir | SF | DB | 17 | 0 | 1066 | 13 |
| Dee Winters | SF | LB | 17 | 0 | 993 | 17 |
| Renardo Green | SF | CB | 14 | 0 | 816 | 10 |
| Ji'Ayir Brown | SF | S | 17 | 0 | 801 | 145 |
| Malik Mustapha | SF | S | 12 | 0 | 698 | 7 |
| Upton Stout | SF | CB | 16 | 0 | 593 | 3 |
| Sam Okuayinonu | SF | DL | 15 | 0 | 575 | 69 |
| Bryce Huff | SF | DL | 15 | 0 | 533 | 10 |
| Tatum Bethune | SF | LB | 14 | 0 | 499 | 123 |
| Jason Pinnock | SF | S | 17 | 0 | 494 | 86 |
| Alfred Collins | SF | DL | 16 | 0 | 492 | 74 |
| Kalia Davis | SF | DL | 17 | 0 | 492 | 68 |
| Jordan Elliott | SF | DL | 16 | 0 | 463 | 64 |
| Marques Sigle | SF | S | 15 | 0 | 387 | 210 |
| Mykel Williams | SF | DL | 9 | 0 | 385 | 44 |
| Fred Warner | SF | LB | 6 | 0 | 330 | 30 |
| Keion White | SF | DL | 9 | 0 | 319 | 38 |
| CJ West | SF | DL | 14 | 0 | 279 | 23 |
| Darrell Luter | SF | CB | 17 | 0 | 271 | 273 |
| Curtis Robinson | SF | LB | 14 | 0 | 248 | 194 |
| Clelin Ferrell | SF | DL | 8 | 0 | 233 | 25 |
| Luke Gifford | SF | LB | 17 | 0 | 172 | 352 |
| Yetur Gross-Matos | SF | DL | 8 | 0 | 158 | 4 |
| Nick Bosa | SF | DL | 3 | 0 | 119 | 1 |
| Kevin Givens | SF | DL | 5 | 0 | 116 | 4 |
| Robert Beal | SF | DL | 7 | 0 | 104 | 116 |
| Chase Lucas | SF | CB | 15 | 0 | 98 | 204 |
| Trevis Gipson | SF | LB | 4 | 0 | 80 | 29 |
| Eric Kendricks | SF | LB | 3 | 0 | 46 | 39 |
| Garret Wallow | SF | LB | 4 | 0 | 44 | 58 |
| Nick Martin | SF | LB | 7 | 0 | 15 | 74 |
| Jordan Jefferson | SF | DL | 1 | 0 | 12 | 2 |
| Jalen Graham | SF | LB | 3 | 0 | 2 | 37 |
| Eli Apple | SF | CB | 2 | 0 | 1 | 14 |
| Siran Neal | SF | DB | 17 | 0 | 0 | 333 |
| Isaac Guerendo | SF | RB | 14 | 0 | 0 | 173 |
| Eddy Piñeiro | SF | K | 14 | 0 | 0 | 148 |
| Thomas Morstead | SF | P | 17 | 0 | 0 | 130 |
| Jon Weeks | SF | LS | 17 | 0 | 0 | 127 |
| Drew Moss | SF | OL | 5 | 0 | 0 | 19 |
| Matt Gay | SF | K | 2 | 0 | 0 | 18 |
| Jake Moody | SF | K | 1 | 0 | 0 | 9 |
How to read this snap-count table
Offense, defense and special teams count separate kinds of plays. A player can appear in more than one unit. The table is ordered by offensive snaps, then defensive and special-teams snaps; it is not a ranking of fantasy value. Games listed counts source appearances, including rows with zero snaps. A traded player can have separate entries for each team.
Season totals add the reported regular-season game counts. Percentages are deliberately omitted: averaging rounded weekly percentages would not establish an accurate full-season snap share. Postseason games are excluded.
A snap is an opportunity to participate, not proof of a target, touch or productive play. Compare role changes across weeks and check injury context before making a roster move. An absent row is missing source data, not an assumed zero.
Source and attribution
Snap counts: Pro Football Reference via nflverse. LeagueLogs filters regular-season rows, normalizes the Rams abbreviation from LA to LAR, groups player/team entries and sums counts for season views. No endorsement is implied. Source corrections may change totals.
- nflverse snap-count dataOriginal season CSV, including source identifiers and game-level counts.
- Source definitionsnflreadr documentation and the snap-count data dictionary.
- CC BY 4.0 licenseAttribution license provided with the nflverse data repository.
Know who played. Follow what it means for your league.
Connect your Sleeper or ESPN league to the free LeagueLogs app for league-aware AI chat, roster tools and league history. Boosted leagues also receive personalized weekly newsletters.
- An AI chat that knows everything about your league — ask it anything
- A trade finder that pitches deals your leaguemates would actually take
- A verdict on every trade in your league, minutes after it lands
- Weekly newsletters written about your league, managers by name
- Trade analyzer, draft grader, and team names built on your actual roster
- Your league's full history, plus push alerts the moment its drama happens
Frequently Asked Questions
- Are snap counts the same as fantasy points?
- No. Snap counts describe playing time. They do not tell you how many passes, targets, touches or fantasy points a player produced.
- Why might a game or player be missing?
- The upstream source can publish games at different times and revise past rows. Missing entries are not converted into zero snaps. Check the reported season, week and retrieval date.