Born in Lanark and brought up in nearby Carluke, Crawford played as a child with local club Milton Rovers[5] before joining the youth setup at Heart of Midlothian, but he was released in 2006 due to concerns over his slight build.[4] Picked up by Hamilton Academical, he progressed to the first team and made his league debut aged 18 on 13 January 2010 against Dundee United,[6] and spent a loan spell at Bo'ness United during the first half of the 2010–11 season. In May 2011, he signed a new two-year contract with Hamilton despite the club suffering relegation.[7][8]
In June 2012, Crawford announced that he was willing to prove his worth at the club following a spell of injury.[9] On 28 August 2012, Crawford scored the only goal of the game as Hamilton beat Partick Thistle 1–0 in extra time in the 2012–13 Scottish League Cup,[10] and he later spoke of his desire to help "kick-start" the season.[11] Crawford signed a new two-year contract in July 2013.[12] At the start of the 2013–14 season, Crawford publicly stated that the new synthetic pitch at New Douglas Park would give Hamilton an advantage over their opponents.[13]
In April 2014 he was selected to the 2013–14 ChampionshipPFA Scotland Team of the Year, alongside teammates Ziggy Gordon and Anthony Andreu.[14] A month later, Crawford was part of the Hamilton team which won promotion back to the Premiership by defeating Hibernian in the play-off final.[15] In October 2014 he signed a new contract with the club, to last until the summer of 2018.[16] In August 2015, he scored a late winning goal against Hearts in the first match he had played against his former youth club.[17]
In September 2016 it was suggested by Hamilton manager Martin Canning that Crawford should play for the Scotland national team.[18] In November 2016 club captain Michael Devlin said that the team hoped that Crawford would not leave the club in the January 2017 transfer window.[19] In December 2016, Canning said they wished to keep Crawford until the end of the 2016–17 season.[20]
Crawford was one of seven first-team players who left Hamilton at the end of the 2017–18 season;[21] he stated that his preference was to play in England.[22]
On 2 September 2019, Crawford signed for fellow League One side Bolton Wanderers on a contract until the end of the season, after terminating his contract with Doncaster Rovers.[24] He made his debut on 14 September, starting against Rotherham United in a 6-1 defeat.[25] He scored his first goal for the club in the EFL Trophy game at Rochdale on 1 October, a game Bolton eventually lost on penalties.[26] On 26 June it was announced Crawford would be one of 14 senior players released at the end of his contract on 30 June,[27] but he returned to the club a few days later after signing a new two-year contract,[28] turning down League One teams in order to return.[29]
Tranmere Rovers (loan)
On 1 February 2021, he signed on loan for Tranmere Rovers until the end of the season.[30]
St Johnstone
On 31 August 2021, Crawford returned to Scotland to join St Johnstone on a six-month loan deal until January 2022.[31][32]
On 3 January 2022, Crawford signed a permanent deal with St Johnstone until 2024.[33]
Greenock Morton
On 24 February 2023, Crawford joined Greenock Morton on a loan until the end of the season.[34][35]
On 2 August 2024, Crawford joined Morton on a six-month permanent deal with the option to extend following his departure from St Johnstone.[36]
^Bo'ness play in the Junior leagues, where player statistics are not recorded on a consistently reliable basis. Their regional champions qualify for the senior Scottish Cup.