In the small town of Blithe Hollow, Massachusetts, a boy named Norman Babcock (Kodi Smit-McPhee is able to speak with the dead, including his late grandmother (Elaine Stritch) and various ghosts in town. Almost no one believes him and he is isolated emotionally from his family while being ridiculed by his peers.
Norman becomes friends with Neil Downe (Tucker Albrizzi), an overweight boy who is bullied himself and finds Norman a kindred spirit. During rehearsal of a school play commemorating the town's witch execution of three centuries ago, Norman has a vision of the town's past and being pursued as a witch by the town's citizenry. Afterward, the boys are confronted by Norman's estranged and seemingly deranged uncle Mr. Prenderghast (John Goodman) who tells his nephew that he soon must take up his regular ritual to protect the town. Soon after this encounter, Prenderghast dies.