The 25-year-old defender submitted a transfer request in the summer amid reported interest from Brighton & Hove Albion but subsequently changed his mind.
Speaking to the Royals website, manager Paul Clement said he was pleased that the "speculation and uncertainty" surrounding Moore's future has finally been put to bed.
"I'm very pleased that Liam has decided to commit to a new long-term contract at Reading," said Clement.
"Over the summer there was a lot of speculation and uncertainty surrounding his future at the club and we are all delighted that he has agreed this new deal.
"Liam is an integral part of moving this club forward and I'm looking forward to us working together to achieve our objective."
Moore has made 101 appearances for Reading since joining from Leicester City in 2016.