A product of the youth system at Colchester United, Richards won his maiden call into the first team squad for a League One match versus Hartlepool United on 30 August 2004. He remained an unused substitute during the 2–1 defeat and had to wait until 3 September 2005 to make his debut, which came with a start in a 0–0 draw with Bristol City. He made 19 appearances during the 2005–06 season and helped the Us to automatic promotion to the Championship. Despite scoring his first goal for the club with the only goal of the game versus Preston North End on 30 January 2007, Richards was largely out of favour during the 2006–07 season and spent two months away on loan. Richards departed Layer Road in August 2007, after making 24 appearances and scoring one goal for the club.
On 9 February 2007, Richards joined League One strugglers Brentford on a one-month loan, which was later extended until the end of the 2006–07 season. He made 10 appearances and scored one goal, which came with the opener in a 2–2 draw with Oldham Athletic on 25 March, before his spell came to an end due to a pelvic injury suffered during a match versus Cheltenham Town on 7 April.
Southend United
Richards joined League One club Southend United on a two-year contract for an undisclosed fee on 4 August 2007. After making just 14 appearances during the first half of the 2007–08 season, Richards departed Roots Hall on 25 January 2008.
Gillingham
On 25 January 2008, Richards joined League One strugglers Gillingham on a -year contract for an undisclosed fee. At the end of the 2008–09 season, he was part of the team which secured promotion back to League One with victory in the 2009 League Two play-off Final. Despite suffering ankle ligament damage and a broken toe in April 2010, Richards signed a new two-year contract in July 2010, but his Gillingham career was ultimately ended by a fractured fibula suffered during a 3–1 victory over Barnet on 6 March 2012. Richards was released in May 2012 and made 122 appearances and scored six goals during seasons at Priestfield.
On 25 June 2012, Richards dropped into non-league football to join Conference Premier club Luton Town on a two-year contract. Richards' time at Kenilworth Road was beset by injury and despite multiple operations and extensive periods of rehabilitation on an injured ankle, he failed to win a call into a squad before his contract was mutually terminated on 14 October 2013. Richards' departure signalled his retirement from football.