Williams werd geboren in Milton Keynes en sloot zich aan bij Milton Keynes Dons. Op 12 november 2011 debuteerde hij in de FA Cup tegen Nantwich Town. In die wedstrijd werd hij de jongste debutant voor MK Dons en de jongste speler die tot dan toe gescoord had in de FA Cup. In juni 2012 trok hij naar Fulham. Op 16 augustus 2014 debuteerde Williams in de Championship tegen Millwall.[3]
Op 4 juni 2014 debuteerde hij in het Welsh voetbalelftal in een oefeninterland tegen Nederland. Hij werd opgeroepen als vervanger voor de geblesseerde Gareth Bale en mocht na zeventig minuten debuteren als international. Nederland won met 2–0, door doelpunten van Arjen Robben en Jeremain Lens.[4] Bondscoach Chris Coleman liet nog twee andere Welshmen debuteren: ook Paul Dummett (Newcastle United FC) en James Chester (Hull City AFC) speelden hun eerste interland. Met Wales nam Williams deel aan het Europees kampioenschap voetbal 2016 in Frankrijk. Wales werd in de halve finale uitgeschakeld door Portugal (0–2), na in de eerdere twee knock-outwedstrijden Noord-Ierland (1–0) en België (3–1) te hebben verslagen.