He began his career with Wrexham and Oswestry Town, before moving to Everton via Bradford City in 1956. After three years on Merseyside he returned to Wales to play for Swansea Town. He returned to hometown club Wrexham in 1963, before joining Wellington Town in 1965. The next year he returned to the Football League with Tranmere Rovers. He helped the club to win promotion out of the Fourth Division in 1966–67, before he signed with Port Vale in July 1968. He joined Northern Premier League side Runcorn in May 1969, and later turned out for Oswestry Town.
Williams began his career in Welsh football with Wrexham and Oswestry Town, before making his name with Peter Jackson's Bradford City in the 1955–56 season. His two goals in eight Third Division North games were enough to win him a move from Valley Parade to First Division side Everton.
The "Toffees" struggled at the lower end of the table under the stewardship of Ian Buchan in 1956–57 and 1957–58, and showed little sign of improvement in the 1958–59 season under Johnny Carey. In his three years at Goodison Park, Williams scored six goals in 31 top-flight games.
Williams then moved on to Swansea Town, a side sitting comfortably halfway down the Second Division under the stewardship of Trevor Morris. The "Swans" finished 12th in 1959–60, seventh in 1960–61, 20th in 1961–62, and 15th in 1962–63. In four seasons at Vetch Field, Williams scored 20 goals in 89 league games.
He then made a return to Wrexham in 1963. Ken Barnes's "Dragons" were relegated out of the Third Division in 1963–64, and could only manage a 14th-place finish in the Fourth Division in 1964–65. Williams then left the Racecourse Ground for non-league side Wellington Town, who went on to finish 13th in the Premier Division of the Southern League in 1965–66.