It’s 1943, and the Johansens live in a small apartment in German-occupied Copenhagen, Denmark. Ten-year-old Annemarie Johansen and her best friend, Ellen Rosen, who is Jewish, are frightened by the soldiers who stand guard on every street corner. Annemarie’s little sister, Kirsti, is bolder and scolds the soldiers who question them on their way home from school. The soldiers’ threatening presence becomes more sinister when the Rosens learn that the Nazis intend to relocate Denmark’s Jewish population. Ellen’s parents go into hiding, and Ellen poses as Annemarie’s sister Lise, who died in a car accident earlier in the war.
The first night of Ellen’s stay, German soldiers barge into the Johansens’ apartment. Annemarie breaks a gold clasp in a hurried effort to remove Ellen’s Star of David necklace. Annemarie’s father helps avert disaster by showing the soldiers old photos of his three daughters. As a baby, Lise had dark hair like Ellen has.
The next day, Mrs. Johansen takes the girls to visit Annemarie’s Uncle Henrik, hoping they will be safer in the country. Henrik fishes daily in the strait between Denmark and Sweden, and the girls help with farm chores. When Annemarie is told that her hitherto unknown great-aunt Birte has suddenly died, she is skeptical. She confronts her uncle, and he confirms that Birte is a fictional creation. Annemarie understands the funeral service that evening is a ruse to mask her uncle’s true activities — smuggling Jews out of Demark on his fishing boat.
Jews dressed as mourners arrive at the farmhouse and sit silently around the closed casket. Ellen’s parents are among them. A carload of German officers bang on the door, asking why so many people have gathered at the farmhouse. The suspicious soldiers initially demand that the casket be opened, but they beat a hasty retreat when Annemarie’s mother explains that Birte died of typhus.
When the soldiers leave, Peter Neilsen (a Danish Resistance leader who was engaged to Lise before she died) opens the casket. Instead of a body, the casket holds only blankets and warm clothes. The Jewish “mourners” bundle up for the voyage to Sweden. They leave in small groups and are escorted through the dark to Henrik’s fishing boat that is docked a half-hour walk from the farmhouse. Annemarie’s mother leads the last group but does not return that night.
It is almost dawn when Annemarie sees a trembling heap on the ground outside. She rushes to help her mother, who has broken her ankle. As she helps her mother up the steps, she sees a packet that Peter had given Mr. Rosen. It fell from his pocket when he tripped leaving the house. Knowing only that the packet must reach Henrik, Annemarie hides it in a basket and sets out under the pretext that she is bringing lunch to her forgetful uncle.
On the way to the boat, a group of soldiers and their dogs stop her. They question her, search the lunch and tear open the hidden packet. It contains a handkerchief, and the soldiers leave to search Henrik’s boat. Annemarie is free to deliver the contents of the basket to Henrik.
When Henrik returns from ferrying the Jews to Sweden, he tells Annemarie that the handkerchief had been treated with a drug that attracts the dogs, and then temporarily numbs their sense of smell. Her actions prevented the Rosens, including Ellen, and other Jewish refugees from being detected when the soldiers boarded the boat.
Two years later, the war ends, and Annemarie waits for Ellen and her family to return to the apartment her parents have cared for during their absence. Peter has been publically executed, and she learns that Lise’s death was not an accident: She was deliberately run down while fleeing a raided Resistance meeting. Annemarie retrieves Ellen’s necklace from its hiding place and asks her father to fix the clasp in anticipation of the Rosens’ homecoming.