He began his career at Manchester City, making his Premier League debut in 2002. He enjoyed loan spells out at Macclesfield Town, Walsall, Rochdale, and Hartlepool United, before signing a contract with Barnsley in March 2004. A key player at the club, he helped the "Tykes" to promotion out of the League One play-offs in 2006. He left the club after Barnsley withdrew their offer of a contract, and subsequently signed with Tranmere Rovers. He played 144 games for Rovers in league and cup competitions, before transferring to Morecambe for the 2010–11 season. He joined Port Vale on non-contract terms in February 2012, and helped the club to secure promotion out of League Two in 2012–13. He retired in May 2014 due to a chronic knee injury, but, having rejoined Tranmere Rovers as a coach in October 2014, returned to playing two months later.