SS officer Ralf (David Thewlis) and his wife Elsa (Vera Farmiga) have a twelve-year-old daughter, Gretel (Amber Beattie), and an eight-year-old son, Bruno (Asa Butterfield). The well-to-do family must move to the “countryside” when the father is promoted (to Obersturmbannfuhrer). Unknown to Bruno, the new house is near a Nazi concentration camp, and Ralf is the new commandant. Bruno initially dislikes the new house as he always has to stay in the house or the garden; also there are no other children to play with, apart from his sister.
From his bedroom window, Bruno spots a barbed wire fence with people in “striped pyjamas” behind it. Though he thinks it is a farm, it is the camp with Jewish people in their camp clothing. Bruno is forbidden to go there, because according to Ralf, “they’re not really people”; it is agreed that at least they are a bit weird, as demonstrated by their clothing. Bruno goes there anyway, secretly, and becomes friends with a Jewish boy, named Shmuel (Jack Scanlon), whom he meets at the fence, and who is the same age.
Shmuel tells Bruno that he is a Jew and that the Jewish people have been imprisoned here by soldiers, who also took their clothes and gave them the striped camp clothing, and that he is hungry. Bruno is confused and starts having doubts about his father being a good person. Later, he is relieved after seeing a propaganda film about the camp (that is a parody of Theresienstadt). Bruno often returns to the fence. He brings Shmuel food and plays draughts (checkers) with him through the fence.
An elderly Jewish man named Pavel (David Hayman) is a servant in the family home; he is treated rudely by Ralf’s adjutant, Obersturmfuhrer Kotler (Rupert Friend). Formerly a doctor, Pavel mends Bruno’s cuts when he falls off his homemade tire swing. Ralf hires Herr Liszt (Jim Norton) to tutor Gretel and Bruno, although in reality he is brainwashing them with anti-Semitic Nazi propaganda. Gretel is very responsive to this and becomes an even more fanatical Nazi than she already was, also because she likes Kotler. However, Bruno is bored and also confused, since Shmuel and Pavel are friendly.
In the meantime, Elsa notices a strange smell that she keeps noticing outside their house just as Lieutenant Kotler walks past. Kotler, thinking Elsa knows what really goes on in the camp, says to her “They smell even worse when they burn,” Elsa, who thought that the camp was a labour camp and not a death camp, is shocked and quarrels with Ralf about it, and ultimately breaks down. Kotler is blamed by Ralf and Ralf’s visiting father (who is also a firm Nazi) that he failed to report that his father emigrated to Switzerland some time ago, as opposed to contributing to the “national revival”.
Frustrated, Kotler responds to a small accident by Pavel of spilling some wine by beating him up severely; Pavel is not seen in the house any more. Later in the film, Maria, the maid, is shown cleaning up blood from where Pavel was beaten up. Shmuel appears in the house as a new servant and, in his joy, Bruno gives him a cake to eat. However, Kotler starts yelling at Shmuel for speaking with Bruno and stealing food. Shmuel tells the officer that Bruno is his friend and that he gave him the cake.
Frightened, Bruno denies, adding that he does not know Shmuel. The soldier tells Shmuel that they will later have “a little chat about what happens with rats who steal”. Shmuel is not seen in the house anymore, and at first not at the fence either. Finally, Shmuel is at the fence again, with an injured right eye. Bruno apologizes. Shmuel soon forgives Bruno and they become friends again. Kotler is later sent to the front for not advising his superiors of his father’s opposition to the Nazi regime.
Elsa decides to move away with the children; Ralf agrees, and tells Bruno that Elsa does not feel that the area is a good place for children to grow up. Bruno does not want to leave anymore, because of his friend Shmuel. Shmuel tells Bruno that his father is missing. Bruno gives him the bad news that he will be moving away for good the next day after lunch. Wanting to make up for letting Shmuel down and unaware that his father has likely been murdered, Bruno agrees to help Shmuel to find his father, and returns the ext day with a shovel to dig a hole under the fence to get into the camp, while Shmuel will bring an extra set of camp clothing; Shmuel’s suggestion that he could leave the camp through the hole is rejected by Bruno, who focuses on the target of finding the father. Bruno changes his clothes and wiggles under the fence, and is now in the camp with Shmuel. Bruno comes to realize that the camp is completely the opposite of what he saw in the propaganda film and wants to return, but Shmuel encourages him to continue helping to find his father.
While they look in Shmuel’s hut a group of guards and Kapos arrive and march all those inside (including Bruno and Shmuel) to a low concrete building. The men and boys are made to undress, supposedly for a shower, packed together into a gas chamber, and killed. In the meantime, Elsa warns Ralf (who is in a meeting about increasing the capacity of the crematorium) that Bruno is missing. With Gretel, they run to the camp and try to find him. They find Bruno’s clothes next to the hole under the fence.
Ralf runs throughout the camp and discovers an empty hut, and, reaching the gas chamber, concludes that Bruno has been brought to the gas chamber with a group of Jews. Pavel is also seen undressing near the boys and he looks at them and then turns away. When Ralf arrives, the boys are already dead and he is devastated. Upon hearing Ralf’s cry of “Bruno! ” Elsa and Gretel realise what has happened and are equally devastated. A last shot showing the undressing room with many camp uniforms reminds the viewer that the tragedy is not just Bruno, Shmuel and Pavel’s deaths, but that of many other Jewish people during the holocaust of World War II.