Sources told ESPN's Adam Schefter that the sides had agreed to a one-year, $8 million contract.
Pryor, 27, led the Browns with 77 receptions, 1,007 yards and four touchdowns last season. Cleveland decided against using the franchise tag on Pryor, which would have paid the wide receiver $15.682 million in 2017 if they couldn't agree to a long-term contract.
He became the second player in NFL history to have seasons with 1,000 passing yards and 1,000 receiving yards. The last was Marlin Briscoe, who had 1,589 yards passing in 1968 and 1,036 receiving in 1970.
Pryor's 77 catches rank as the fourth-highest single-season total in Browns history, and his 1,000-yard season makes him the seventh receiver in team history to reach that number.
Pryor spent the first three seasons of his career as a quarterback, missed the entire 2014 season and then decided in the summer of 2015 to move to receiver.
He spent that year's training camp with the Browns but was released shortly after the season started. He kept working, spent the final games of the 2015 season with the Browns and emerged as a legitimate receiver in the team's offseason work.
Pryor took a handful of snaps at quarterback last season. In a Week 3 loss to the Miami Dolphins, the 6-foot-4, 223-pound Pryor showed off his versatility, becoming the first player since Frank Gifford in 1959 with at least 120 yards receiving, 30 passing and 20 rushing.
ESPN's Pat McManamon and The Associated Press contributed to this report.