Kelly began his career with
St Mirren and made his professional debut on 3 August 2013 in a 3–0 defeat against
Inverness Caledonian Thistle. On 22 November 2013 it was announced that Kelly had signed a two-year contract extension with Saints, tying him to the club until the summer of 2016. On 5 March 2014, Kelly appeared for the
Scotland under-21 side in a 2–2 draw against
Hungary at
Tannadice. Kelly was released by St Mirren at the end of the 2015–16 season. Kelly went on trial with
AFC Wimbledon during the 2016–17 pre-season, and permanently signed for the club on 1 August 2016. Kelly scored his first goal for the Dons on 14 January, in a 2–1 win against
Oxford United. He returned to Scottish football in June 2017, signing for
Ross County. Kelly was released by Ross County after the end of the 2019–20 season. Kelly signed for
Falkirk in October 2020. On 21 July 2021, Kelly joined
Scottish Premiership side
Livingston on an initial one-year contract. He signed a one-year contract extension with Livingston on 20 May 2022. In July 2024, Kelly joined
Cypriot First Division club
Karmiotissa. After leaving Cyprus as a free agent having not played a game for Karmiotissa, Kelly returned to Scotland and signed a short-term deal with
Scottish Premiership club
Dundee on 28 November 2024, running until 2 January 2025. On 4 December, Kelly made his debut for the
Dark Blues as a substitute in a home win over
Motherwell. On 4 January 2025, Dundee confirmed that Kelly's deal had ended after making 3 appearances for the club. On 27 February 2025, Kelly joined
Scottish Championship club
Partick Thistle on a short-term deal until the end of the season. On 11 March, Kelly made his debut for the
Jags off the bench in an away league victory against
Queen's Park. On 4 June, Thistle confirmed that Kelly had left the club. On 5 July 2025, Kelly joined
Cambodian Premier League club
Boeung Ket on a permanent deal. ==Personal life==