Born in Salford, Greater Manchester, Rose began his career as a trainee at Manchester United, where he was released before making a first-team appearance. Following his release, he joined Conference National side Chester City, where he appeared alongside his brother, Stephen. Rose was released after one season with Chester.
Hereford United
In July 2002, Rose joined Chester's Conference rivals Hereford United. While playing for Hereford, Rose made appearances for England National Game XI team. Following a successful season where he only missed one game, Rose committed to a new one-year deal with the Bulls in April 2003.
Yeovil Town
club Yeovil Town signed Rose on a two-year contract on 7 May 2004 following a second successful season with Hereford where the Bulls finished second in the Conference. Following a championship-winning season with Yeovil, Rose was named in the PFA Team of the Year for League Two. On 25 August 2005, having not featured for Yeovil's first team in the 2005–06 season, Rose joined Cheltenham Town on a monthlong loan deal as injury cover. He made three loan appearances for the club, but left by mutual consent. Scunthorpe United took Rose on loan on 2 January 2006 for an initial month-long loan deal. Having impressed Scunthorpe manager Brian Laws, Rose's loan was extended until the end of the season, making a total of 15 appearances. He was not offered a new contract with Yeovil following the expiration of his deal and was subsequently released.
Stockport County
On 15 June 2006, Rose signed a two-year contract with Stockport County. After missing the first few months of the 2007–08 season through injury, Rose penned an extension with the club for a further year in summer 2008, with the option of a further year. However, he was set to leave the club in the summer of 2009 after falling out with manager Jim Gannon, and had agreed to join Hartlepool United, but with Stockport in administration and a takeover looming, Gannon was made redundant and Rose decided to stay. In January 2010, Norwich City signed Rose on loan until the end of the season as a replacement to the injured Adam Drury who had torn a thigh muscle. He went straight into the Canaries squad in a game against Hartlepool. He scored on his debut with the game finishing 2–1 to Norwich and keeping the club at the top of the League One table.
Swindon Town
Having helped Norwich win promotion to the Championship, Rose signed for League One side Swindon Town on 30 June 2010 on a free transfer from Stockport on a two-year deal. Rose started the first five games of the season for the club, but was then dropped for Callum Kennedy and then Alan Sheehan, coming on for the latter and scoring an equaliser in a game against Plymouth Argyle, eventually losing the game 3–2.
Colchester United
In May 2011, Rose joined Colchester United on a two-year deal after Swindon were relegated and had his contact terminated. He started Colchester's opening five games following his switch, but he was dropped by manager John Ward following some poor performances and had to wait nearly four months for his next start, making Colchester's starting line-up only seven further times in the 2011–12 season. He began the 2012–13 season as a regular starter. He scored his first goal for the club on 21 August 2012 in a 2–2 draw with Portsmouth, equalising on the stroke of half-time with a left-footed strike from more than 30 yards. This goal would later win him the 'Goal of the Year' award at the end of season awards at the club. On 31 January 2013, his contract with Colchester was cancelled by mutual consent.
Rochdale
On 14 February 2013, Rose joined Rochdale in League Two having been a free agent since his release by Colchester United. On 15 May 2013, he agreed a new deal that would keep him at Spotland for two further seasons. On 1 July 2014, Rose agreed a one-year extension to his current deal, committing himself to the summer of 2016.
Morecambe
He was released by Morecambe at the end of the 2017–18 season.
Macclesfield Town
In July 2018, Rose joined Macclesfield Town, taking the squad number 24.
International career
Rose has been capped four times for the England National Game XI, which represents England at semi-professional level, making his debut in a 3–2 defeat to Italy.