The 29-year-old striker moves to the League One leaders for an undisclosed fee having scored 91 goals in 286 starts for Bradford since joining in 2009.
Hanson becomes the Blades' sixth signing of the January transfer window following the permanent arrivals of Samir Carruthers and Daniel Lafferty in addition to the loan captures of Ethan Ebanks-Landell, Joe Riley and Jay O'Shea.
"James gives us something different and we believe there is more to come from him. We've seen a lot of him over the years and he is a very difficult striker to play against," Sheffield United manager Chris Wilder told the club's official website.
"James has been part of some success at Bradford, he has been part of a winning team and hopefully he is joining another one."
Hanson could make his debut against AFC Wimbledon at Bramall Lane on Saturday.