After impressing in reserve and youth team games, Nicholls broke into Walsall's first team in the 2005–06 season, making his debut in December 2005 in a FA Cup clash with Yeovil Town. In that same season Nicholls went on to make 13 appearances which included a Football League Trophy clash with Swansea City, it was in this game that he scored his first professional goal for the club. However, his season ended prematurely as he broke his leg while playing in a youth cup tie with Hednesford Town. In 2007, Nicholls went on loan to Burton Albion. He made 14 appearances for the Brewers before returning to Walsall at the end of April. During the 2007–08 season, Nicholls played as both a right winger and a striker, making 24 appearances and scoring three goals, which included an FA Cup goal in an away replay with Millwall. Nicholls was offered a new two-year contract by the club on 10 May 2010 which he accepted. He scored his first goal of the 2010–11 season against Brentford in a 2–1 victory, by scoring a well placed lob. In his final season for the club he was joint top goal scorer with 8 goals. Nicholls went on to make a total of 219 appearances for the club before leaving on a free transfer in 2012.
Northampton Town
In June 2012, Nicholls joined League Two side Northampton Town on a free transfer after his contract expired. Nicholls soon became a fans favourite at the club with his all energy displays and some vital goals, he scored 8 goals in 16 games before his season was ended prematurely when on 27 October he broke his leg after a late challenge from Port Vale defender John McCombe.
Exeter City
On 1 September 2014, Nicholls joined Exeter City, on a one-month loan deal where he Helped them move clear of the relegation zone. Nicholls completed his permanent move to Exeter City on 5 January 2015. Nicholls played a total of 73 games for Exeter before moving to Barnet
On 6 July 2018, Nicholls joined Crewe Alexandra on a one-year contract, and, on his first team debut on 4 August 2018, scored twice during a 6–0 win over Morecambe. At the end of the 2018–19 season, Nicholls was released and was set to leave the club.
Solihull Moors
On 23 August 2019, Nicholls joined Solihull Moors on a one-month contract.
Stourbridge
Following the expiry of his short-term contract with Solihull, Nicholls joined Stourbridge.