Holmes started his career with Sheffield Wednesday and after failing to make any first-team appearances he joined Luton Town. He was released by the club due to financial reasons in the summer of 2003, but was eventually handed a new contract in November. After being loaned out to Chesterfield and Lincoln City during the 2006–07 season, Holmes left Luton, having made over 100 appearances for the club. He was signed by Rotherham United, who loaned him out to Conference Premier club York City in 2008. He was released by Rotherham in 2009 and was signed by Harrogate Town, before joining Ebbsfleet United. Following Ebbsfleet's relegation, he signed for Hayes & Yeading United.