Зимним утром Париж оглашается перезвоном колоколов. Жители французской столицы собираются во Дворце правосудия, чтобы посмотреть мистерию «Праведный суд пречистой девы Марии», дающуюся в честь фландрских послов. Представление задерживается. Усталая толпа ругается и сплетничает. Начавшееся представление не нравится публике. Всё её внимание сосредотачивается на иностранных гостях и кардинале Карле Бурбонском. Автор мистерии – поэт и философ Пьер Гренгуар приходит в отчаяние от провала. Зрители предлагают заняться куда более весёлым делом — избрать шутовского папу. Им станет тот, кто скорчит самую жуткую гримасу. Претенденты на этот высокий титул высовывают физиономию из окна часовни. Зрители выбирают Папу шутов. Им становится Квазимодо – уродливый звонарь Собора Парижской Богоматери. Чудовищного горбуна обряжают в нелепую мантию и уносят на плечах, чтобы пройти согласно обычаю по улицам города. Гренгуар уже надеется на продолжение злополучной пьесы, но тут кто-то кричит, что на площади танцует Эсмеральда — и всех оставшихся зрителей как ветром сдувает. Гренгуар в тоске бредёт на Гревскую площадь, чтобы посмотреть на эту Эсмеральду, и глазам его предстаёт невыразимо прелестная девушка — не то фея, не то ангел, оказавшийся, впрочем, цыганкой. Гренгуар, как и все зрители, совершенно зачарован плясуньей, однако в толпе выделяется мрачное лицо ещё не старого, но уже облысевшего мужчины: он злобно обвиняет девушку в колдовстве — ведь её белая козочка шесть раз бьёт копытцем по бубну в ответ на вопрос, какое сегодня число (а было именно 6 января). Когда же Эсмеральда начинает петь, слышится полный исступлённой ненависти женский голос — затворница Роландовой башни проклинает цыганское отродье. Шутовской парад останавливает архидьякон Клод Фролло. Он «свергает» Квазимодо и уводит его за собой. Пьер Гренгуар следует за Эсмеральдой. Он видит сцену похищения девушки Квазимодо и её последующее освобождение начальником королевских стрелков – Фебом де Шатопером.
Плутая по улочкам Парижа, Пьер оказывается в воровском квартале «Двор чудес». Судьба заносит злосчастного поэта во Двор чудес — царство нищих и воров. Чужака хватают и ведут к Алтынному королю, в котором Пьер, к своему удивлению, узнает Клопена Труйльфу. Здешние нравы суровы: нужно вытащить кошелёк у чучела с бубенчиками, да так, чтобы они не зазвенели — неудачника ждёт петля. Гренгуара, устроившего настоящий трезвон, волокут на виселицу, и спасти его может только женщина — если найдётся такая, что захочет взять в мужья. Никто не позарился на поэта, и качаться бы ему на перекладине, если бы Эсмеральда не освободила его по доброте душевной, взяв в мужья на четыре года. Осмелевший Гренгуар пытается предъявить супружеские права, однако у хрупкой певуньи имеется на сей случай небольшой кинжал — на глазах изумлённого Пьера стрекоза превращается в осу. Злополучный поэт ложится на тощую подстилку, ибо идти ему некуда. Пьер рассказывает историю своей жизни в надежде на то, что Эсмеральда, полюбит его, узнав получше. Девушка не слышит поэта – она думает о своем спасителе — капитане Феба де Шатопере.
На следующий день похититель Эсмеральды предстаёт перед судом.
Шестнадцать лет назад в деревянные ясли Собора Парижской Богоматери был подкинут четырёхлетний Квазимодо. Горожане видели в уродливом ребёнке дьявола. Молодой священник Клод Фролло усыновил подкидыша. В юности Клод активно учился, в девятнадцать лет стал сиротой и единственным опекуном своего младшего брата Жеана, в двадцать – принял духовное звание. Квазимодо вырос уродливым как телесно, так и духовно. Он плохо воспринимал окружающий мир, был злобен и невероятно силён. Он почти не выходил из Собора и больше всего на свете любил своего господина – Клода Фролло и колокола, от которых когда-то оглох. Глухой Квазимодо попадает к глухому судье, и это кончается плачевно — его приговаривают к плетям и позорному столбу. Горбун не понимает, что происходит, пока его не начинают пороть под улюлюканье толпы. На этом муки не кончаются: после бичевания добрые горожане забрасывают его камнями и насмешками. Он хрипло просит пить, но ему отвечают взрывами хохота. Внезапно на площади появляется Эсмеральда. Увидев виновницу своих несчастий, Квазимодо готов испепелить её взглядом, а она бесстрашно поднимается по лестнице и подносит к его губам флягу с водой. Тогда по безобразной физиономии скатывается слеза — переменчивая толпа рукоплещет «величественному зрелищу красоты, юности и невинности, пришедшим на помощь воплощению уродства и злобы». Только затворница Роландовой башни, едва заметив Эсмеральду, разражается проклятиями. Провинциалка Майетта рассказывает двум парижанкам историю Пакетты Шантфлери– дочери бывшего рейнского менестреля, после смерти отца вставшей на путь проституции и родившей в двадцать лет обожаемую дочку Агнесу. Прелестную девочку похитили цыгане, а вместо неё подбросили несчастной матери маленького Квазимодо. В затворнице Роландовой башни (сестре Гудуле) Майетта узнаёт несчастную Пакетту.
Начало марта. В доме вдовы г-жи де Гонделорье собираются девушки благородного происхождения. Дочь хозяйки дома Флер-де-Лис вышивает. Её жених Феб выглядит растерянным и задумчивым. Девушки приглашают танцующую на площади Эсмеральду в дом. Они завидуют красоте цыганки и потешаются над её нарядом. Сама же она неотрывно глядит на капитана, напыжившегося от самодовольства. Когда козочка складывает из букв слово «Феб» — видимо, хорошо ей знакомое, Флёр-де-Лис падает в обморок, и Эсмеральду немедленно изгоняют. Она же притягивает взоры: из одного окна собора на неё с восхищением смотрит Квазимодо, из другого — угрюмо созерцает Клод Фролло. Рядом с цыганкой он углядел мужчину в жёлто-красном трико — раньше она всегда выступала одна. Спустившись вниз, архидьякон узнает своего ученика Пьера Гренгуара, исчезнувшего два месяца назад. Выступающий вместе с Эсмеральдой Пьер Гренгуар рассказывает архидьякону историю девушки. Клод жадно расспрашивает об Эсмеральде: поэт говорит, что эта девушка — очаровательное и безобидное существо, подлинное дитя природы. Она хранит целомудрие, потому что хочет найти родителей посредством амулета — а тот якобы помогает лишь девственницам. Её все любят за весёлый нрав и доброту. Сама она считает, что во всем городе у неё только два врага — затворница Роландовой башни, которая почему-то ненавидит цыган, и какой-то священник, постоянно её преследующий. При помощи бубна Эсмеральда обучает свою козочку фокусам, и в них нет никакого колдовства — понадобилось всего два месяца, чтобы научить её складывать слово «Феб». Выйдя из собора Жеан встречает Феба. Они отправляются пропивать деньги архидьякона. Клод Фролло идёт за ними и узнаёт о готовящемся свидании Феба с Эсмеральдой. Он подкарауливает молодого человека, чуть не затевает с ним дуэль, но затем даёт денег на комнату у старухи Фалурдель в обмен на возможность увидеть судьбоносную встречу. В разгар любовных утех Клод Фролло покидает своё убежище. Перед Эсмеральдой возникает лицо ненавистного священника: она теряет сознание — очнувшись, слышит со всех сторон, что колдунья заколола капитана. Эсмеральду арестовывают.
Через месяц Пьер Гренгуар случайно заходит во Дворец правосудия, где видит суд над Эсмеральдой. Цыганка поначалу отпирается, но первая же пытка «испанским сапогом» заставляет её «сознаться» в преступлении и колдовстве. Торопящиеся на ужин судьи выносят девушке смертный приговор. Эсмеральду помещают в подземную тюрьму Турнель, где её навещает Клод Фролло и рассказывает о своей страсти. Архидьякон просит цыганку сжалиться над ним, подарив хоть немного ласки, и предлагает бежать. Девушка отталкивает его. В ответ он злобно кричит, что Феб умер. Однако Феб выжил, и в сердце его вновь поселилась светлокудрая Флёр-де-Лис. В день казни влюблённые нежно воркуют, с любопытством поглядывая в окно — ревнивая невеста первой узнает Эсмеральду. Цыганка же, увидев прекрасного Феба, падает без чувств: в этот момент её подхватывает на руки Квазимодо и мчится в Собор с криком «убежище». Толпа приветствует горбуна восторженными воплями — этот рёв доносится до Гревской площади и Роландовой башни, где затворница не сводит с виселицы глаз. Жертва ускользнула, укрывшись в церкви. Квазимодо помещает цыганку в келью, служащую убежищем. Он делится с ней своей постелью и едой.
Душевные раны Эсмеральды зарубцовываются. Она находит общий язык с Квазимодо, считает себя виноватой в том, что Феб видит в ней преступницу. Заметив на площади капитана, Эсмеральда просит Квазимодо привести его к ней. Феб отказывается идти за звонарём, считая его посланцем с того света. Клод Фролло ревнует цыганку к Квазимодо. В одну из ночей он пробирается в келью Эсмеральды и пытается овладеть девушкой. Звонарь оттаскивает архидьякона от цыганки.
Гренгуар’ тайком выводит Эсмеральду из Собора и невольно передаёт в руки Клода — тот увлекает её на Гревскую площадь, где в последний раз предлагает свою любовь. Спасения нет: сам король, узнав о бунте, распорядился найти и повесить колдунью. Цыганка в ужасе отшатывается от Клода, и тогда он тащит её к Роландовой башне — затворница, высунув руку из-за решётки, крепко хватает несчастную девушку, а священник бежит за стражей. Эсмеральда умоляет отпустить её, но Пакетта Шантфлери только злобно смеётся в ответ — цыгане украли у неё дочь, пусть теперь умрёт и их отродье. Она показывает девушке вышитый башмачок своей дочурки — в ладанке у Эсмеральды точно такой же. Затворница едва не теряет рассудок от радости — она обрела своё дитя, хотя уже лишилась всякой надежды. Слишком поздно мать и дочь вспоминают об опасности: Пакетта пытается спрятать Эсмеральду в своей келье, но тщетно — девушку тащат на виселицу, В последнем отчаянном порыве мать впивается зубами в руку палача — её отшвыривают, и она падает замертво. Клод Фролло и Квазимодо наблюдают за казнью Эсмеральды. Звонарь сталкивает архидьякона с Собора. Эсмеральда на виселице, и архидьякон, распростёршийся у подножия башни, — это все, что любил бедный горбун. Квазимодо умирает на теле Эсмеральды, сброшенном в Монфокон.