John Hancock (Will Smith) is an unhappy and reluctant superhero who is living in his own world. For some unknown reason, Hancock is depressed and has started drinking very heavily. He has saved many lives in Los Angles over the years, but in doing so, he has no regards for damaging buildings, trains, roads, cars, or anything that gets in his way to get the job done. The last time he captured several criminals, it cost the city $9 million to fix the damages. The public has had enough of Hancock, and they want him to stop or go to another city. Then one day, Hancock saves the life of Ray Embrey (Jason Bateman) from being run over by a train. Ray is a Public Relations executive who now can go home to his wife and child, because Hancock was there. Ray owes Hancock his life, and he makes it his mission to change his superhero's image and have the public cheering him. Ray's wife, Mary (Charlize Theron), believes Hancock can not be fixed, and she doesn't want Ray to be hurt.