Born in Perth, Australia, Williams is the son of a mother that originates from Mumbai, India and a father that was born in Kent, England, Williams was brought up in a footballing family. Both older brother Rhys Williams (played at Middlesbrough) and twin brother Aryn Williams (played at Burnley) are plying their trade in England. The brothers all started their careers at ECU Joondalup before moving to England.
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 in 6 August 2010, in a friendly against Farnborough. His first competitive academy match for Portsmouth was a 4–1 loss to Chelsea.
Ryan Williams was promoted to training with Steve Cotterill's first-team upon returning for the 2011/2012 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 USA with the first-team. Cotterill later indicated he was ready to fast-track Williams' into the Portsmouth first-team squad, and Williams was selected to be on the bench for the Championship 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 Hreidarsson in the 63rd minute, playing against his older brother Rhys, who scored in the match.
On 30 January 2012, Williams played for the Fulham Reserve team in a 1–0 victory over Wolves Reserves as a trialist. The following day, he signed for Fulham for an undisclosed fee (rumoured to be an £500,000 deal) on a contract that will last until 2014.