Johns began his career with Minehead. In 1976, he signed with Millwall. In 1978, he played eight games with the Tampa Bay Rowdies of the North American Soccer League.[3] However, the Rowdies had two good goalkeepers in Winston DuBose and Paul Hammond. Consequently, Johns saw time in only eight games before being sent on loan to Sheffield United where he played one game. The Rowdies then sent him on loan to Charlton Athletic. In February 1979, the Rowdies traded Johns to Charlton in exchange for Mike Flanagan who had recently been ejected from a Charlton game for fighting with his teammate Derek Hales.[4][5] Johns experienced his greatest success at Charlton. Over ten seasons, he played 288 games and was named the 1981, 1983 and 1984 Charlton Player of the Year.[6] He later played for Queens Park Rangers before finishing his career with Maidstone United.