Born in York, North Yorkshire, Allan joined the youth system of hometown club York City in 2002 at the age of eight. He signed for Northern Premier League Division One South club Hucknall Town on loan in October 2011, making his only appearance as a substitute against Stamford before returning to York in November. While still a second-year trainee, he signed a one-and-a-half-year professional contract with York on 6 December 2012, with managerGary Mills commenting: "Tom has come on unbelievably in the last 12 months and thoroughly deserves his first professional contract". He made his first-team debut as a 56th-minute substitute for Chris Doig in York's 4–1 home win over Bristol Rovers on 15 December 2012. Allan made his full debut on 13 April 2013 in a 2–0 away win over Northampton Town, and finished the 2012–13 season with five appearances for York. He joined Conference North club Harrogate Town on a one-month loan on 21 November 2013, having made four appearances for York up to that point in 2013–14. His debut came two days later in a 3–0 victory away to Workington, and made one more appearance for the club before returning to York on 20 December 2013. Allan came on as an 89th-minute substitute for Will Hayhurst in York's 0–0 away draw with Fleetwood Town in the play-off semi-final second leg, resulting in the team being eliminated 1–0 on aggregate. This was his sixth appearance for York in 2013–14. He was released by York in May 2014, as the offer of a new two-year contract was withdrawn after he failed to respond to it within a one-month timeframe.
Non-League
Allan joined Conference Premier club Gateshead, managed by his former York manager Mills, on 30 June 2014. He signed a one-year contract that would be extended by a further year pending on him making a pre-determined number of appearances. He made his debut on 23 August 2014 as a second-half substitute for Lewis Guy in a 6–1 home defeat to Grimsby Town. He scored his first career goal on 25 October 2014 in a 4–0 home win against Gainsborough Trinity in the FA Cup. Allan made 22 appearances and scored two goals for a Gateshead team that ranked 10th in the Conference Premier in 2014–15. He was released by new manager Malcolm Crosby in June 2015. Allan signed for newly relegated National League North club Alfreton Town on 6 July 2015 on a one-year contract. In December 2016, Allan dropped down two divisions by joining Northern Premier League Division One North club Tadcaster Albion on loan. He scored on his debut on 17 December 2016 in a 3–2 away win over Radcliffe Borough, dispossessing Lassana Nalatche before shooting into the bottom corner. In June 2017, Allan signed a new one-year contract at Alfreton.
Return to York City
Allan re-signed for York City, with the club now in the National League North, on 17 May 2018. He rejoined Alfreton Town on 16 November 2018 on loan until 1 January 2019, having started only four matches for York in 2018–19. His debut came the following day when starting Alfreton's 3–1 home win over Nuneaton Borough in the league. The loan was extended until the end of the season in January 2019. Allan missed the start of the 2019–20 season with a three-match suspension before joining York's divisional rivals Farsley Celtic on 16 August 2019 on a one-month loan. He made seven appearances for Farsley, scoring two goals, and after returning to York went straight into the starting line-up for their 2–0 away win over Irlam in the FA Cup as cover for the injured Steve McNulty. He returned to Farsley Celtic on 17 October on loan until 4 January 2020, making 13 appearances and scoring one goal during his second loan spell. Allan joined Northern Premier LeaguePremier Division club Scarborough Athletic on 20 February on a one-month loan.
Style of play
Allan primarily plays at centre back and left back. By late 2016, he had started playing as a left winger.