Hunt made his professional debut as a substitute for Colin Hendry in the First Division match against Sheffield United on the final day of the 2000–01 regular season, shortly before Bolton Wanderers won promotion to the Premier League via the play-offs. He had to wait some time for further first-team opportunities, only playing in two FA Cup ties before making his breakthrough at the start of the 2003–04 season when he became a key part of the defence and a first-team regular for Bolton. His Premier League debut came in the 4–0 defeat at Manchester United on 16 August 2003. He made over a century of appearances for the club, scoring once, against Liverpool in February 2004. His form earned him a four-year contract at Bolton, taking him until the end of the 2010–11 season, which he signed on 30 August 2007.
The departure of Sam Allardyce to Newcastle United and his eventual replacement by Gary Megson saw Hunt fall out of favour at the Reebok Stadium and he joined Championship club Birmingham City on an emergency one-month loan deal as cover for the injured Stuart Parnaby and Stephen Kelly on 3 November 2008. He made his debut the same day, in a 1–0 defeat to Coventry City at St Andrew's. The loan was extended for a further month, but on 30 December, a 24-hour recall clause in the loan agreement was invoked and the player returned to Bolton.
Despite being recalled Hunt played no further role for Bolton in the ensuing year and was again loaned out to a Championship club, this time Derby County, on 7 January 2010 as competition for the club's sole available rightback, Paul Connolly. Initially a month's loan, it was extended until the end of the season.
On 30 July 2010, Hunt signed a two-year deal with Championship club Bristol City. He made his debut in a 3–0 loss to Millwall. Hunt made seven appearances in the first two months of the season, and an eighth in a 3–1 loss against Leeds United on 13 November, but that was his last for the club. Under Steve Coppell, Hunt was put in the first team which gave Hunt his debut for the club until Coppell's unexpected resignation over his lack of passion for the job. Under Coppell's assistant managerKeith Millen, Hunt was given more playing time until Hunt fell out favour with Millen. Things came to a head when Hunt replaced an injured Louis Carey in a game against Leeds. At the time City were drawing 1–1 in a hard-fought game but went on to lose 3–1. Millen favoured Carey and Jordan Spence at right back until he was sacked. At the start of the 2011–12 season, Millen was keen to offload him but received no offers for the player. On 31 January 2012, Hunt's contract was terminated.
A few days later, Hunt signed a short-term deal with Preston North End as a free agent. He played regularly over the next few months, and was released when his contract expired.
Hunt signed for Rotherham United on 22 May 2012. A hamstring tear during a pre-season friendly delayed his competitive debut, he played just a few matches before falling out of favour, and he joined Accrington Stanleyon loan in January 2013.
Accrington Stanley
On his third appearance, Hunt collided with Plymouth Argyle's Ronan Murray, lost consciousness, and was taken to hospital after ten minutes of treatment on the pitch. Once his recovery was well on the way, the loan was extended to the end of the season. He signed for Stanley on a two-year deal in June 2013 after Rotherham released him from his contract. Hunt chose to leave Stanley at the end of his contract.
In the January 2016 transfer window, Hunt joined Leyton Orient until the end of the season with an option for a further year. He scored his first goal for Orient in a 3–0 win at Colchester United on 12 November 2016.
On 31 July 2018, Hunt joined Crewe Alexandra on a one-year deal after a successful trial, making his first team debut on 4 August 2018, coming on as a 29th minute substitute for George Ray in a 6–0 win over Morecambe. He signed a new one-year deal in May 2019. On 12 October 2019, he scored his first Crewe goal in a 4-2 Crewe win at Carlisle United. His release by Crewe was announced on 10 June 2020.