The 22-year-old signed for Bristol City in 2024 after impressing during his debut season with Aldershot Town.
Since joining the Robins he has enjoyed two successful loans spells with Cambridge United and Stockport County both in League One.
Speaking on the signing, First Team Manager Leam Richardson said: “We’re really pleased to bring Josh to Reading. He’s a player we’ve followed for some time and one we believe has the qualities to make a real impact for us.
“He’s creative, positive in possession and has the ability to unlock defences, whether that’s with a pass, by carrying the ball or by contributing goals himself. He’s already shown what he can do in League One and at 22, we feel there’s still plenty more to come from him.
“Just as importantly, he’s got a fantastic attitude. He wants to improve, he’s hungry to work every day and he’s fully bought into what we’re trying to build here. We’re looking forward to working with him and helping him take the next steps in his career.”
Stokes predominantly plays as an attacking midfielder and has made 52 appearances in the third tier whilst scoring 10 goals and providing four assists.
The attacking midfielder also helped Stockport County in their bid for promotion out of League One – where he played in the two semi-final legs against Stevenage and against Bolton Wanderers in the final.
Stokes is a versatile player who can play as a 10 but can also be played on the either wing.