Bryan was born in Bristol. He came through the Bristol City youth team and signed his first professional contract in 2011 on a two-year deal. On 24 November 2011, Bryan joined Conference National side Bath City on loan until January. He scored in a 3–1 win over A. F. C. Telford United. He made his professional debut on 6 March 2012, in a 3–2 win over Leicester City at Ashton Gate. In March 2013, he joined Plymouth Argyle on loan until the end of the season. Bryan made his debut the same day against Bradford City and scored his first Football League goal at Chesterfield in April. He returned to Bristol City at the end of the season having played on the left side of midfield in ten consecutive games for Argyle. Bryan scored his first goal for City in the Bristol derby with Rovers in September, and his first league goal for the club came in November against Crawley Town. In June 2015 he signed a contract extension keeping him at Bristol City until 2019. The 2016/17 campaign saw Joe Bryan become statistically the best left back in the division. Bryan starred in City's EFL Cup run, scoring a goal against Crystal Palace and then he went on to score the first goal in the club's 2–1 win against Manchester United in the 2017-2018 EFL Cup quarter final.