It was a similar story a year ago when the San Francisco 49ers had 38 players set to hit the open market. The 49ers, and the rest of the league, were led to work with less than anticipated with a decreased salary cap as a result of the COVID-19 pandemic.
Nonetheless, the 49ers managed to retain a number of key players, including several who were re-signed to one-year deals. A year later, San Francisco now has 28 players with expiring contracts once the NFL's free agency period begins on March 16.
Here is a breakdown of free agency designations, according to NFL.com:
Unrestricted Free Agent (UFA): Any player with four or more accrued seasons and an expired contract; free to negotiate and sign with any team.
Restricted Free Agent (RFA): A player with three accrued seasons and an expired contract. RFAs are free to negotiate and sign with any team, but their original team can offer them one of various qualifying offers ("tenders") that come with the right of first refusal and/or draft-pick compensation.
Exclusive Rights Free Agent (ERFA): Any player with fewer than three accrued seasons and an expired contract. If his original team offers him a one-year contract at the league minimum (based on his credited seasons), the player cannot negotiate with other teams.
Follow along with all of San Francisco's offseason moves on the 49ers Free Agency Hub.
UNRESTRICTED FREE AGENTS
The 49ers claimed Cannon off waivers from the Baltimore Ravens in Week 2 of the regular season. He played in 11 games primarily on special teams and notched 16 kick returns for 328 yards (20.5 average) and recorded eight-total tackles as a gunner.
OL Tom Compton
Compton filled in at right tackle following a season-ending injury to Mike McGlinchey (quadricep) in Week 9. Compton went on to appear in 20 games and made 10 starts (postseason included).
TE Ross Dwelley
In his fourth season in San Francisco, Dwelley appeared in all 17 regular season contests and three postseason matchups. The tight end caught four of his five targets while averaging 12.8 yards per reception and caught a touchdown on the year.
In his first season at linebacker, Harris stepped in at various points and appeared in 10 games, including the postseason, and made one start. He notched an interception, 1.0 sack, a quarterback hit, 44 tackles, two for loss and a pass defended.
Hurst appeared in two games for San Francisco while dealing with an ankle and calf injury for the majority of the season. The former Las Vegas Raiders defensive tackle saw 41 snaps over his two appearances in Weeks 4 and 5.
WR Richie James
After suffering a knee injury during the preseason, James reached an injury settlement with the 49ers and remained on their Injured Reserve list.
Johnson appeared in 19 games for San Francisco, postseason included, and made three starts amid the 49ers rotation at cornerback. The veteran corner notched 30 total tackles, two passes defended, a forced fumble and two fumble recoveries.
DL D.J. Jones
San Francisco's nose tackle appeared in each game for San Francisco in 2021 and notched 2.0 sacks, three quarterback hits, a career-high 56 total tackles, two forced fumbles and a pass defended.
DL Arden Key
Key appeared in all 17 regular season contests and three postseason games in his first year in San Francisco and was second on the team behind Nick Bosa with 6.5 sacks. Per PFF, Key's 79.4 pass-rush grade and 36 quarterback pressures were career highs
Despite big expectations for the running back heading into 2021, the 49ers lead back suffered a season-ending knee injury in the Week 1 matchup against the Detroit Lions that kept him off the field for the rest of the year.
CB Josh Norman
Norman signed with the 49ers at the start of the regular season and started 14 of his 15 games regular season contests. He notched an interception, 49 tackles, three for loss, five passes defended and sat second in the NFL with seven forced fumbles.
The veteran receiver returned to San Francisco in 2021, however, his campaign was marred by a knee injury. Sanu Sr. appeared in eight games and caught 15 of his 24 targets for 177 yards (11.8 yards per reception).
In his first season in San Francisco, Sherfield appeared in every game with the 49ers and caught nine receptions for 87 yards and a touchdown. He also played 43 percent of special teams snaps.
Street appeared in all of San Francisco's 20 games in 2021 with two starts and notched 3.0 sacks, five quarterback hits, 27 tackles, six for loss and a forced fumble, all career highs.
Earning his first-career Pro Bowl appearance, the durable veteran left guard appeared in every offensive snap for the 49ers in 2021 and, in part with left tackle Trent Williams, was a stalwart along San Francisco's offensive line. Per Pro Football Focus, he earned his second-consecutive overall grade above 75.0, and a much-improved career-best 75.2 pass-blocking grade in 2021.
Tartt appeared in 14 regular season games and three postseason contests. Per PFF, the veteran safety earned his fifth-straight grade above 60.0.
After an encouraging outing in 2020, Verrett, like Mostert, did not return to the field following a torn ACL in Week 1.
San Francisco's nickel corner appeared in 14 games and notched 1.0 sack, two quarterback hits, an interception, four passes defended, one forced fumble and 52 total tackles. He also added four passes defended and an interception in the postseason.
After opening up the season serving a six-week suspension, Willis finished out the year playing in 10 regular season outings and notching 3.0 sacks, five quarterback hits and one forced fumble. He notably recorded the 49ers game-changing blocked punt that helped send San Francisco to their second NFC Championship game in three years.
Wilson Jr. appeared in nine games and notched 294 yards rushing on 79 carries and two touchdowns while also adding seven receptions for 31 yards.
Wilson was placed on Injured Reserve on November 15 with a foot injury before appearing in eight games (one start).
RESTRICTED FREE AGENTS
Al-Shaair started all 13 games he appeared in, stepping in for fellow linebacker Dre Greenlaw, who suffered a groin injury in Week 1. He recorded 102 tackles, nine for loss, the most among San Francisco's linebackers. He also added two sacks, an interception, five passes defended, one forced fumble and two fumble recoveries.
Brunskill won San Francisco's job at right guard and went on to start all 20 the 49ers games in 2021.
OL Jake Brendel
Brendel earned the backup center job behind Alex Mack at training camp. Despite playing just six offensive snaps, he played 17 percent of San Francisco's special teams snaps.
EXCLUSIVE RIGHTS RESTRICTED FREE AGENT
San Francisco's backup linebacker appeared in all 17 games and made two starts with injuries to multiple starters.
DL Kevin Givens
Givens landed on Injured Reserve following a Week 2 high-ankle sprain. He returned in Week 7 and finished the season with 17 tackles, two quarterback hits and a forced fumble. He also added a half sack, a pass defended and two quarterback hits in the postseason.
Hasty appeared in 11 games and posted a career-high 225 yards from scrimmage on 39 touches and one touchdown on the year.
In his first active season in San Francisco, Jennings appeared in 16 regular season contests and posted 282 yards receiving on 24 receptions and five touchdowns. He also added six receptions for 43 yards in the postseason.