He began his career as an apprentice at Chelsea, making his debut as a 17-year-old. Francis was initially a regular in the side, but the arrival of new goalkeeper Eddie Niedzwiecki in 1983 saw him relegated to the reserves for most of the next three seasons. Francis returned to the first team after an injury to Niedzwiecki, but conceded 14 goals in three games over Easter 1986 and never played for the club again. He made a total of 88 appearances in all competitions for Chelsea.
He left in 1987 to join Reading for £15,000, where he played a further 250 games and won the club's Player of the Year award in the 1986–87 season, before joining Huddersfield Town in 1993.
He was Huddersfield's first-choice goalkeeper for four seasons, then fell out of favour and left in 1999 to join Northampton Town, where he made just three league appearances.