Born in Heywood, Greater Manchester, Simpson started his career as a youth player at Oldham Athletic, signing his first professional contract in June 2013. Having been an unused substitute for Oldham's first three matches of the 2013–14 season, he joined Northern Premier League Premier Division club Nantwich Town on 17 August 2013 on a one-month loan. On 20 December 2013, Simpson joined Conference North club Workington on a one-month youth loan, going on to make six appearances. On 31 January 2014, he joined Championship club Leicester City on a youth loan until the end of 2013–14. He signed for League Two club Accrington Stanley on 4 August 2014. Simpson made his debut against Southend United, saving Barry Corr's 46th-minute penalty. In January 2015, he left the club after turning down a contract offer. He made nine appearances for the club in all competitions. On 14 December 2015, Simpson signed a short-term contract with Premier League club Watford, to play for the under-21 team. He was released at the end of the 2015–16 season. Simpson joined newly relegated National League club York City on 25 July 2016 on a two-year contract, after a successful trial. He was an unused substitute as York beat Macclesfield Town 3–2 at Wembley Stadium in the 2017 FA Trophy Final. Simpson made one appearance as York ranked in 11th place in the National League North in 2017–18. He was released at the end of the season. Simpson signed non-contract terms with newly promoted League Two club Macclesfield Town on 2 August 2018. Simpson signed for Southern League Premier Division Central club Tamworth on 31 December 2018, following an injury to first-choice goalkeeper Jasbir Singh. He made his debut the following day, starting in a 3–3 draw at home to Barwell in the league. He made five appearances before leaving the club on 11 February following Singh's return to fitness. Following leaving Tamworth, Simpson signed for Wrexham on 23 February 2019 until the end of the 2018–19 season. He was released on 8 May 2019. Simpson joined Barrow on a non-contract basis on 25 November 2019. He was released at the end of the 2019-20 season.