Born at Singleton Hospital, Swansea, Williams is the son of former Llanelli RFC lock Lee Williams. He grew up in Llanelli and attended the localCoedcae School with Scarlets team-mate Samson Lee, and began his rugby career with New Dock Stars RFC, a former club of veteran Scarlets prop Phil John. He joined the Scarlets academy at the age of 15 and made his first appearance for Llanelli RFC as a replacement in a 32–16 win over Cardiff RFC on 4 December 2010. At the end of January 2011, he made his first appearance for the Scarlets, coming on as a replacement for Steven Shingler for the final seven minutes of a 34–7 Anglo-Welsh Cup defeat to Saracens. He started his first game two weeks later, playing at fly-half for Llanelli and scoring five points in a 59–15 defeat to Aberavon RFC. Over the course of the following 2011–12 season, Williams gradually made the transition to full-back as he played 24 times for Llanelli. As the team's regular kicker, he amassed 337 points, including 12 tries. For his performances in November 2011, he was named as the Principality Premiership Player of the Month, but his stand-out performance came in April 2012 in a 55–8 win over Newport RFC, in which he scored four tries on the way to a total of 35 points. He made his second appearance for the Scarlets in October 2011, against Leicester Tigers in the Anglo-Welsh Cup; after coming on for starting fly-half Aled Thomas in the 53rd minute, Williams scored a last-minute solo effort, which he also converted to seal a 31–3 victory. Williams was also part of the Wales Under-20 team for the Six Nations in February and March 2012, making appearances against England and Italy; he also scored two conversions against Italy.
Scarlets
After being awarded with a development contract for the 2012–13 season, Williams made his first league start for the Scarlets as a full-back away to Connacht on 15 September 2012, scoring two tries and a conversion on the way to a 24–11 victory and the man of the match award. After missing the team's next game against the Ospreys, he returned to the side for a 22–20 defeat away to Benetton Treviso; Williams was at fault for Treviso's third try of the game, as his kick was charged down and run in by Robert Barbieri. Things got worse for Williams in October 2012, when he suffered a dislocated shoulder in a 38–28 victory over Gala RFC in the British and Irish Cup, which kept him out for four months. After his return, he was called up to the Wales Under-20 team for the 2013 Six Nations, appearing in Wales' games against France, Italy, Scotland and England, as well as returning to the fly-half position for Llanelli for all eight of the remaining Premiership games he was available for. He capped his comeback with four appearances at the 2013 IRB Junior World Championship, including an 18–17 victory over reigning champions South Africa in the semi-finals. With the departures of wingers George North and Andy Fenby from the Scarlets after the 2012–13 season, Williams found himself back in the Scarlets team for 2013–14, albeit out of position. After starting on the bench for the first game of the season against Leinster, Williams started the next six games on the left wing, scoring tries in the league against Edinburgh and in the Heineken Cup against Harlequins, sandwiching a penalty against the Glasgow Warriors. On 5 April, it was announced that Williams would be joining Bristol Rugby ahead of the 2016–17 season.
Dragons
Williams joined the Dragons for the 2017-18 season.
International
He was selected for the full national squad tour to South Africa in June 2014, but did not make an appearance on the tour.