He signed a one-year deal, multiple sources told ESPN.
The deal has a maximum value of $2 million if Marshall, 34, reaches incentives, a source told ESPN's Adam Schefter.
Marshall posted multiple photos of himself wearing a Seahawks jersey to his Instagram account Tuesday.
One of the photos included the caption, "Always wanted to play in front of these fans.. . @seahawks."
Marshall was released by the New York Giants last month after just one season with the team. The six-time Pro Bowler was struggling with the Giants before suffering a season-ending ankle injury in Week 5.
Marshall, who has never appeared in an NFL playoff game, has also played for the Denver Broncos, Miami Dolphins, Chicago Bears and New York Jets. He has six seasons with at least 100 receptions -- the most by any player in NFL history.
He has 959 catches for 12,215 yards and 82 touchdown grabs. He is 16th in receptions -- only 23 behind Hall of Famer Randy Moss -- and is just inside the top 25 in yards (23rd) and touchdown catches (23rd).
To make room on the roster, the Seahawks announced they waived fullback Marcus Martin, who was signed as an undrafted rookie free agent this month.
ESPN's Jordan Raanan and Brady Henderson contributed to this report.