The Bantams moved up to fifth place in Sky Bet League Two after being held to a 0-0 draw at Leyton Orient.
An evenly-matched affair - which saw the returns of Matt Palmer and Shay McCartan from injury - marked Gary Bowyer's side's third game unbeaten.
The visitors began the contest on the front foot, going close through openings for Callum Cooke and Aramide Oteh.
Despite the early City dominance, it was their visitors who came closest to breaking the deadlock - 11 minutes in - when Conor Wilkinson’s header rattled the crossbar.
A competitive second half carried a similar pattern to the first - of being mainly uneventful.
Orient’s dangerous Wilkinson went close to squeezing an effort inside the near post, before City substitute Harry Pritchard guided a shot just over.
Despite pushing for a late, would-be winner, Bowyer's men were held at bay by the O's and made to settle for a point.
CITY: Richard O’Donnell; Adam Henley, Kelvin Mellor, Anthony O’Connor (booked 20’), Paudie O’Connor, Connor Wood; Callum Cooke, Jake Reeves (Matt Palmer 79’), Chris Taylor (Harry Pritchard 69’); Aramide Oteh (Shay McCartan 86'), James Vaughan (c). Subs (not used): George Sykes-Kenworthy (GK), Ben Richards-Everton, Zeli Ismail, Dylan Connolly, Shay McCartan.
ORIENT: Sam Sergeant; Myles Judd, Jamie Turley, Marvin Ekpiteta, Dan Happe; Jordan Maguire-Drew (James Brophy 80’), Craig Clay, Josh Wright (c, booked 87'), George Marsh; Conor Wilkinson, Lee Angol. Subs (not used): Dean Brill (GK), Dale Gorman, Josh Coulson, James Dayton, Matt Harrold, Hector Kyprianou.
ATTENDANCE: 6,015 (997 visitors).
REFEREE: Christopher Pollard.