Mills was born in Leicester, Leicestershire. He progressed through the ranks at Derby County and was a regular member of the reserve team in the 2009–10 pre-season. After playing in a 4–0 win away to Shrewsbury Town's reserves in the Central League Division One Central Section in August 2009, Mills moved to Conference North club Solihull Moors on loan for a month. He scored four goals in four matches, and the loan was extended for a second month, but was cut short due to an injury crisis at Derby, and he was named amongst the substitutes for the first team's visit to Leicester City in the Championship on 18 October 2009. He remained unused on that occasion, but did make his debut three days later, as a 79th-minute replacement for Gary Teale in a 2–0 defeat away to Middlesbrough. He returned to Solihull for six weeks on 19 November, and on 29 January 2010 joined Macclesfield Town of League Two on a month's loan. He made only one appearance for the club, as a substitute in a 2–1 away defeat against Bury. After impressing in a pre-season fixture for AFC Telford United against Hednesford Town, which Telford won 2–0, Mills joined the Conference North club in August on a month's loan. After hitting three goals in his first six games, the loan was extended until January 2011. He returned to Derby for two weeks before rejoining Telford on 31 January for the remainder of the campaign. Four days after Derby confirmed that Mills would be released at the end of the season, he played for an hour in the Conference North play-off final in the 3–2 victory over Guiseley that brought Telford promotion to the Conference National. On 15 August, Mills rejoined AFC Telford United on a one-year contract. Mills scored on his second debut for Telford and his first Conference National match; entering the game as a 67th-minute substitute, he produced a stoppage-time consolation goal in a 2–1 defeat against Lincoln City. He was released by Telford in January 2012. Mills signed for Worcester City of the Conference South until the end of the season. He was unable to find a Conference Premier club, so rejoined Worcester for 2012–13. In March 2013 he moved on to Conference North Boston United, and agreed to stay on for 2013–14, but work commitments took him to the Manchester area and he signed for Barrow, also of the Conference North. He made eight appearances for Barrow, then spent a month on loan with King's Lynn Town of the Northern Premier League Premier Division before joining Southern LeagueCorby Town, initially on loan. After 46 goals from 113 appearances in league competition, and helping his team gain promotion to the National League North as 2014–15 Southern League champions, he left the club following their relegation after one season at that level. Mills spent the first few months of the 2016–17 season with Tamworth of the National League North before moving on in January 2017 to Nuneaton Town where he was reunited with his former manager at Corby Town, Tommy Wright. After Wright took over as manager of yet another National North club, Darlington, Mills followed him in November 2017. He made 16 appearances in all competitions, and was released at the end of the season. He signed for Southern League Premier Central club Stourbridge in May 2018, and went on to score freely for them, but after a "difference of opinion" with the manager about his role, he left Stourbridge in October 2019 for divisional rivals Bromsgrove Sporting.