Woods joined Southampton's academy aged 6, and remained there until the under-16s.[4] He then joined Gillingham's youth setup, before turning professional with the Kent side in January 2018, at the same time as Jack Tucker and Ryan Huckle.[5] He made his debut on 13 November 2018 in the EFL Trophy.[6]
On 5 December 2018, Woods joined Sittingbourne on a one-month loan deal alongside his teammate from Gillingham, Danny Divine.[7] On 10 January 2019, Sittingbourne announced that they had extended both players' loan deals for the rest of the season.[8]
He was offered a new contract by Gillingham at the end of the 2018–19 season.[9] He moved on loan to Concord Rangers in October 2019.[10] The loan ended a month later, but he returned to the club for a second loan spell in December 2019.[11][12]
Woods was to be released by Gillingham at the end of the 2019–20 season,[13] but then signed a contract on 4 September 2020 to stay at the club for another year.[14] Woods made his league debut for the club on 10 October 2020 as a 90th minute substitute in a 3–1 win over Oxford United.[15]
On 27 July 2021, Woods signed a new contract with the club and joined National League side Dover Athletic on loan until 10 January 2022.[16] In November 2021, Woods scored a first career goal as he equalised for a second time in a match where Dover were defeated 3–2 by Wealdstone.[17] In January 2022, Woods' loan deal was extended until the end of the season.[18]
On 27 June 2022, Woods joined newly promoted National League club Maidstone United on a free transfer.[19] Following their relegation at the end of the 2022–23 season, he was announced to be leaving the club upon the expiration of his contract.[20]