Holt grew up in Musselburgh as a Hearts fan and attended Musselburgh Grammar School before signing for Heart of Midlothian in 2002. He was a member of the Hearts under-19 squad who finished second behind Celtic in the under-19 league in 2010–11. He picked up the Clydesdale Bank Premier League under-19 player of the season award. Despite being part of the squad that travelled to Italy for pre season, Holt had to wait until the last day of the 2010–11 season to make his First team debut on 15 May 2011 as a substitute against Dundee United. His performance for the under 19 squad in the early part of the 2011–12 season earned him a new three-year contract extending his stay with the club until 2014. He scored on his first start for Hearts, away to St Johnstone in March 2012. With Hearts in financial difficulty and wanting to bring through members of their under 19 squad into the first team, Holt was sent on loan to Raith Rovers to gain first team experience.
Loan spells
On 21 November 2011, after impressing in a bounce game, Holt joined Scottish First Division side Raith Rovers on loan until 5 January 2012. Making his debut on 26 November 2011 scoring the first goal in the ninth minute in their 3–2 win against Hamilton. In all Holt made five appearances for the side with his last appearance coming as a substitute on 2 January against Dundee. On 5 January he returned to Hearts. Holt moved on loan to Sheffield United on 30 January 2015 for the rest of the 2014–15 season.
Rangers
On 22 July 2015, Holt signed a three-year deal with Rangers after impressing on a trial spell. The Ibrox side agreed a development compensation fee of £65,000 with Heart of Midlothian. Holt scored his first goal for Rangers in a 5–1 win over Alloa Athletic. He scored a brace against title rivals Hibernian in a 4–2 win for Rangers. Holt was named in the Championship team of the year for 2015–16, as Rangers won promotion to the Scottish Premiership. Holt made 33 appearances and scored two goals for Rangers during the 2017–18 season, but was made available for transfer by new manager Steven Gerrard in June 2018.
Fleetwood Town (Loan)
On 18 June 2018, Holt was loaned to Fleetwood Town, managed by his former Rangers teammate Joey Barton. Following an injury against Accrington Stanley on 30 March 2019, Holt completed his loan and returned to Rangers. Holt played in 36 games in all competitions and scored two goals for Fleetwood.