Portsmouth Williams joined
Portsmouth in July 2010, signing a scholarship with the clubs' academy side. There were initial issues concerning international clearance, with the FFA (Football Federation Australia) failing to release vital paperwork to allow Williams to play, but this was eventually resolved on 12 November. He played his first match for Portsmouth on 6 August 2010, in a friendly against
Farnborough. His first competitive academy match for Portsmouth was a 4–1 loss to
Chelsea. Williams was promoted to training with
Steve Cotterill's first-team upon returning for the
2011–12 season. This cumulated with Williams' making his first appearance with the first-team in a 4–0 win over
Havant & Waterlooville, in which he produced a lively display, contributing an assist. He went on to feature against
Chelsea and travelled to the US with the first-team. Cotterill indicated that he was ready to promote Williams to the Portsmouth first-team squad, and Williams was selected to be on the bench for the
Championship match against
Middlesbrough with the 17 jersey. He made his professional debut in the opening-day match against Middlesbrough, on 6 August 2011, after he came off the bench to replace
Hermann Hreiðarsson in the 63rd minute, playing against his older brother
Rhys, who scored in the match.
Fulham On 31 January 2012, Fulham announced the transfer deadline day signing of Williams from
Portsmouth for an undisclosed fee, having impressed during a reserve game against
Wolverhampton Wanderers the previous night. On 13 May 2014, following the relegation of Fulham and his conclusion to his loan spell, Williams signed a new two-year contract with the club. Williams signed for
Gillingham in
League Two on a one-month loan deal on 14 February 2013 but failed to make an appearance for the Kent club before being recalled by Fulham. On 3 August 2013, Williams joined
Oxford United on loan until 1 January 2014, and made his debut against
Portsmouth at
Fratton Park. He scored his first senior goal on 28 September 2013 in a
League Two win over
Hartlepool United. On 19 December 2013, Fulham agreed to extend his loan deal until the end of the season. After making 35 appearances and scoring six times, Williams made his final appearance for the club against relegation battlers
Northampton Town. Williams scored his seventh goal of the season to give his team the lead. However, towards the end of the first half he was sent off for kicking
Ricky Ravenhill. Northampton Town subsequently took the lead and went on to win 3–1, which led to Northampton Town surviving relegation and Oxford United missing out of the play-offs. After being included in two matches for Fulham at the start of the 2014–15 season, Williams joined Barnsley on an initial one-month loan on 2 October 2014. Williams made his Barnsley debut ten days later on 12 October 2014, in a 3–1 win over
Bradford City. Having made seven appearances, Williams' loan spell was extended until 1 January 2015. However, Williams' first team appearances were soon reduced due to his international commitments and he suffered a groin injury before returned to his parent club.
Barnsley On 26 July 2015, Williams re-joined
Barnsley, but this time on a permanent basis for an undisclosed fee. His first and what turned out to be only goal for Barnsley was a late winner in a 4–3 win at
Cardiff City.
Rotherham United On 20 June 2017, Williams moved across South Yorkshire to join
Rotherham United on a two-year deal. On 30 May 2019 it was announced that he would leave at the end of the season, upon expiry of his contract.
Return to Portsmouth On 26 June 2019, Williams re-signed for his first club,
Portsmouth.
Return to Oxford On 9 June 2021, Williams rejoined former club
Oxford United when his contract expired at Portsmouth. He signed a two-year deal.
Perth Glory In June 2022, Williams left Oxford United to return to Australia, joining
Perth Glory for an undisclosed fee, signing a three-year contract. He was welcomed back to
Perth scoring an absolute stunner out of the box goal against
Western United.
Bengaluru FC On 28 July 2023, Williams signed a one-year contract with
Indian Super League club
Bengaluru FC, with an option for a further year. In his debut season, he scored three goals, earning the club's Player's Player of the Season award. In his second season, Williams scored seven goals and provided four assists as the club reached the
2025 ISL Cup final, where they lost to
Mohun Bagan Super Giant in extra time. He was named Fan's Player of the Year at the end of the season. On 24 October 2025, Bengaluru FC announced that Williams had extended his stay at the club. ==International career==