Born in Epsom, Surrey, Palmer supported Wimbledon as a child, for whom his grandfather Tony Wright played in the 1950s.[4] He stopped supporting the club following their relocation to Milton Keynes, stating "My team was Wimbledon as a kid – but I wasn't going to support Milton Keynes Dons".[4] He attended Therfield School from 2003 to 2008.[citation needed]
Palmer began his career at the college scheme of Woking,[6] although by his own admission, he never attended the actual college, working as a part-time roofer instead.[6] Palmer was selected for the England Colleges National Team in 2010,[7] and later signed a first-team contract in August of that year.[citation needed] Palmer was subsequently loaned out to fellow Conference South club St Albans City in November 2010 and scored one goal from five appearances.[8] He finished 2010–11 with two goals from 20 appearances for Woking and signed a new one-year contract with the club after the end of the season.[3][9]
Havant & Waterlooville
After he was recalled from a loan spell at Boreham Wood, Palmer signed for fellow Conference South club Havant & Waterlooville permanently in September 2011.[10] After seven goals from five appearances, League One club Charlton Athletic were reportedly interested in signing him.[11] Palmer finished 2012–13 as Conference South joint top scorer with 25 goals from 42 appearances and was also named Player of the Year.[12]
Mansfield Town
Palmer signed for newly promoted League Two club Mansfield Town on 2 August 2013 on a two-year contract for an undisclosed fee.[13] He debuted a day later as a 61st-minute substitute in a 2–0 defeat away to Scunthorpe United and scored his first goal in a 1–0 win away to Wycombe Wanderers on 17 August.[14]
Grimsby Town (loan)
On 5 January 2015, Palmer joined Conference Premier club Grimsby Town on an initial one-month loan.[15] He scored on his debut at home to league-leaders Barnet on 17 January, scoring Grimsby's first goal in a 3–1 victory.[3] Palmer's loan at Grimsby was extended on 30 January until the end of the season.[16][17] He missed a month due to a hamstring injury,[18] scoring on his return with the opener away to former club Woking on 7 March, which finished as a 2–1 victory.[19] Palmer scored a brace in the play-off semi-final second leg against Eastleigh, the first coming in the 35th minute and the second coming in the 71st minute, which made the score 3–0, meaning Grimsby won the tie 5–1 on aggregate.[20] He started in the 2015 Conference Premier play-off final at Wembley Stadium on 17 May 2015, which finished as a 1–1 draw after extra time, but Grimsby lost the subsequent penalty shoot-out 5–3 to Bristol Rovers.[21]
Leyton Orient
On 6 July 2015, Palmer signed for League Two club Leyton Orient for an undisclosed fee on a two-year contract.[22] He debuted on the opening day of 2015–16 in a 2–0 win at home to Barnet, having entered the match as an 89th-minute substitute and scored his first goal after being introduced as a 76th-minute substitute in a 3–0 win at home to Stevenage on 18 August.[23]
Luton Town (loan)
On 31 January 2017, Palmer joined League Two club Luton Town on loan until the end of 2016–17.[24] He debuted four days later in a 1–1 draw away to former loan club Grimsby Town, having entered the match as a 58th-minute substitute.[25] After coming on as a substitute in the 73rd minute, Palmer scored his first goal for Luton with the third goal in a 3–0 victory at home to Hartlepool United on 14 February.[26] Having entered Luton's 3–2 defeat away to Blackpool in the first leg of the play-off semi-final on 14 May as an 86th-minute substitute,[27] Palmer was an unused substitute in the second leg four days later, which resulted in a 3–3 draw and a 6–5 defeat on aggregate.[28] He completed the loan spell with 18 appearances and three goals.[25]
Lincoln City
On 26 June 2017, Palmer signed a two-year contract with newly promoted League Two club Lincoln City.[29] He scored his first goal for Lincoln in an EFL Trophy tie against Mansfield Town on 29 August.[30] Palmer came on as a 63rd-minute substitute as Lincoln beat Shrewsbury Town 1–0 at Wembley Stadium in the 2018 EFL Trophy Final on 8 April 2018,[31] having been named in the Team of the Tournament prior to the match.[32]
Crawley Town
Palmer signed for fellow League Two club Crawley Town on 27 June 2018 on a two-year contract for a nominal fee.[33] In February 2019, Palmer apologised after he and teammate Dominic Poleon posted a video online mocking Crawley's training facilities and teammates.[34] He left the club in the summer of 2020 following the expiry of his contract.[35]
AFC Wimbledon
Palmer joined League One club AFC Wimbledon on 7 August 2020.[36] He signed a two-year contract, with a third year automatically triggered if a certain number of appearances were met.[37] He scored his first goal for Wimbledon in a 2–1 defeat to Lincoln City on 2 January 2021.[38]
Wrexham
Palmer signed for Wrexham, then a National League club, on 24 January 2022 on a three-and-a-half-year contract for a club record fee of £300,000.[39] In his first two full seasons with the club, they were promoted back-to-back from the National League to League One.[40]
In October 2024, Palmer signed a contract extension until the end of the 2025–26 season.[41]