Ten years after officer Dwayne Hopper’s son disappeared, the last of 14 victims in a string of local unsolved disappearances, his suspicions are aroused by prison inmate Ronald Perkins [Richard Brake]. Dwayne searches Perkins’ house and uncovers a disturbing collection of torture videos featuring the town’s vanished children. In a fierce, protective outburst, Dwayne kills Perkins.
But the town’s terror is far from over. A wave of carnage sweeps the streets, and reports creep in that Dwayne’s own son might be among the marauders. Flashbacks begin to reveal that Hopper’s son was kidnapped from his own home, leaving Hopper haunted by the question of whether his child is still alive. Earlier, Hopper starts to question Perkins’ motive, wondering how the man knows so much about his family—the wife and daughter.
Digging into Perkins’ file, Hopper uncovers a harrowing truth: Perkins kidnapped his son years ago. He tries to confront Perkins with the evidence, insisting he doesn’t have a family left, and he calls his deputy Hal [Dean Sansone] to come down to the station for a proper check, but Hal remains skeptical. A thorough search of Perkins’ home reveals a backroom in the basement filled with scientific equipment and a cage containing a person. A crazed woman attacks, and Perkins reveals that his own family was killed by a burglar, using that loss to justify his violence.
Perkins attempts to bend Hopper toward his own twisted sympathy, but Hopper keeps his focus on the horrific reality around him. Back home, Hopper’s daughter Daisy [Shayla Beesley] is out with friends, unaware she’s being watched by someone nearby. Daisy and her boyfriend sprint for safety after two of their friends are murdered. Hopper arrives just in time to intervene and shoots the suspect, who momentarily appears to come back to life after being run down. The town’s chief declares a state of emergency as fear and chaos take over.
Hopper learns a devastating truth: his own son is alive and among the killers. His wife Janine’s fidelity becomes a complication in the town’s unraveling, with Daisy later telling her father that Janine is at a motel with her boyfriend. The scene escalates as a woman with a champagne bottle is seen striking a man, causing him to fall into danger. A local holds Daisy’s boyfriend Eric [Michale Graves] at knifepoint as he tries to keep the other victims safe, while Hopper realizes Perkins’ grim plan was to exact revenge by taking 14 children.
They reach the motel, where Janine is found alive and safe. Hopper leads the killers into a confrontation, and Janine, Daisy, and Eric seek refuge at the police station to wait for help. A deputy and others decide to take shelter in the basement as the danger closes in. Eric is violently ripped to pieces by the killers, and Hopper returns with a shotgun to quell the assault. The group hears Felicity, an activist named for Felicity [Katherine Pawlak], calling for help from a cell as the nightmare tightens around them.
Hopper also realizes Perkins aimed to make the town suffer the way he suffered, by stealing children. Felicity hears a strange noise in the bathroom and is killed by someone hiding in the ceiling. The deputy recognizes there may be no escape, while Hopper’s son, Kyle [CJ Singer], closes in on him. A tense standoff ends with the deputy being shot dead by Hopper, and Janine volunteers to seek help, with Hopper promising to look after Daisy if anything should happen to her.
Hopper and Daisy monitor the video feed as the killers plan an ambush. Janine is killed in an attack, sending a wave of horror through Hopper and Daisy. Hopper tries to protect Daisy without sacrificing her, even handing her a shotgun for defense. He attempts to reason with his son, Kyle, hoping to reach the boy through memories of a kinder past, like chess games from better days. The sirens draw closer, but the moment of mercy never comes: Kyle snaps Hopper’s neck, then turns the gun on Daisy, ending her life as chaos consumes the station.