Williams debuteerde in 2001 in het betaald voetbal in het shirt van Hednesford Town. Op 1 januari 2003 vertrok hij transfervrij naar Stockport County. In vijf jaar speelde Williams 162 competitiewedstrijden voor The Hatters.
In maart 2008 verhuurde Stockport County Williams voor de rest van het seizoen aan Swansea City, dat hem op 22 mei van dat jaar definitief vastlegde. Op 16 september 2008 scoorde hij zijn eerste doelpunt voor The Swans, tegen Derby County. Williams speelde op 16 augustus 2014 zijn 250ste competitiewedstrijd voor Swansea, die de ploeg met 1–2 won uit bij Manchester United.
Williams maakte op 26 maart 2008 zijn debuut in het Welsh voetbalelftal. In oktober 2012 maakte Welsh bondscoach Chris Coleman Williams aanvoerder van het nationaal elftal. Daarvoor behoorde de aanvoerdersband toe aan Aaron Ramsey. Met Wales nam Williams deel aan het Europees kampioenschap voetbal 2016 in Frankrijk. In de met 3–1 van België gewonnen kwartfinale maakte hij zijn tweede interlanddoelpunt: nadat de Belg Radja Nainggolan de score had geopend, maakte Williams na 31 minuten de gelijkmaker.[1] 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.