Kaulder is a
witch-hunter who was cursed with eternal life in the Middle Ages by the Witch Queen. The Witch Queen had unleashed the
Black Plague to wipe out humanity and killed Kaulder's family, but Kaulder was able to defeat her. Prior to seemingly dying the Witch Queen cursed him with eternal life as punishment. 800 years later, Kaulder is still working as a witch hunter for an organization called The Axe and Cross, which aims to keep the truce between humans and witches. Ever since he was made immortal by the Witch Queen, Kaulder is accompanied by a priest called a "Dolan" whose main purpose is to record the achievements of Kaulder and to be his keeper. The 36th Dolan is retiring from his duties and has chosen a new Dolan to work alongside Kaulder. However, the very same night he dies in his sleep.
While investigating his apartment, Kaulder and the 37th Dolan discover traces of magic and deduce that the 36th Dolan was murdered by a witch. While tracking down the witch responsible, Kaulder finds traces of old dark magic, last seen before he killed the Witch Queen. Using clues the 36th Dolan left behind, Kaulder goes to a witch bar owned by Chloe to buy a memory spell to "Remember his death". While in the process of reliving his memory, the bar is attacked by Baltasar Ketola, better known as Belial, the witch that killed the 36th Dolan. After attacking Kaulder he proceeds to burn down the place, and attack Chloe at her apartment later in the evening, though Kaulder saves her. After Chloe's friend is killed by Belial, she agrees to help Kaulder get what he needs to kill him.
In order to get the ingredients to create another memory spell, they visit Danique, an old and powerful witch who runs the fashion scene. However, Danique drugs Kaulder with an endless dream, and intends to lock him away forever. Chloe is able to enter his mind as a dream walker and convinces him to break free from the hold of the spell, and the two escape together. Using Chloe's dream walking abilities, she enters his mind and guides him to the memory of his death, where Kaulder discovers that the Witch Queen's heart never stopped beating. Kaulder's immortality is tied to the Witch Queen's heart, and if it were to die, so would he. The 36th Dolan was attacked because he knew of where the heart was hidden.
Leaving Chloe and the 37th Dolan behind, Kaulder goes to face Belial and the Witch Queen to prevent her from returning. Though he kills Belial, the Witch Queen reenters the world through the sacrifice of another witch, a blind merchant named Max Schlesinger, and escapes into the city, stealing Kaulder's immortality, revealing she only gave it to him to give herself a future. Back at Kaulder's apartment, the 36th Dolan is recovering, having not actually been killed but rather under a spell that was broken when Belial was killed. There, he encourages Kaulder to continue to fight again.
Kaulder, Chloe, and the 37th Dolan drive to the church that hold the Witch's prison, where the Witch Queen plans to enact another plague curse using the prisoners being kept there. Using her dream walking ability, Chloe enters the mind of one of the prisoners and kills him in his dream, also killing him in real life, severing the connection of the Queen to the prisoners and temporarily stalling her plan. Kaulder fights the Witch Queen, and appears close to killing her, until the 37th Dolan reveals himself a traitor with a grudge against Kaulder for killing his witch parents. The Witch Queen uses Chloe to complete the connection between the witches and the plague curse begins to form again. She kills the 37th Dolan for his mortality before turning her attention back to Kaulder.
Willed by the images of his deceased wife and child telling him to get up and fight, Kaulder throws his sword into the Witch Queen, and her body deteriorates. But as Kaulder prepares to kill the Witch Queen's heart to end her once and for all, Chloe stops him, convincing him that she and the world still need him around. After congratulating him on defeating the Witch Queen, the 36th Dolan agrees to delay his retirement and stay by Kaulder's side. Chloe does as well, and the three form a new team, free from the organization he served under before. The film ends with a faint sound of the heartbeat of the Witch Queen heard within Kaulder's weapon stash in his apartment.