Williams was born in
Liverpool,
Merseyside. In November 2014 he appeared as an unused substitute for the
UEFA Europa League game against
FC Krasnodar. He scored his first goal for the club in a 4–2 win at
Burton Albion on 31 October 2017. In July 2019 he signed for
Wigan Athletic. On 20 August 2020, Williams signed for
Bristol City for £1,200,000 signing a four-year deal. On 29 May 2024, Williams signed a new three-year contract extension. ==International career==