[6] Nichols joined Exeter City from local club Twyford Spartans as a youth at the under-11 age group.
[8] He made his professional debut on 7 May 2011, coming on as a half-time substitute for Bertrand Cozic in a 2–1 League One victory away to Sheffield Wednesday in the final match of the 2010–11 season.
[9][10] Nichols made his first appearance of the 2011–12 season as a 76th-minute substitute in a 2–0 League Cup win at home to Yeovil Town.
[12] On 7 January 2012, it was announced that Nichols had joined Conference South side Dorchester Town on a one-month loan.
[13] He made his debut for Dorchester Town that same day in a 3–0 win over Thurrock, with Nichols scoring his first goal for the club after coming on as a substitute.
[14] In response to Nichols' debut appearance, Dorchester Town manager Alan Knight stated: "It was an encouraging performance and it was nice that he got his goal.
[17][18] Nichols also made 12 appearances for Exeter City across the 2011–12 season, scoring one goal,[11] as the club were relegated to League Two after finishing 23rd.
[28][29] In March 2013, Nichols re-joined Conference South side Dorchester Town on loan,[30] where he made five appearances and scored one goal.
[46] Nichols received a straight red card for kicking out at an opponent in Exeter's 1–1 draw at home to Morecambe on 28 March 2015, resulting in a three-match ban.
[61] Nichols scored for Peterborough United in a 4–1 defeat to Chelsea in the FA Cup third round on 8 January 2017,[62][4] which he later described as a "career highlight".
[59] On 17 July 2017, Nichols joined League One side Bristol Rovers for a fee of £350,000,[65] subject to him passing a medical.
[67] He debuted for Bristol Rovers as a 15th-minute substitute for James Clarke in a 1–0 defeat away to Charlton Athletic, despite the hosts having a player sent off after six minutes.
[93] On 8 November 2020, he scored a hat-trick as Crawley progressed to the second round of the FA Cup after defeating Torquay United 6–5 after extra time.
[100][101] On 20 April 2021, he was shown a straight red card after elbowing Newport County defender Liam Shephard in the head in the 89th-minute of a 2–0 defeat.
[105] Nichols made his first appearance of the 2021–22 season on 4 September 2021 in a 1–0 defeat to Bristol Rovers, and signed a new two-year contract with the option of a further year that day.
[108] After appearing 23 times and scoring 4 goals during the 2022–23 season,[109] Nichols was left out of the matchday squad on two consecutive occasions in December 2022, leading to rumours he was to be involved in a transfer away from the club.
[110] Nichols later stated in an interview that " I got told that [Crawley] had accepted an offer for me from another club and I couldn't play any more", adding that "at the time I was not asking to leave at all".
[114] He scored in both of his following two appearances for the Gills, and also picked up a further assist, leading to his nomination for the League Two Player of the Month award for January, but again lost out, this time to Conor McAleny.
[115][116] He scored a further three goals in the club's remaining 20 league matches, as Gillingham finished 17th and 12 points clear of the relegation places.
[63] Peterborough United manager Grant McCann described Nichols as a "very good footballer", going on to say that "he moves well and links up play well".