The 49ers cut 22 players and waived defensive back Adrian Colbert and offensive lineman Andrew Lauderdale with injury designations.
The team also placed running back Jerick McKinnon and receiver Nick Williams on injured reserve and tight end Garrett Celek on the physically unable to perform list.
San Francisco moved long snapper Kyle Nelson to the suspended list.
The 49ers waived defensive back Antone Exum Jr., linebacker Demetrius Flannigan-Fowles, defensive lineman Jamell Garcia-Williams, offensive guard Joshua Garnett, defensive lineman Kevin Givens, safety Marcell Harris, tight end Daniel Helm, receiver Malik Henry, linebacker Elijah Lee, receiver Jordan Matthews, linebacker David Mayo, defensive lineman Damontre Moore, linebacker LaRoy Reynolds, offensive guard Ross Reynolds, safety Tyree Robinson, quarterback Wilton Speight, receiver Chris Thompson, defensive lineman Jordan Thompson, offensive lineman Najee Toran, defensive lineman Jeremiah Valoaga, running back Austin Walter and running back Jeff Wilson Jr.