Sophie, a young milliner and eldest of three sisters, encounters a wizard named Howl on her way to visit her sister Lettie. Upon returning home, she meets the Witch of the Waste who transforms her into a ninety-year-old woman. Seeking to break the curse, Sophie leaves home and sets off through the countryside. She meets a living scarecrow, whom she calls “Turnip Head”. He leads her to Howl’s moving castle where she enters without invitation. She subsequently meets Howl’s young apprentice Markl and a fire demon named Calcifer, who is the source of the castle’s magic and movement. When Howl appears, Sophie announces that she has “hired herself” as a cleaning lady. In truth, Calcifer made a deal with Sophie to break her curse if she breaks his link with Howl.
Meanwhile, Sophie’s nation is caught up in a war with a neighboring kingdom, who is searching for their missing prince. The King summons Howl to fight in the war. However, Howl decides to send Sophie to the King (under the pretense of being his mother) to tell him that Howl is too much of a coward to fight. Before leaving, he gives Sophie a charmed ring that leads her to Calcifer and guarantees her safety. Sophie meets Suliman, the king’s head sorceress, and also the Witch of the Waste, whom Suliman punishes by draining all of her power and reverting her to her true age, that of a harmless old woman. Suliman warns Sophie that Howl will meet the same fate if he does not fight for the king. Howl then arrives to rescue Sophie. Suliman tries to trap him by turning him into a monster, but with Sophie’s help he remembers himself and just barely avoids death. The duo escapes along with the former Witch of the Waste and Suliman’s dog Heen. In the meantime, soldiers from each kingdom break into the homes of both Jenkins and Pendragon (Howl’s aliases in those kingdoms). However, the men only find an empty courtyard and warehouse, as the castle’s magic nature allows travel between 4 separate residences.
Sophie learns that Howl’s life is somehow bound to Calcifer’s and that Howl has been transforming into a bird-like creature to interfere with both sides in the war, but each transformation makes it more difficult for him to return to human form. Howl then has the castle magically linked to Sophie’s home, parking the castle itself on the town’s outskirts. A few days later, the town is bombed by enemy aircraft and Suliman’s henchmen attack the house and Sophie’s hat shop. Howl heads out to protect the group. Sophie then moves everyone out of the house and removes Calcifer from the fireplace, which collapses the castle. The Witch of the Waste realizes that Calcifer has Howl’s heart and grabs the fire demon, setting herself on fire. Sophie panics and pours water onto the Witch, which douses Calcifer. The remainder of the castle then splits in two; Sophie falls down a chasm and is separated from the group.
Following the charmed ring, Sophie wanders into a scene from the past, where she sees a young Howl catch a falling star – Calcifer – and give him his heart. Sophie calls for them to find her in the future as she is teleported away. She returns to the present, finds Howl, and they reunite with the others. The Witch returns Howl’s heart, and Sophie places it back inside Howl, reviving him and freeing Calcifer, though he decides to stay. Sophie’s curse is broken, though her hair remains white – a symbol to show that her learning and maturity from the whole experience are intact. After she kisses Turnip Head on the cheek, he returns to human form, revealing himself to be Justin, the missing prince from the enemy kingdom. He reveals that only his true love’s kiss can break his curse. After seeing Sophie’s affection lies with Howl, he promptly heads for home to cease the war. Suliman, watching through a crystal globe, also decides to end the war. Sometime later, bombers fly under dark skies over a recovered and green countryside headed to another war, while Sophie, Howl, and the others travel in the opposite direction in a new flying castle.