Bruno is a nine-year-old boy growing up during World War II in Berlin. He lives with his parents, his twelve-year-old sister Gretel whom he has nicknamed "A Hopeless Case", and maids, one of whom is named Maria and another is a Jewish chef named Pavel. After a visit by Adolf Hitler, whose title the Führer Bruno commonly mispronounces as "Fury", Bruno's father Ralf is promoted to Commandant of the death camp Auschwitz, which Bruno mispronounces as "Out-With".
Bruno is initially upset about having to move to Auschwitz and is almost in tears[5] at the prospect of leaving his "best friends for life", Daniel, Karl, and Martin. From the house at Auschwitz, Bruno sees the camp in which the prisoners' uniforms appear to him to be "striped pyjamas". One day Bruno decides to explore the wire fence surrounding the camp. He meets a Jewish boy, Shmuel, who he learns shares his birthday (April 15) and age. Shmuel says that his father, grandfather, and brother are with him on his side of the fence, but he is separated from his mother. Bruno and Shmuel talk and become very good friends although Bruno still does not understand very much about Shmuel or his life. Nearly every day, unless it is raining, Bruno goes to see Shmuel and sneaks him food. Over time, Bruno notices that Shmuel is rapidly losing weight.
Bruno concocts a plan with Shmuel to sneak into the camp to look for Shmuel's father, who has gone missing. Shmuel brings a set of prison clothes and Bruno leaves his own clothes outside the fence. As they search the camp they are captured, added to a group of prisoners on a "march", and led into a gas chamber, which Bruno assumes is simply a rain shelter. In the gas chamber, Bruno apologises to Shmuel for not finding his father and tells Shmuel that he is his best friend for life. It is not made clear if Shmuel answers before the doors close and the lights go out, although Bruno determines to never let go of Shmuel's hand.
Bruno is never seen again, his clothes being discovered by a soldier days later. His mother, Elsa, spends months searching for him, even returning to their old home, before at last moving back to Berlin with Gretel, who isolates herself in her room. (Boyne develops Gretel's life in his 2022 novel All The Broken Places.) Ralf spends a year more at Auschwitz, becoming ruthless and cold to his subordinates, while haunted by visions of Bruno. Near the end of that year, on a theory, he returns to the place where Bruno's clothes were found, discovering the gap in the fence. He deduces how his son disappeared and collapses to the ground in grief. Months later, Allied troops liberate the camp and Ralf, wracked with guilt and self-loathing, allows himself to be taken without resistance.
The book ends with the phrase "Of course, all of this happened a long time ago and nothing like that could ever happen again. Not in this day and age".