Bailey was born in Birmingham and lived in the Bartley Green district.[4][5] His father, Luke, was on the books of West Bromwich Albion as a youngster.[6] Bailey attended Priory School in Edgbaston.[7] He joined Birmingham City F.C.'s Academy as an under-seven, signed a pre-contract agreement in March 2016 to commit to a first professional contract which would run from his 17th birthday in December to the end of the 2018–19 season,[2][8] and took up a two-year scholarship in July.[9][10] Academy coach Steve Spooner described him as "a forward player that plays down the middle or off the side, a number 10 type player [with] good close control and a good variation of finishes."[2] He played for Birmingham's under-23 team in 2016–17, despite his youth, and was a regular for that team the following season.[11][12]
Bailey was named among the substitutes for the Championship fixture at home to Ipswich Town on 31 March 2018. He remained unused as his team won 1–0.[13] He helped Birmingham's youth team reach the semifinal of the 2017–18 FA Youth Cup, but was injured after four minutes of the first leg against Chelsea, depriving him not only of the chance to progress further – Chelsea outclassed Birmingham 7–0 on aggregate – but also of the possibility of making his senior debut in what remained of the season.[12][14]
First-team football
Bailey was a member of the first-team squad for their pre-season training camp in Austria,[15] and was given a squad number for the 2018–19 season.[16] In November 2018, he joined Gloucester City of the sixth-tier National League South on a month's loan, to give him experience of competitive first-team football.[17] The loan was extended to a second month, and by the time he returned to his parent club he had made 13 appearances in all competitions, 12 in the league, and scored twice. He felt he had matured during the spell, which had "definitely improved [his] game in many ways. That's physically, mentally and – more than anything – temperamentally", and added the "grit and determination" that comes from playing senior football in a context where "each game means everything" to a team fighting relegation.[18] He was offered a two-year deal in March 2019,[19] and signed it in June.[6]
Bailey made his competitive debut for Birmingham on 6 August 2019 in the EFL Cup first round. Manager Pep Clotet fielded an inexperienced team for the visit to Portsmouth, and Bailey came into the 3–0 defeat as a second-half substitute.[20] His first appearance in the Football League came on 20 August as a very late substitute in a 2–0 win at home to Barnsley in the Championship.[21] He scored his first senior goal for the club with a 89th-minute header from Dan Crowley's cross to clinch a 2–1 Championship win against Middlesbrough, six minutes after coming on as a substitute and two minutes after Middlesbrough had equalised.[22]
Forest Green Rovers loans
After three more substitute appearances over the next couple of months,[21] Bailey joined League Two club Forest Green Rovers on loan until the end of the season.[23] He went straight into the starting eleven for the visit to Macclesfield Town and was involved in his side's goal in a 2–1 defeat.[24] On his third appearance, in a 2–2 draw away to Grimsby Town, Bailey scored a 30-yard (27 m) "wonder goal"[25] that manager Mark Cooper rated "the best goal [he's] seen at Forest Green."[26] Against Port Vale on 11 February, a poor tackle left Bailey with ankle ligament damage; he returned to Birmingham for treatment and was expected to be out for six weeks.[27][28] He had made five appearances when the League Two season was first suspended and then ended early because of the COVID-19 pandemic.[29][21]
Bailey began his 2020–21 season as a late substitute in Birmingham's opening fixture of the season, a 1–0 defeat at home to fourth-tier Cambridge United in the EFL Cup.[30] Having had no further involvement in the matchday squad under new head coach Aitor Karanka, Bailey returned to Forest Green Rovers on 16 October on loan until 3 January 2021.[31] He made his second debut in the starting eleven away to Colchester United four days later, and twice came close to scoring as his team lost 1–0.[32] He scored three goals from 14 matches during the period of the loan,[33] and although Forest Green were keen to extend it, the clubs were initially unable to agree terms. However, after Bailey signed an 18-month contract with Birmingham, with the option of a further year, his loan was extended to 31 May.[34][35] He finished the season with five goals from 38 appearances in all competitions as Forest Green reached the play-offs, in which they lost 5–4 on aggregate to Newport County.[33]
Livingston loan
Bailey joined Scottish Premiership club Livingston on 9 August 2021 on loan for the 2021–22 season. Manager David Martindale described him as "a player who will bring pace, creativity and a very good delivery to the wide areas. He's predominantly left-footed but can play on either wing quite comfortably. He has a great delivery and likes to put defenders on the back foot."[36] He made his debut on 14 August in the starting eleven for the League Cup second-round match against St Mirren, and came close to scoring after 14 minutes with a "curling strike from the edge of the box" that went just wide. He was substituted after 62 minutes, the match ended 1–1 after extra time, and Livingston progressed to the quarter-finals on penalties.[37] Bailey's first league goal, a "venomous strike from the edge of the box" after three minutes of Livingston's 3–0 win away to St Johnstone on 16 October, earned him a place in the SPFL Team of the Week.[38][39] He scored again the following week in a 3–2 win away to Ross County,[40] and finished 2021 with 15 league appearances, of which 11 were as a starter.[3] He took his appearance total to 35 in all competitions and scored three goals by the end of the season.[41]
Salford City
After 15 years with Birmingham, Bailey signed a two-year contract with Salford City of League Two on 1 September 2022.[42] He made his debut two days later as a half-time substitute at home to Crawley Town; according to PA Media's reporter, his introduction "sparked life into the home side ... and they soon regained the advantage", but lost it again as the game ended 2–2.[43]
Stockport County
On 1 September 2023, Bailey joined League Two club Stockport County on loan until January 2024.[44] According to the club website, he "quickly became a key figure in [Stockport's] midfield" and made 24 appearances during the loan spell.[45]
Bailey signed a two-and-a-half-year permanent contract with Stockport on 9 January 2024; the fee was undisclosed.[46]