Cox was born in Haywards Heath, West Sussex. He made his debut for Brighton & Hove Albion during a 2–0 victory over Plymouth Argyle on 29 August 2005. During the 2005–06 season, Cox also spent time on loan at Eastbourne Borough, featuring twice in their run in the FA Cup. Cox's next appearance for Brighton was on the first day of the 2006–07 League One season in the 1–0 victory away at Rotherham United, although he was sent-off during this match for receiving two yellow cards. Cox played a major part during his debut season in the first-team playing in 43 League games and scoring six goals. In the summer of 2007, Cox was rewarded for his fine start to his Albion career by being handed the number 7 shirt, previously occupied by Alexandre Frutos. After falling out of favour at Brighton, Cox was informed that he would be released from his contract when it expires on 30 June 2010.
Cox was later signed by Leyton Orient on 2 June 2010. He scored his first league goal for the Os on 28 August 2010, in the 3–0 triumph over Exeter City. On 3 October 2012, in the 2–0 league victory at Walsall, Cox scored a 60-yard goal from inside the Orient half, firing over the head of Walsall goalkeeper Karl Darlow. Cox was released on 1 September 2016, his contract terminated by mutual consent.
On 13 September 2016, Cox joined Crawley Town on a two-and-a-half-year contract. After signing outside of the Summer transfer window, Cox was ineligible to play for Crawley Town until 2 January 2017, so therefore he joined Burgess Hill Town on a loan deal. On 8 October 2016, Cox made his Burgess Hill Town debut in a 3–2 victory over Leatherhead, playing the full 90 minutes. On 25 October 2016, Cox scored his first goal for Burgess Hill Town in a 1–0 victory over Hendon, netting the winner in the 53rd minute. After a short loan spell with Burgess Hill Town, Cox returned to Crawley and made his debut on 2 January 2017. Featuring for 61 minutes before being replaced by Jordan Roberts, in a 2–0 home victory over Yeovil Town. On 28 June 2018, it was announced that Cox would leave Crawley, following a mutual termination in his contract.
Eastbourne Borough
On 3 August 2018, a day before the season began, it was confirmed that Cox had signed for Eastbourne Borough who play in the National League South.