MacKenzie started his career as a youth player at
Rangers. He made two appearances for the first team (at the end of the
2003–04 season), against
Motherwell and
Dunfermline, respectively.
Dundee He joined
Dundee on a
free transfer in June 2006 under the management of
Alex Rae and signed a two-year contract. He made his debut, in the opening game of the season, in a 1–0 loss against
Partick Thistle. Later in the season, MacKenzie would be often used in first team ins and out in his first season. In 2007–08 season, MacKenzie playing time would increase, making 33 appearances. He scored his first goal, in a 3–0 win over
Stirling Albion, with a header on 12 April 2008. The 2008–09 season was overshadowed for MacKenzie as he suffered injuries, like toe and many more. In addition, MacKenzie have discipline issue, earning two red cards against
Ross County on 28 March 2009 and
Livingston on 28 April 2009.; which MacKenzie made 19 appearances. In 2009–10 season, MacKenzie had average season with the club, making 25 appearances. He scored his second goal in his Dundee career, in a 2–1 win over
Raith Rovers on 24 October 2009. However, several days later, in the quarter final of Scottish League Cup, MacKenzie scored an own-goal against his former club, Rangers. He was released by the club on 4 May 2010 along with eight other players.
Milton Keynes Dons MacKenzie signed for English League One side
Milton Keynes Dons on 14 May 2010, having signed a pre-contract deal two months earlier in March. MacKenzie missed nine fixtures, due to injuries and made his debut for the club, on 21 September 2010, in the third round of League Cup, in a 3–1 loss against
Birmingham City after coming on as a half-time substitute. Four days later, he made his league debut, in a 2–1 loss against
Peterborough United. On 30 October 2010, MacKenzie received a straight red card after a professional foul, as MK Dons lost 4–2 against
Tranmere Rovers. Then on 5 February 2011, MacKenzie sent off again after a second bookable offence, in a 2–2 draw against
Sheffield Wednesday. He scored the winning goal against local rivals
Peterborough on 21 March 2011. He scored his second goal in three games for the Dons with a header away to play-off rivals
Southampton. In 2011–12 season, MacKenzie made twenty-appearance, but soon would be often used in first team ins and out. On 17 September 2011, he made assist
Dean Lewington before being sent-off for stamping on
Alan Lee, in a 1–1 draw against
Huddersfield Town. After the match, Manager
Karl Robinson criticise MacKenzie as "disgrace", believing he deserved to be punished. In the first match of 2012, MacKenzie scored his first 2012-goal, in a 1–0 win over
Colchester United, but his goal against Colchester United was later recorded as an own goal by the Football League, eight days later. Several weeks later on 24 January 2012, he scored an own-goal, in a 4–2 loss against
Stevenage; then scored another own-goal, in the next game, in a 1–1 draw against Sheffield Wednesday. On 14 February 2012, MacKenzie, once again, sent-off for giving away the penalty and then head-butted
Yann Kermorgant. After the match, Robinson was disappointed with his action, though he was sarcastically proud of him "in a weird way for coming out and accepting his punishment." MacKenzine, himself, apologised to teammates and my manager and the fans and regretted his action, something that it's wrong. After serving his four match ban, MacKenzie was since left out of the first team squad throughout March. He made his return on 7 April 2012, in a 1–1 draw against
Preston North End. In 2012–13 season was overshadowed for MacKenzie when he underwent hip surgery, which ruled him out for three months. In late-December, he made a return on the bench, in a 3–2 loss against
Coventry City. After making two appearances since his return, MacKenzie soon suffered a knock in a FA Cup fourth match against
Queens Park Rangers after playing 20 minutes in the first half, which Milton Keynes Dons won 1–0 to send the club through the next round. After missing two games, MacKenzie made his return from injury. At the end of the 2012–13 season, the club activate it options to keep MacKenzie and was signed on 16 May 2013.
Blackpool On 1 March 2013, MacKenzie signed on loan for
Blackpool until the end of the season. The day after signing for the club, MacKenzie made his debut in a goalless draw with
Bristol City. On 5 July 2013, MacKenzie signed for Blackpool on a permanent deal for an undisclosed fee.
Doncaster Rovers On 29 June 2015 MacKenzie signed for
Doncaster Rovers on a free transfer. On 1 February 2016 MacKenzie joined Notts County on a one-month loan. He made his début in 2–1 defeat to York City. He made 4 appearances before returning to Doncaster Rovers at the end of his loan spell.
St Mirren MacKenzie joined
Scottish Championship side
St Mirren in June 2016, signing a one-year contract with the club. After establishing himself as a first team regular and scoring 5 goals, MacKenzie agreed a one-year contract extension with the club in May 2017. Despite suffering from injuries MacKenzie was able to play 18 times for Saints and helped them lift the
2017–18 Scottish Championship title, which lead to him signing a further one-year contract extension in May 2018. Injury once again led to MacKenzie missing a large part of the following season, after he had to undergo surgery in August 2018. He finally returned to playing in March 2019, and managed to play seven matches to help Saints avoid relegation from the
Scottish Premiership. He signed a further one-year contract extension in June 2019. In June 2020, MacKenzie left Saints when his contract expired.
Peterhead MacKenzie joined
Peterhead in the summer of 2020, and made seven appearances for the
Blue Toon before retiring in March 2021. ==International career==