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