Match ends, Bradford City 1, Walsall 1.
Bradford City moved into the League One play-off places despite Jordy Hiwula's second-half strike denying them victory over Walsall.
The hosts went ahead on 51 minutes when striker Billy Clarke drilled the ball into the bottom corner from 25 yards.
But the Saddlers equalised 16 minutes from time when Hiwula headed in Jordan Cook's cross from close range.
Bradford almost grabbed a late winner but Alan Sheehan's low drive was well saved by keeper Richard O'Donnell.
The point saw the home side go sixth in the table on goal difference after Doncaster were beaten 3-0 at Port Vale.
Walsall manager Dean Smith told BBC Sport:
"It wasn't a great spectacle, but the conditions didn't help and it was a very hard-earned point. It's a difficult place to come, so it's a big point for us.
"It was a game of few chances, but we battled it out and worked hard all over the pitch. It was a fair result in the end.
"We tried to play when we could but I felt we were maybe a little too deep in the second half, which is understandable given the condition of the pitch."
- 14YeatesSubstituted forSheehanat 87'minutes
- 10ClarkeSubstituted forZokoat 76'minutes
- 3TaylorSubstituted forHenryat 71'minutes
- 21CookSubstituted forBaxendaleat 90'minutes
- 10SawyersSubstituted forGrimesat 71'minutes
- 30Hiwula-MayifuilaBooked at 80mins
- Tim Robinson
- Shots on Target
Second Half ends, Bradford City 1, Walsall 1.
Andy Halliday (Bradford City) wins a free kick on the left wing.
Foul by Rico Henry (Walsall).
Substitution, Walsall. James Baxendale replaces Jordan Cook.
Attempt saved. Alan Sheehan (Bradford City) left footed shot from the left side of the box is saved in the bottom right corner.
Attempt blocked. Alan Sheehan (Bradford City) left footed shot from outside the box is blocked.
Substitution, Bradford City. Alan Sheehan replaces Mark Yeates.
Jon Stead (Bradford City) wins a free kick in the defensive half.
Foul by Paul Downing (Walsall).
Attempt blocked. Anthony Forde (Walsall) left footed shot from the centre of the box is blocked.
Corner, Walsall. Conceded by Gary Liddle.
Jordy Hiwula-Mayifuila (Walsall) is shown the yellow card.
James Meredith (Bradford City) wins a free kick in the defensive half.
Foul by Jordy Hiwula-Mayifuila (Walsall).
Andy Halliday (Bradford City) wins a free kick in the defensive half.
Foul by Adam Chambers (Walsall).
Attempt missed. Francois Zoko (Bradford City) header from the centre of the box is close, but misses to the left following a corner.
Corner, Bradford City. Conceded by James O'Connor.
Substitution, Bradford City. Francois Zoko replaces Billy Clarke.