There is a total of 18 unrestricted free agents on Buffalo's roster headed into the 2018 offseason. Only six of them are 30 or older. Some are starters, some are role players and others are primarily special teamers. With a healthy number of holes to fill on offense and defense and a salary cap to be mindful of, Buffalo has a handful of challenging decisions to make going into year two under Sean McDermott and GM Brandon Beane.
Here's a look at Buffalo's players whose contracts are up and their contributions in 2017.
Colt AndersonRole: Primary special teamer, reserve safety
Age for 2018 season: 32
Production: Foot and arm injuries limited him to just five games where he served primarily on special teams.
Contract status: One-year contract with Bills is up.
Preston BrownRole: Starting MLB
Age for 2018 season: 25
Production: Led the NFL in tackles with 144, and has never missed a game in his four NFL seasons.
Contract status: Finished his rookie contract.
Jeremy ButlerRole: He was battling for a roster spot at wide receiver until injury landed him on injured reserve.
Age for 2018 season: 27
Contract status: One-year contract with Bills is up.
Travaris CadetRole: Backup running back, special teams
Age for 2018 season: 29
Production: A late season add due to injury, Cadet showed a proficiency in the pass game and was an effective rusher when utilized averaging 4.2 yards per carry.
Contract status: One-year contract with Bills is up.
E.J. GainesRole: Starting cornerback
Age for 2018 season: 26
Production: A late offseason acquisition via trade, Gaines made 11 starts, led the team in forced fumbles (3) and ranked third in pass breakups with nine. He was seventh on the team in tackles and had one interception.
Contract status: One-year restricted free agent contract is up.
Seantrel HendersonRole: Backup offensive tackle
Age for 2018 season: 26
Production: After missing the first five games to complete a league-imposed 10-game suspension, Henderson served as a backup offensive tackle and tackle eligible on overload plays. He appeared in seven games making one start.
Contract status: Finished his rookie contract
Ramon HumberRole: Starting/backup linebacker, primary special teamer
Age for 2018 season: 30
Production: Appearing in 13 games, making nine starts, Humber finished third on the team in tackles with 83. He was second on the team with eight tackles for loss in 2017.
Contract status: One-year free agent contract is up.
Leonard JohnsonRole: Nickel cornerback
Age for 2018 season: 28
Production: Johnson was eighth on the team in tackles and ranked fourth in pass breakups. He also had a forced fumble that he recovered.
Contract status: One-year free agent contract is up.
Taiwan JonesRole: Special teamer, backup running back
Age for 2018 season: 30
Production: He appeared in eight games for the Bills before a broken arm landed him on injured reserve.
Contract status: One-year contract with Bills is up.
Jordan MatthewsRole: Primary slot receiver
Age for 2018 season: 26
Production: Finished fourth on the team in receptions and sixth in receiving yards. His season was cut short due to nagging knee and ankle injuries and wound up on injured reserve.
Contract status: Finished his rookie contract.
Brandon TateRole: Primary return man, backup wide receiver
Age for 2018 season: 30
Production: He finished sixth in the league in punt return average (9.7) and 12th in kick return average. Tate also had six receptions for 81 yards and a touchdown.
Contract status: One-year contract with Bills is up.
Shamarko ThomasRole: Special teams, backup safety
Age for 2018 season: 27
Production: Appeared in 12 games and tied for the team lead in special teams tackles with nine.
Contract status: One-year contract with Bills is up.
Deonte ThompsonRole: Starting wide receiver
Age for 2018 season: 29
Production: After being signed in mid-October, Thompson appeared in 11 games making seven starts and finished tied for third on the team in receptions (27) and third in receiving yards (430).
Contract status: One-year contract with Bills is up.
Cedric ThorntonRole: Rotational defensive tackle
Age for the 2018 season: 30
Production: He tied for third in sacks and fourth in tackles for loss. Thornton also filled a role or two on special teams.
Contract status: One-year contract with Bills is up.
Mike TolbertRole: Fullback, special teams
Age for the 2018 season: 32
Production: Tolbert averaged 3.7 yards per carry, rushing for 247 yards and a touchdown. He also caught 14 passes on the season.
Contract status: One-year contract with Bills is up.
Joe WebbRole: Third quarterback, wide receiver, special teamer
Age for the 2018 season: 31
Production: Tied for second in special teams tackles, served as Wildcat QB. Rushed eight times for 54 yards.
Contract status: One-year contract with Bills is up.
Kyle WilliamsRole: Starting defensive tackle
Age for 2018 season: 35
Production: Tied for second on the team in sacks and third in quarterback hits. Also had a fumble recovery.
Contract status: Finished a three-year contract with Bills.
Shareece WrightRole: Reserve cornerback
Age for the 2018 season: 31
Production: In 12 games with five starts, Wright had the fifth-most pass breakups, a pair of takeaways and 42 tackles.
Contract status: One-year contract with the Bills is up.