Born in Enfield, Greater London, Charles joined Luton Town as a 9-year-old, turning down rivals Watford in the process. In his first year as an apprentice in 2006, Charles scored 17 goals for the youth team, earning him the top goal scorer acclaim. He was loaned to neighbouring Hitchin Town during the 2006–07 campaign, where he netted 3 goals in 10 appearances for the Canaries, including a 25-yard volley against Rugby Town. In his second year as a scholar, Charles was sent out on loan to Conference North side Hinckley United in December 2007, where he made two appearances, one in the league, in a two-month loan spell. On 8 April 2008, Charles made his Luton Town debut as a substitute against Southend United. He went on to make 7 league appearances for Luton during the latter part of the season, operating in attack alongside Sam Parkin. He scored his first goal for the club in a 3–0 victory against Oldham Athletic, after chesting the ball down, turning his marker and volleying home. This goal earned him the 'Goal of the Season' award as voted for by Hatters fans. Charles signed a professional contract at the end of the season, and was also awarded the 'Young Player of the Season' trophy. In the 2008–09 season, Charles made ten league appearances for Luton, scoring once. He also scored in the Football League Trophy Southern Area Final in a 4–3 penalty shoot-out victory against Brighton that saw Luton into the final at Wembley, which they went on to win. On 26 March 2009, Charles was sent on loan to Kettering Town, where he made nine appearances, scoring once. On 26 November 2009, Charles joined Kidderminster Harriers, the team he had scored a late winner against as a Luton player in October, on a one-month loan as part of the deal taking Harriers striker Matthew Barnes-Homer to Luton. He played three games at Kidderminster, before returning to Luton. Charles did not play another game that season, and was released from the club on 31 May 2010. Charles signed for Luton's Conference National rivals Rushden & Diamonds on 1 July 2010. In June 2011, he joined Cambridge United. He was a free transfer due to Rushden and Diamonds' expulsion from the football conference. He signed a one-year contract with Cambridge United in the summer of 2011. On 6 January 2012, Charles joined Newport County on loan until the end of the 2011–12 season. Charles made his debut for Newport versus Luton on 7 January but was sent off after 33 minutes for a two-footed challenge. Following the end of his loan spell at Newport County, Charles left parent club Cambridge United as he decided not to exercise his one-year extension to his contract and joined Newport on a permanent deal. Charles was released by Newport County on 5 February 2013.