Юна сирота Софі Гаттер працює в капелюшній крамничці, що дісталася їй від батька. Одного разу вона випадково стикається із загадковим і привабливим молодим чарівником на ім'я Хаул. Симпатія, що виникла між ними, не вислизає від уваги відьми Пустки, яка сама бореться за серце Хаула. Вона насилає на Софі прокляття, перетворюючи її на стареньку.
Софі нікому не може розповісти про те, що трапилося, тому залишає рідний дім. Вона вирушає на пошуки відьми, яка зачарувала її, але дорогою зустрічає городнє опудало, яке приводить її до Ходячого замку Гаула. Ця доволі масивна споруда легко переміщується не тільки у фізичному просторі: вона може переходити з одного виміру в інший. Магічні якості будинку забезпечує демон вогню Кальцифер, що живе у вогнищі.
Кальцифер бачить, що Софі проклята, і пропонує їй угоду: він розіб'є прокляття, якщо Софі допоможе розладнати його угоду з Хаулом, через яку він опинився прив'язаним до будинку. Коли в будинку з'являється Гаул, він не впізнає в старенькій свою недавню знайому, і Софі представляється йому новою економкою.
Хаул відмовляється брати участь у черговій війні королівства, він відправляє Софі до короля, щоб пояснити відмову. У палаці вона зустрічає колишню наставницю Гаула - розважливу і могутню чарівницю Мадам Суліман - і відьму Пустки, яка зізнається, що не може зняти з Софі прокляття.
Софі потрапляє в пастку, але Гаул приходить на допомогу і дає їй каблучку, яка приведе її назад до замку і Кальцифера. Софі треба поспішити, щоб зрозуміти, як зняти прокляття і допомогти Кальциферу та Гаулу. Їй залишається сподіватися, що закохане серце підкаже їй вихід із ситуації.