On November 2, 2019, Gordon elected free agency. On January 22, 2020, he signed a one-year, $4 million contract to remain with the Royals for the 2020 season. On September 24, Gordon announced that he would retire from baseball at the conclusion of the 2020 season. His final career game was on September 27 against the Detroit Tigers, and received one at-bat in which he struck out to lead off the bottom of the first inning, his first leadoff appearance since April 2017. Gordon then went out to take his position in left field in the top of the second before being pulled back to the dugout and replaced by Franchy Cordero. Overall with the 2020 Kansas City Royals, Gordon batted .209 with four home runs and 11 RBIs in 50 games.