Set in the 1990s, the film opens with a flashforward of a battered Mark (Charlie Heaton) examining his wounds in the mirror before going off into the woods with his friend Jack (Owen Campbell), where a gunshot is heard. The narrative is also framed within a police investigation involving interrogations of the main characters.
Months earlier, Jack's single mother, Karen, begins dating a man named Tom, who has a son Jack's age. Jack meets the son, Mark, and the two quickly become best friends. They also befriend a local girl named Sarah (Amandla Stenberg) when she defends them after they are assaulted by a group of thugs. The three spend all their time together, and though Mark kisses Sarah during a game of spin the bottle (which makes Jack visibly jealous), the threesome is platonic at first.
Tom shows his gun collection to the kids, who practice shooting in a nearby field. Soon after, Karen suggests Tom and Mark move in with her and Jack, and Tom agrees. Jack and Mark begin sharing a room and grow closer, experimenting with drugs and navigating adolescence, sexuality and the tribulations of the 90s, including the suicide of their idol Kurt Cobain.
After Jack reveals to Mark that he's never kissed anyone, Mark makes out with him to teach him experience. They later go out to the woods with some of Tom's guns and kill a squirrel. That night, Jack witnesses Tom physically abuse Mark over a trivial incident, which escalate later when he and Jack skip school to go to the quarry with Sarah. Tensions between Tom and Karen over the raising of the boys gets worse until Karen discovers that Tom has been planning for Jack to join the Marines without her knowing, which infuriates her. Following an argument, Tom moves out of the house and takes Mark with him, which devastates Jack, who is clearly in love with Mark.
Mark leaves the school, leaving Jack with Sarah. The two start to date after Sarah is stood up at prom, but break it off when she realizes there is no chemistry between them. The two encounter Mark hanging out with a group of criminals, though Mark returns to Jack after the encounter and they make out again.
Though Jack believes he and Mark will be a couple, Mark and Sarah reveal that they have started dating each other. Feeling betrayed, Jack scuffles with Mark and pushes him, making Mark fall and hit his head on a rock. A distraught Jack carries Mark to the hospital, where Tom is informed that Mark will be fine. Mark convalesces at Karen's house, where he reveals to Jack that he doesn't remember what happened, and the two hold each other, which Tom notices. Meanwhile, the investigation takes a turn when it is revealed that Mark is dead.
As in the start of the film, Mark shows up at Jack's house with a battered face, presumably from Tom. Mark tells Jack that he wishes he were a girl. Jack puts on his mother's makeup and dress to try to seduce him, but Mark rebuffs his advances. The two get drunk before Mark appears with his father's guns, and the two go into the woods once more. The disoriented pair wanders around the area, before being disturbed by animal calls. Jack shoots Mark, and then hysterically begins calling for help.