A defender who had previously played for Stafford Rangers and Tamworth, Brown joined Reading on 23 November 2005 on loan, before signing permanently in January 2006, for a fee in the region of £100,000. After one month since joining Reading, but made no appearance for the team so far, Brown joined Bournemouth, to cover for Shaun Cooper, who suffered an injury. After one month with Bournemouth, Brown made a return to Reading. Ahead of a new season, with Reading promoted, Brown suffered an ankle injury, in a friendly match against Bromley on 15 July 2006, which they won and his injury ruled him out for two months. Brown said on his injury and career: "I am devastated, absolutely gutted. This was going to be the biggest year of my career. But everything happens for a reason and I have to stay really positive and try to come back even stronger and more determined. I have never even had an injury before, so it's a new experience for me. It's about being strong mentally as much as anything. I will be out for around six to eight weeks and then I will need a few weeks after that to get fit." However, Brown suffered another set-back injury on his ankle. In January, Brown made a recovery from injury.
On 5 June 2007, Reading took up the option to extend his contract by a year, which will keep him at the club for the duration of the 2007–08 season. He moved to Walsall on loan for the remainder of that contract on 27 March 2008.
He was released by Reading on 16 May 2008, following their relegation from the Premier League. He signed a week-by-week contract with Yeovil Town on 11 August 2008. Having yet featured in the club's starting line-up for the first eight games, Brown finally made his debut for the club, making his first start and playing 90 minutes, in a 2–1 loss against Southend United on 4 October 2008. Five weeks after his debut, Brown scored his first goal for the club, in a 2–0 win over Oldham Athletic. After scoring his first goal, Brown says "I am a big guy and I like going forward, I should be scoring a lot more goals. I have given myself a target of a few more and it is something I work on in training. Scoring at Oldham was a dream. It was good to score and get the tension out of the whole team. Once we scored we kicked on and got a good win away from home." Also a week after scoring his first goal, Brown received a red card for a professional foul, in the first round replay of the FA Cup, in a 5–0 loss against Stockport City. Skipper Terry Skiverton believes Brown must move on from the red card incident. A month later, on 24 January 2009, Brown scored his second goal, in a 1–0 win over against Southend United – the team that he made his Yeovil debut. A week later, on 14 February 2009, Brown scored his third goal, in a 3–1 win over Peterborough United. However, his time at Yeovil Town was struggling despite scoring three gis battling to hold down a regular place in the Yeovil Town defence. He released by Yeovil Town at the end of the 2008–09 season.
Brown spent the summer of 2009 on trial at Gillingham, Wrexham and Burton Albion before signing non-contract forms at Conference North side Redditch United. At the end of September, Brown then joined Burton Albion on a one-month deal and played one League game against Accrington Stanley. In January, Brown was then released by the club, along with striker Serge Makofo.
On 19 January, Brown joined Telford United on a short term contract, where he made one appearance. After leaving AFC Telford, Brown then moved on to Truro City. On 11 March 2010 Brown signed for Aldershot Town on non-contract terms until the end of the 2009–10 season. On 26 May 2010 Brown Joined League One Leyton Orient on a one-year deal.
On 24 January 2011 he joined Stockport County on an initial one-month loan deal and made his club debut five days later and scored an own-goal in his new club's 4–0 defeat at Rotherham. Having made six appearance, Brown loan spell at Stockport County was extended for another month. Again, his loan spell was extended until 26 April, having stayed at Stockport County, under the 93-day rule. He returned to Orient on 26 April 2011 having made 17 appearances during his loan spell.
In May 2011, he was released by Orient at the end of his contract and a week later rejoined Aldershot Town on a free transfer, signing a two-year contract. After seven months at the club, with only ten appearance, his contract with Aldershot Town ended after having his contract terminated by mutual consent.
On 4 February 2012, Brown signed for Preston North End, having had his Aldershot contract settled, allowing him to complete his formalities with the Lilywhites after the deadline. Brown did not play many games while with the club, but he did feature as a striker against Sheffield Wednesday. In May 2012, Brown was released from the club after being told his contract would not be renewed.
After leaving Preston, Brown joined Maltese side Floriana on 23 August 2012, become his first club outside England. One day after his move, Brown made his debut for the club, in a 1–1 draw against Ħamrun Spartan, making his first start and playing 90 minutes for the club. Aged 28 on his debut, Brown scored his first goal with a header, from a cross from Aman Verma, in a 3–0 win over Rabat Ajax. However, during the match, Brown received a red card following a second bookable offence after a confrontation with Patrick Borg, who also received a red card. In early November, Brown's contract with Floriana was terminated over a financial dispute, along with that of Akanni-Sunday Wasiu. The dispute led to Malta FA Control and Disciplinary Board threatening to give Floriana a points deduction, unless the club paid the wages owed to Brown. Eventually, the club avoided a points deduction after settling outstanding payments to Brown and Wasiu.
In March 2013, Brown joined newly promoted League of Ireland Premier Division club Limerick. Brown's registration was completed only hours ahead of Limerick's second match of the season, away to 2012 runners up Drogheda United. He made an immediate impact, getting on the end of a cross to head home Limerick's first top flight goal in 19 seasons, leaving both sides level at half time. Shortly after the restart, Brown received his marching orders as the referee adjudged him to have taken down an opponent in the box. Limerick 'keeper Barry Ryan saved the resultant penalty, and a very eventful match eventually finished with both sides sharing the spoils at 2–2.
With little prior publicity, Brown appeared on the bench for the Harriers' FA Cup game against Sutton United on 9 November 2013.
Brown played for the England National Game XI team while with Tamworth.