Duff is a tall, strong central defender who was invited to join Cheltenham Town by Mike Davis, youth team manager straight from school and spent a year in the youth team before being offered a professional contract in 2000. After a couple of years in the reserves and a loan spell at non-league Evesham United, Duff was ready to make to the move into first team football. He made his debut under manager Graham Allner in the 2002–03 season against Crewe Alexandra in a 4–0 defeat and the following season made a number of appearances alongside his brother Michael in central defence before Michael moved to Burnley. Duff was selected for the Northern Ireland under-21 squad for the away match in Armenia in March 2003 and made his international debut at under-21 level three months later against Spain in Lurgan. On the last day of the 2003–04 season he scored his first goal to equalise against Huddersfield Town, which later prevented Huddersfield achieving automatic promotion. Duff's performances during season 2004–05 earned him the club's Player of the Year award and established him as a first choice player. He went on to play an important part as the Robins won promotion in 2006 via a play off final victory over Grimsby Town at the Millennium Stadium and retained their League One status the following season. During both the 2006–07 and 2007–08 League One campaigns Duff's appearances were curtailed slightly by injury but he still managed to start nearly two-thirds of the over the course of both seasons. It was another frustrating campaign for Duff during 2008–09 when injury saw him unavailable for four and a half months during the middle part of the season. Nevertheless, he returned with gusto towards the end of that campaign becoming an important facet within a side that, despite suffering relegation, showed true spirit and determination.
Bradford City
On 2 July 2010 Duff signed a contract with Bradford City, with an option of keeping the 28-year-old for a further 12 months. Duff has also captained Bradford City as Simon Ramsden was injured, and vice captainZesh Rehman was a substitute. However Duff was substituted during the second half of the game and was replaced by the vice captain.
Retirement
Duff left Bradford City at the end of the 2010–11 season and in January 2012 announced his retirement at the age of 29 because of a spinal problem. In September 2011, Duff began studying for a degree at Hartpury College. In the summer of 2012 he became the under 18's coach at Bishops Cleeve.