In 1968 Alabama, a young boy finds himself moving in with his grandmother following the tragic loss of his parents in Chicago. To lift his spirits, his loving grandmother, played by Octavia Spencer, gifts him a pet mouse named Daisy. One day, while out buying a box of nails to build a home for Daisy, Charlie encountered a cunning witch who attempted to lure him with a snake and some caramel. Thankfully, his grandmother calls for him, causing the witch to vanish.
Upon recounting this eerie meeting, the boy learns from his grandmother about the terrifying reality of witches. She recounts a chilling story of her best friend, Alice, who fell victim to a witch's curse, destined to live the rest of her life as a chicken. With urgency, they decide to take refuge at a nearby hotel where her cousin Eston holds the position of executive chef. During their stay, the boy is horrified to learn how to identify witches: they have claws disguised as fingernails hidden beneath gloves, bald heads covered by wig rashes, square feet with no toes camouflaged in sensible shoes, and a purple tint in their pupils. Moreover, their keen sense of smell is used to hunt children.
The following day, the boy, along with Daisy and a rope, heads to a grand hall for some training. On his way, he meets a gluttonous yet friendly boy named Bruno, who is soon whisked away by his mother. Expecting solitude, the boy enters the grand hall only to stumble upon a devious assembly of witches, led by the formidable Grand High Witch. She unveils her nefarious plan to transform all the world's children into mice using a special potion hidden in confectionery. Bruno, having earlier consumed a chocolate bar laced with the potion, undergoes the transformation and scurries into the vent where the boy and Daisy are hiding. Before he can escape, the Grand High Witch, in a sinister twist, turns the boy into a mouse as well.
In a desperate bid to save themselves, the boy and his grandmother rush back to their hotel room. They unveil their findings about the witches' sinister plot and realize the Grand High Witch, who cursed Alice, is residing directly below them. Charlie discovers that Daisy was initially a human girl named Mary, who suffered the same fate. Together with Bruno and Mary, they devise a clever scheme to acquire the potion, hoping that Charlie's grandmother can concoct a remedy to restore them to their original forms. Their plan works, yet when their grandmother fails to create the cure, they instead resolve to sneak the potion into a delicious broth of pea soup intended for the witches' dinner.
On the fateful evening, while all the witches, with the exception of the Grand High Witch, consume the enchanted soup, they begin transforming into rats, creating utter chaos. Meanwhile, the boy and the mice, now in the Grand High Witch's room, gather potions to destroy them. In a dramatic standoff, the Grand High Witch confronts the grandmother with lethal intentions; however, the mice cleverly deceive her into consuming her own potion, thwarting her again.
Just before their escape, the grandmother seizes the Grand High Witch's trunk filled with money and liberates her captive cat, Hades. In a tragic turn, as they make their exit, Hades attacks and kills the Grand High Witch. With no family to return to, Bruno chooses to join Mary, the boy, and their grandmother as they bring the trunk home, forming a new family. Years later, the now older boy and his grandmother share their newfound wisdom, advising young children to beware of the witches lurking around.