Williams made his league debut on 28 December 2009, coming on as a substitute.[4] In doing so, Williams became the youngest Middlesbrough player in over a century, aged just 16 years and 200 days. Williams made his first Middlesbrough start against Coventry City. On 13 May 2010, it was announced that Williams had secured a professional four-year contract with Middlesbrough.[5] He scored his first goal for Middlesbrough on 21 August 2012, a long range goal in the 88th minute in a 3–2 win against Burnley.[6] He scored his second goal for Middlesbrough on 15 September, in a 2–0 win against Ipswich Town.[7]
Hartlepool United (loan)
On 23 January 2014, Williams joined Hartlepool United on a one-month loan deal,[8] playing a central-attacking midfield role.[citation needed] The loan was extended but Williams ended up being recalled by Middlesbrough due to his excellent form for the League Two club.
On 2 July 2015, Williams completed a permanent move to Scunthorpe for an undisclosed fee.[10]
He went out on loan to fellow League One side Northampton Town where he made eight appearances for the club.
Injuries meant that he only played twice in the 2017–18 season – both in the latter part of the season. Williams was released by the club in June 2018.
Hartlepool United
Williams signed for National League side Hartlepool United in July 2018. Due to injury, Williams failed to make a single appearance in his first season with the club. On 30 October 2020, Williams signed a new deal at Hartlepool.[11]
In March 2021, Williams made his first league start in almost four years in a 1–0 victory against Woking.[12]
Williams was released by Hartlepool at the end of the 2020–21 season. His time at Hartlepool was ravaged due to injuries and, as a result, Williams only made 11 league appearances for the club in his three years with the club – 10 of which were as a substitute. He scored once for Pools, in a FA Trophy defeat against Halifax Town in December 2020.
Gateshead
Williams signed for National League North side Gateshead in August 2021 on a short-term contract. Williams was sent off on his debut against Chester. Following this, Williams was dealt the blow days later of suffering another injury which would see him out for up to seven weeks. He scored his first goal for the club on 8 December 2021 in a 2–0 win against York City. He departed the club on 14 January 2022.[13]
Víkingur
On 28 July 2022, Williams joined Icelandic side Víkingur on a deal until the end of the season.[14]
In his third season with the club, Williams was made club captain.[15]
Return to Scunthorpe
On 14 November 2024, Williams signed for former club Scunthorpe United on non-contract terms.[16] He signed with the National League North club after having trained with the team for six weeks.[16]