The 27-year-old heads to south London after seven years at the Emirates Stadium, where he made 162 appearances and collected two FA Cup winners’ medals.
The defender is Palace’s fourth signing of the summer, following the arrivals of Jefferson Lerma, Matheus França and Dean Henderson.
Holding has featured in the UEFA Champions League and Europa League for Arsenal, and made 24 appearances last season as the Gunners took the title race down to the wire.
“I’m excited to get started and get involved,” said Holding upon putting pen to paper.
“Playing against Crystal Palace the number of years I have, seeing the fans and how intimidating Selhurst Park can be, and how loud it can get, I’m looking forward to being on the right side of that this time!”
Club Chairman Steve Parish commented: “Rob is a player who will bring tremendous quality, possessing considerable Premier League experience for his age. Rob gives us options in two positions at the back, and we warmly welcome him to Crystal Palace.”