The much-travelled striker, 39, had been on non-contract terms at Gillingham, whom he played twice for after joining then last week following a brief trial with Sheffield Wednesday.
But he has now signed a one-year deal at Valley Parade, his third club after starting the summer as player-manager at Millwall.
He could make his Bantams debut against Bournemouth on Saturday - just a week after making his debut for Gillingham against them.