Born in Stoke-on-Trent, Staffordshire, Johnson progressed through the Stoke Cityyouth system, before turning professional in May 1977. He was unable to affirm himself as a regular in the first team and, after making 34 league appearances, he joined Shrewsbury Town in May 1981. After making 180 appearances and scoring three goals in the league for Shrewsbury, he joined York City in July 1987 and was appointed as captain. He spent two seasons at the club, making 96 appearances and scoring one goal, before joining Football Conference team Macclesfield Town in 1989. He made 108 appearances and scored two goals in the league, before joining Leek Town while working as Stoke's Community Development Officer.