"Over the years I've had teammates who decided to hang it up and I would ask them how they knew when it was time to walk away. The answer was almost always the same: You just know," Palmer wrote in an open letter to fans. "For me, that time is now. Why? Quite simply I just know."
The 38-year-old Palmer was named to the Pro Bowl three times, but his 2017 season was cut short by a broken arm that limited him to seven games.
Palmer was a Heisman Trophy winner at USC in 2002, and was the first overall pick in the 2003 NFL Draft. However, he did not play at all as a rookie with the Bengals in 2003.
Palmer spent his first eight seasons with the Bengals before being traded to the Oakland Raiders. He played in Oakland for two years before playing five seasons with Arizona.
He led the Cardinals to a 13-3 regular-season record in 2015, and they beat the Packers in the first round of the playoffs before losing to Carolina in the NFC championship game.
Arizona slipped to 7-8-1 in 2016 and was 3-4 in the seven games Palmer started this season.
The Cardinals will have a different look in 2018 with Palmer and head coach Bruce Arians both departing. Arians announced his retirement on Monday.
Wide receiver Larry Fitzgerald is also considering retirement, but has not announced his decision.
Palmer will still cost about $6.6 million in dead cap space for 2018, but his retirement will save the team $14 million on the cap.
"It's been fantastic, some of the best (years) of his career, some of the best of my career," Arians said of Palmer's time in Arizona on the Cardinals' website. "His numbers and the wins. His leadership. It's just a shame he had the knee (injury) and now the arm, or I think he'd have done wondrous things in his time here."