Fifteen-year-old Jeff wakes up in a hospital room with no memory of how he arrived. Wire-reinforced windows, chipped paint, and a brown ceiling stain he likens to the Devil's face surround him. A relentlessly cheerful nurse he calls Nurse Goody checks on him constantly. Jeff has been told he was "kind of dead" when he was brought in, but he insists, for the record, that he did what he did because he "just felt like it."
On his second day, Jeff discovers from a chart Goody accidentally leaves by his bed that he is in a psychiatric ward. Furious, he demands answers. Goody brings in Dr. Katzrupus, a young, disheveled psychiatrist Jeff immediately nicknames "Cat Poop." The doctor tells Jeff bluntly that he attempted suicide and has been enrolled in a 45-day program of individual and group therapy. Jeff dismisses the situation as a misunderstanding.
Jeff's first group therapy session introduces him to four other adolescent patients: Alice, who set her mother's abusive boyfriend on fire; Juliet, who claims to be dating Bone, though Bone flatly denies knowing her; and Sadie, a sharp-tongued girl who announces sarcastically that she tried to drown herself. Jeff reveals nothing. When Sadie notices bandages peeking from his sleeves, he dismisses them as "just a cut."
In private sessions, Jeff describes his home life as entirely ordinary: His parents, Eric and Marjorie, are still married; his 13-year-old sister Amanda is typically nosy. No abuse, no dysfunction. Cat Poop uses silence and pencil-tapping to pressure Jeff into talking, but Jeff insists he does not belong with the other patients. After being taken off a sedative given to new patients, Jeff begins feeling withdrawal effects and realizes his outlook has been chemically managed.
Unable to sleep after disturbing dreams, Jeff finds Sadie watching a mute television in the lounge. She invents dialogue for a black-and-white movie, and Jeff reluctantly joins in. This becomes a recurring game. Sadie asks who saved him, clarifying she means whoever called the paramedics. Jeff admits it was his parents and reflects bitterly that he never asked to be saved.
Jeff escalates his resistance in therapy, fabricating an elaborate story about being possessed by the Sugar Plum Fairy from
The Nutcracker. Cat Poop sees through it and tells Jeff he is wasting time. Jeff reveals to the reader, though not to his therapist, that his best friend is a girl named Allie, whom he has known since seventh grade.
Jeff's parents visit for the first time. The encounter is stiff and awkward. Jeff surprises himself by asking about Allie, and his mother says Allie has not called. Afterward, Cat Poop latches on to the mention of Allie. Jeff lies, saying they were "kind of going out," hoping to close the subject.
In a group exercise, Juliet mimes being caged, reaching toward Bone, who stands with his back turned. When it is Jeff's turn, he freezes, unable to identify what he feels. As time expires, Juliet tells him: "You're hiding something."
Alice has a violent breakdown and is transferred to a long-term facility. A new patient, Martha, arrives. She is 12 but looks younger, clutching a stuffed rabbit and refusing to speak. Jeff sits with her without expecting anything in return. Days later, Martha touches Jeff's wrist scars and says "Frex," then touches her own chest and repeats the word. Jeff realizes it is her word for something that hurts.
Jeff's bandages and stitches are removed, revealing reddish scars on both wrists. He shows them to Sadie, who says she is sad she has no scars from her own attempt. She describes the quiet green world beneath the water before a stranger named Sam pulled her out.
Amanda visits with Jeff's parents and treats him with irreverent normalcy, which he treasures. She reports that Allie barely acknowledged her at school. During the session, Jeff's father describes making tourniquets from torn sheets and holding Jeff while telling him repeatedly that he loved him. This moves Jeff far more than his mother's tears.
A new male patient, Rankin, arrives. He is big and athletic, saying only that he "just gets kind of down sometimes." One night, Jeff accidentally sees Rankin in the shower and cannot stop thinking about the encounter. He tells Sadie, who is unfazed. That night, as they play the dialogue game, Jeff takes Sadie's hand. She holds it, then kisses him quickly on the lips.
Jeff sneaks into Sadie's room and they begin fooling around, but he loses his arousal when she touches him. He makes an excuse and leaves. Sadie assumes Jeff is heartbroken over Allie and that a jealous boyfriend named Burke drove them apart. Jeff plays along, saying he attempted suicide because he lost his best friend.
Days later, Rankin initiates sexual contact in Jeff's room at night. Jeff does not stop him, frozen but curious. The encounters escalate the next morning in the shower. Afterward, Jeff cries alone. When they talk later, each insists the other is the one with the "problem." Around this time, Sadie shows Jeff a newspaper clipping about Sam, kissing it and saying it makes her feel loved.
One night, Rankin enters Jeff's room again. Screaming erupts from the girls' wing, and staff find Rankin in Jeff's bed. The next morning, Cat Poop tells Jeff that Rankin claimed Jeff initiated everything. Then Cat Poop delivers devastating news: Sadie is dead. She took pills during the night, and Martha found the body. Jeff laughs involuntarily, then breaks down sobbing.
Shattered, Jeff finally tells the truth. He had a crush on Burke, Allie's boyfriend. At a Christmas party, while drunk, Jeff recognized for the first time that his feelings for Burke were romantic and sexual. When Burke walked into the bathroom, Jeff kissed him. Burke laughed, then saw Jeff was serious. "Are you a fag?" he asked. Jeff said, "I really like you." Burke left. Three days later, on Christmas Eve, Jeff called Allie. She said, "Why didn't you tell me you're gay?" and hung up. A week later, on New Year's Eve, Jeff drank whiskey and cut both wrists with a razor while watching the ball drop on television. His parents came home early and found him.
Jeff states plainly: "I'm gay." Cat Poop reads him Sadie's brief suicide note, which gives no specific reason, and a poem she left adapting the "Ten Little Soldier Boys" nursery rhyme, assigning each patient a verse and ending with Jeff. He is furious at Sadie for pretending to be strong while secretly being terrified. Through Frank, a blunt night watchman, Jeff learns Martha's backstory: Her father shot her mother, then himself, and Martha sat between their bodies for days.
Cat Poop helps Jeff prepare to come out to his family through role-playing exercises. During his parents' final visit, with Amanda present, Jeff asks her, "How would you like to have a gay brother?" Amanda says that would be fine. Jeff replies, "Because you do." His mother insists he is too young to know. His father asks if being gay is why Jeff hurt himself. Jeff says it is part of it but not everything. A four-hour session follows, involving yelling, crying, and a family hug, a first for the family.
On his last day, Valentine's Day, Jeff says goodbye to Martha, Juliet, and the other remaining patients. Cat Poop warns him that he has changed, but the world he is returning to has not. Jeff composes an imaginary valentine to Allie in his head, apologizing and asking for another chance. He dismisses it as too sappy but knows she might respond. The novel closes with Jeff wondering whether his parents would think it strange if he asked them to stop at a card store on the way home.