
After a lengthy hiatus, The Witcher has finally returned! All eight episodes of The Witcher season 3 are now streaming on Netflix.
If you want to skip ahead to The Witcher season 3 part 2 recaps click here!
The Witcher season 3 is a particularly notable season as it marks the final run of Henry Cavill as Geralt. Cavill will exit the show at the end of season 3 and will be replaced by Liam Hemsworth moving forward in the already-announced fourth season (and rumored fifth).
In the latest season, we pick up by following Geralt, Ciri, and Yennefer as they remain on the run from all the different factions currently after Ciri, including her own father, Emperor Emhyr of Nilfgaard.
Spoilers ahead for The Witcher season 3
We’re recapping every episode of The Witcher season 3! But before you read, feel free to check out our season 2 recap guide to catch up on everything that happened before diving into the new episodes.
The Witcher season 3 episode 1 recap: Shaerrawedd
The hunt for Ciri (Freya Allan) is on in The Witcher season 3 premiere, and the benefit of that is finally getting to see Ciri, Geralt (Henry Cavill), and Yennefer (Anya Chalotra) together like the family trio we’ve been waiting for from the start.
The Witcher season 3 opens with a montage of sorts as the trio moves from place to place, always on the move to prevent anyone from catching up to them. Yennefer and Geralt primarily communicate through letters as Yennefer slowly regains his trust through months of training and traveling together.
After moving from place to place for a while, the threesome is able to settle down for a bit in a snowy location protected by Yarpen Zigrin (Jeremy Crawford) and his crew. It gives them a chance to relax and bond, even if we know it can’t last forever.
Rience (Chris Fulton) is still on the hunt for Ciri, and his latest plan involves visiting a jackapace trainer. The jackapace appears to be a show-only monster, similar to a giant, evil armadillo with keen scenting powers. It’s trained to smell elves, and Rience gives it a whiff of Ciri’s blood from the vial of witcher mutagen he stole.
Speaking of elves, Francesca (Mecia Simson) and her people are still on a mission to find Ciri, just like everyone else. Francesca believes Ciri is a powerful descendant, Hen Ichaer, and prophesized to deliver them to the fabled Dol Blathanna. But Francesca has new complications as her people are beginning to doubt her.
Francesca has allied with the guerrilla Scoia’tael fighter Gallatin (Robbie Amell), but they fundamentally disagree on what their next move should be. Francesca is obsessed with finding Ciri, but Gallatin believes allying with Nilfgaard is the best way for their people to be free.
He thinks the entire Continent could be their Dol Blathanna, but Francesa doesn’t think it’s possible for elves and humans to coexist peacefully. History is on her side. For now, she’s been sending her best fighters on secret Ciri-related missions, leaving Gallatin and the weaker of her people to die in battles they’re ill-prepared for, and Gallatin is displeased. By the looks of things, a power struggle between them is brewing.
In Redania, King Vizimir (Ed Birch) is growing restless since his spymaster, Sigismund Dijkstra (Graham McTavish), still hasn’t brought him Princess Cirilla despite his promises to the contrary. Vizimir decides to assign his oafish younger brother, Prince Radovid (Hugh Skinner), to assist Dijkstra and Philippa Eilhart (Cassie Clare) with their mission. In the books, Radovid is Vizimir’s son, but the show has aged him up and made him the king’s brother instead.
Ciri is growing restless. When she learns from Yarpen that Belleteyn is being hosted nearby, she begs Geralt and Yennefer to let her attend. Yennefer convinces Geralt to go, and all three of them attend. Ciri gets to dance and have a night of frivolity while Geralt and Yennefer reminisce about their many good nights together. Geralt even remembers that Belletyn is Yennefer’s birthday. Ciri was also born near Belletyn, but it’s not mentioned in the episode.
Unfortunately, as these nights often go, their joy is short-lived. The jackapace catches up to them at the party and chases Ciri through a hedge maze. Geralt, Yennefer, and Ciri narrowly defeat it. Realizing that Rience will continue coming after Ciri no matter where they go, thanks to having her blood, they devise a new plan to lure him out.
They’ll use Ciri as bait to make a trap. To do so, they’ll need people to believe Ciri is traveling without Geralt and Yennefer, and the only way anyone would believe that is if she’s with someone else they trust. Enter Jaskier (Joey Batey). Our first scene with Jaskier in The Witcher season 3 is him being thrown out after sleeping around on a woman named Vespula (Beau Holland). He then runs into Philippa and Radovid, who have come looking for Ciri.
Radovid is surprisingly taken with Jaskier, a true fan of the bard’s work. He tries to convince Jaskier to bring Ciri to Redania. She’d be safe there, and becoming Vizimir’s bride wouldn’t be the worst thing. Philippa tells Jaskier if they don’t bring them the girl, they’ll undo everything he’s done for the elves and kill them all. Yarpen arrives seconds later to tell Jaskier his friends need help. He’s going to act as bait alongside Ciri.
They put their plan into motion at the ancient palace of Shaerrawedd in Kaedwan. Just like they anticipated, Rience comes for Ciri, and then when he finds himself up against Geralt and Yennefer, he tries to escape through a portal, a strange portal that uses dark Chaos, unlike anything Yennefer has seen before. While Geralt jumps through to try and finish off Rience, the elves arrive, now supposedly led by a united Francesca and Gallatin. In reality, Francesca is still just after Ciri.
Geralt realizes Yennefer can’t keep the portal open much longer, and he doesn’t have time to defeat Rience. Instead, he breaks the mage’s hands and leaves him like that before returning to the battlefield.
A fight ensues between Ciri, Jaskier, Yarpen and his men, and the elves as they try to come for Ciri. Jaskier comes to the aid of one of Yarpen’s men and gets shot with an arrow, though he survives. The loss of so many men forces the elves to retreat, and Gallatin is pissed at Francesca for acting so rashly. Dara (Wilson Radjou-Pujalte) warns Gallatin that Ciri only brings death. And Francesca is faced with yet another traumatic loss as her brother, Gage (Kaine Zajaz), is killed during the battle.
In the aftermath of the fight at Shaerrawedd, Yennefer realizes she needs help to train Ciri and proposes taking her to Aretuza, where Ciri can get proper training as a novice. It won’t be easy, as she’s still considered a traitor there, but Yennefer has a plan to earn the Brotherhood’s forgiveness. Meanwhile, Geralt will hunt down Rience.
But Jaskier also puts his own plan into action. He meets with Philippa and Radovid again, suggesting they try and find Rience and his master. If they can kill him first, they’ll earn Geralt and Ciri’s trust. It’ll be much easier to persuade her to come to Redania that way. Jaskier also agrees that it would be safer for her there in the long run.
The Witcher season 3 premiere ends with Rience returning to his master, who fixes his broken hands, though we still don’t see who it is that he works for just yet. Elsewhere, Emhyr (Bart Edwards) burns all the old portraits he has of his family and keeps just one, a painting of baby Ciri.

The Witcher season 3 episode 2 recap: Unbound
Ciri and Yennefer have begun their long journey to Aretuza. They stop at an outdoor tavern where Ciri crosses paths with the royal messenger Aplegatt (Jim Sturgeon). She has a vision of his death and tries to warn him, but Yennefer prevents her from doing so, advising Ciri to be careful with how she chooses to intervene as changing destiny is a weighty business.
Geralt and Jaskier visit Codringher (Simon Callow) and Fenn (Liz Carr) to get information on Rience. They claim to not know who Rience is working for, but Fenn does tell Geralt that the mysterious sorcerer in question is conducting his business at a castle called Vuilpanne near the old scarlet ammonite mines on the outskirts of Piana in west Redania.
Before departing, they make a comment about Geralt’s “Elder Blood princess,” and inform him Istredd (Royce Pierreson) has come searching for her. Geralt goes to Vuilpanne, alone, not wanting Jaskier to come to any more harm.
Elsewhere, Yennefer and Ciri visit the sorceress Keira Metz (Katie McGuinness) in Gors Velen for a portal to Aretuza. While there, a gruff man comes in with a prisoner on his arm. Ciri has a vision of him being brutally killed, so she cuts him free, pissing off the man, who we learn works for the powerful businessman Dominik Bombastus Houvenaghel.
By freeing the child prisoner, Yennefer is forced to kill the man so he doesn’t murder Ciri. Keira panics and tells Yennefer that if she doesn’t want to end up dead, they better run, and then Keira takes a portal and escapes.
Once clear of the village, Yennefer lectures Ciri on the importance of using discretion over valor. Ciri wants to be a judicial ruler who helps people, consequences be damned. But Yennefer tells her that now, because of her actions, countless people will die for Houvenaghel to recoup his losses with blood and money. The townspeople who do survive his wrath will be conscripted to fight, where they’ll die from battle, disease, or starvation. She saved one life in exchange for hundreds.
Ciri is frustrated that she can see the future yet cannot change it. Ciri snarks that Yennefer doesn’t understand because she can use her magic to change anything. How would she know what it’s like to fight to control her life? Of course, Yennefer knows full well and decides to take a detour so she can show Ciri where she came from.
They go to the place where Yennefer used to live, and she shows Ciri visions of herself when she was younger, before Aretuza. The only way for them to change this is to control their Chaos, that’s true power. She tells Ciri how her decision to free Cahir resulted in turning the North against the Brotherhood and the Brotherhood against each other. Their actions have consequences that can ripple across the entire Continent.
At Aretuza, tensions are growing within the Brotherhood. Stregobor (Lars Mikkelsen) just wants to kill Ciri and be done with it, but Tissaia (MyAnna Buring) and Triss (Anna Shaffer) tell him they need to chill, regroup, and plan accordingly. Vilgefortz (Mahesh Jadu) agrees. He and Tissaia are still going strong. He even gives her a bracelet as a symbol of his love.
In Redania, Philippa whips Dijkstra for some reason. Apparently, he’s a masochist. She tells him that Radovid might be smarter than they initially realized. And elsewhere, Radovid is busy flirting with Jaskier, asking him to play a song for him and his friends at a quaint gathering.
Geralt faces off against a truly monstrous abomination at Vuilpanne. It’s a giant, fleshy monster comprised of bodies of young girls who have been tormented and experimented upon. There is only one survivor, a young, ashen-haired female named Teryn (Frances Pooley), who looks mysteriously like Ciri. After slaughtering the creature, Geralt rescues Teryn and takes her with him. She introduces herself as Ciri! Someone has made this girl think she’s the real princess of Cintra.
Back at Codringher and Fenn’s, Rience shows up and sets their entire place ablaze, seemingly killing them both (but he does save their cat).
Also of importance is this episode is our first sighting of Fringilla (Mimi Ndiweni) in The Witcher season 3. She’s being held in the bowels of Cintra, forced to become a poison tester for the emperor. Her job is simply to drink wine all day and ensure it isn’t poisoned. But Fringilla sees a way out when one of her fellow poison testers dies. She slips into the body bag and escapes when they dump him outside.
We also catch up with Cahir (Eamon Farren), and he’s not fairing much better. Emhyr has punished both of them for trying to deceive him and for the mistakes they made in the second season. Cahir has been sent out on missions to attack convoys, security detail basically. He runs into Gallatin on his path, and the two decide to become allies.

The Witcher season 3 episode 3 recap: Reunion
Vespula has apparently forgiven Jaskier as The Witcher season 3, episode 3 opens with them in bed together, though she also deduces that Jaskier has a newfound crush on Prince Radovid. Vespula and Jaskier’s mid-morning dalliance is interrupted by Geralt, who needs Jaskier’s assistance.
They take Teryn to an old friend of Geralt’s, a healer named Anika (Catherine McCormack), who knew Geralt’s late mother Visenna. Anika lives with a man named Otto Dussart (Dempsey Bovell), who Geralt previously helped cure of lycanthropy (werewolf) by giving him a special amulet. With their assistance, they give Teryn an extraction elixir to try and break through her muddled memories and coax her into telling them who was experimenting on her.
Yennefer and Ciri arrive in Gors Velen to see Giancardi, the dwarven banker who owns the Giancardi Bank. Yennefer is there to retrieve coin from her vault before she goes to Aretuza to see Tissaia and curry favor. She leaves Ciri with a chaperone, Fabio (Stuart Thompson). Yennefer visits with Tissaia, who tells her she’ll still need to seek forgiveness from the rest of the council, but she does convince her to let Ciri come and be a novice at Aretuza.
In Gors Velen, Ciri and Fabio get into trouble pretty quickly as Ciri sees a shady dealer with a supposed “basilisk,” charging people to see it and potentially kill it. In reality, the “basilisk” is a baby wyvern, and Ciri kills it, though she lets a nearby squire claim victory to avoid drawing more attention to herself.
We’re also briefly introduced to Mistle (Christelle Elwin), a member of the Rats. Mistle is an important character in Ciri’s story as she serves as a love interest to her in the books. The character will be in the Witcher spinoff/prequel series The Rats, which is currently in production.
Dijkstra and Philippa are struggling to keep control over Vizimir, who has taken a secret meeting with a Nilfgaardian, and somehow Dijkstra, the spymaster, didn’t know about it. Philippa also sensed disturbing energy from a portal, similar to what Yennefer felt. They know that there is another mage at play, and they need to figure out who it is.
Istredd also comes back into play in this episode. He is working with a Nilfgaardian spy searching for a mysterious book of monoliths. The book in question is missing, and the spy informs him it relates to the White Flame himself.
Back at Anika’s, the extraction potion begins to do its work, but all Teryn can tell Geralt is that she heard a woman with a funny voice. She seems to become possessed by the mage or some uncontrollable force and attacks, yanking off Otto’s amulet, which causes him to begin transforming.
Geralt leaps into action and manages to get the amulet back on Otto, and Jaskier pours the rest of the extraction elixir down Teryn’s throat. Geralt learns the mage is operating out of Aretuza. He asks Anika to keep an eye on Teryn for him while he goes after them.
Not long after the wyvern mishap, Ciri runs directly into Tissaia and Margarita Laux-Antille (Rochelle Rose), the rectoress at Aretuza. They mistake Ciri for a wayward novice. Yennefer joins them, and they bring Ciri back to Aretuza, where she quickly discovers what life is like for a novice. It’s not fun. Sabrina (Therica Wilson-Read) and Margarita taunt Ciri and treat her like a serving girl, resulting in a big fight between Ciri and Yennefer, as Ciri doesn’t want to be part of what she deems a vain and vapid group of power-mad women.
Yennefer’s next plan is to host a conclave so they can present a united front to the northern kingdoms and perhaps gain unity against Nilfgaard.
In Redania, Philippa and Dijkstra put a plan into action to turn Vizimir against Nilfgaard again. Dijkstra has Queen Hedwig murdered and her head sent to Vizimir, courtesy of Nilfgaard. Radovid is shocked by Dijkstra’s actions, but he can’t do anything about it, lest he be accused of treason alongside them. It was actually the queen’s handmaid, Eva (Cal Watson), who did it on orders from Philippa as the two are sleeping together. Eva and Philippa also discuss the strange portals they’ve been seeing, and Philippa begins to draw conclusions regarding the mage controlling Rience.
Speaking of Rience, he visits Lydia (Aisha Fabienne Ross), who can now only communicate via telepathy because uses an illusion to cover the damage to her face after she tried using the witcher mutagen. Rience tells Lydia he wants to speak to her master because if he wants Rience to keep doing his bidding, he has a demand of his own.
In Cintra, more plotting is afoot between Cahir and Gallatin as they propose a new plan of allyship to Emhyr. They want to form an alliance and leave Francesca out of the picture, but Emhyr will need more than that to trust Cahir again. And what does Emhyr want? It turns out he would rather ally with Francesca and the elves rather than let Gallatin take over because Gallatin is headstrong and the type of leader who could cause discord and trouble among the elves. They need them united, so Cahir murders his old friend on Emhyr’s orders.
While running away from Aretuza, Ciri finds herself stalked by the Wild Hunt. Luckily, Geralt arrives in time thanks to Ciri’s enchanted talisman, which she uses to call out to him. But even though the Wild Hunt disappears after Geralt arrives, they’re startled to see that a piece of armor has fallen to the ground, proving that this time the Wild Hunt was really there and not just in Ciri’s dreams.

The Witcher season 3 episode 4 recap: The Invitation
Cahir is rewarded for murdering Gallatin by being invited back into Emhyr’s good graces. He gets a new mission, his target is Francesca. It won’t be easy to go after her. What about Fringilla? At this point, Emhyr believes Fringilla is dead, so it will be up to Cahir to accomplish this mission alone.
Yennefer takes her stand in front of the Brotherhood, proposing a conclave that will create a strong united front among the Northern Kingdoms against Nilfgaard. No more division, no more secrets. Only trust and unity. Stregobor isn’t pleased with Yennefer being back, and he makes his distaste known, comparing her to a fungus. But she has Tissaia’s full support and also Vilgefortz’s. Slowly, the others agree to Yennefer’s plan.
Now that the Wild Hunt has been dealt with, at least for now, Geralt tells Ciri that her power acts as a conduit for the monoliths, creating doorways between the spheres. When they portaled to the sphere with the Wild Hunt during the fight with Voleth Meir, she might have left the door open on the way out, so to speak, allowing the Wild Hunt to crossover.
Now they need to go to Aretuza so Geralt can hunt down the mage. Ciri isn’t thrilled by the idea, especially since she and Yennefer left things on bad terms. But Geralt assures her that Yennefer will forgive her.
At Aretuza, Tissaia commends Yennefer for her gift at politics despite her disdain for it. They’re interrupted by Triss. She tells them she found blood in one of the novice’s bedrooms. Worse, she meets with Istredd, who tells her his own theory about the missing Book of Monoliths and the possibility someone is hurting the novices, any of the ones with elven blood, and potentially planning to banish them forever.
Elsewhere, Geralt and Ciri meet up with Jaskier, and they prepare to take a ferry from Gors Velen to Aretuza. In exchange for payment, Geralt offers to kill a monster that’s been interfering with the ferryman’s passage. Onboard the ship, the group comes face-to-face with Jaskier’s longtime rival, Valdo Marx (Nathan Armarkwei Laryea), and his troupe of bards. Valdo has been invited to perform at the conclave ball at Aretuza.
Being with Vilgefortz has softened Tissaia in many ways. She and Yennefer are both a bit giggly over the newfound romance, especially when Yennefer sees the bracelet he gifted her. Later, Vilgefortz pulls Yennefer aside to question her motives. He warns her not to leave Tissaia high and dry again because she’s always left to clean up her messes. Yennefer assures him that’s not going to happen this time.
Pivoting back to Redania, Dijkstra and Philippa continue their scheming. Dijkstra sends the messenger Aplegatt with a message to the navy commander (seemingly putting Ciri’s vision of his death into motion). It sounds like Dijkstra and Philippa have uncovered who Lydia and Rience are working for, but they need proof to ensure things don’t go belly-up once they crash the Brotherhood’s conclave and start pointing fingers.
Aboard the ferry, Ciri puts her hunting skills to use to figure out what kind of monster they’re dealing with: a scary water monster known as an aeschna. There is a nice scene between Ciri and Geralt here, with him offering her some advice. Ciri is still unsure of learning magic. She wonders if it would be better to govern with steel and steel alone, like Calanthe. Geralt tells her to be careful not to let her sense of justice turn to rage. But for the record, he thinks she would make a great queen, and if that’s what she wants, he’ll support her.
Yennefer crashes Queen Hedwig’s funeral to invite Philippa to the conclave. Dijkstra isn’t happy about this, but Vizimir interrupts. Yennefer appeals to his emotions, using his queen’s death as a way to suggest monarchs need better protection, the kind of protection they could be offered by the Brotherhood. Vizimir then demands that Philippa, Dijkstra, and Radovid attend the conclave.
Things start to get rocky on the boat as Valdo Marx and his group perform a song, much to Jaskier’s annoyance. The music disturbs the aeschna, which rears up and attacks. Geralt and Ciri work together to kill the monster, with Ciri delivering the finishing blow. After, Geralt tells Ciri he’s proud of her. Awe.
When Yennefer tries portaling back to Aretuza, she somehow gets sidetracked and ends up in a dangerous illusion where a fake Geralt tries to kill her. It’s the same strange magic we’ve been seeing in the portals all season. She manages to escape and return to Aretuza, where Triss and Sabrina rush to her side. Yennefer explains that it was corrupted, and Triss notices that Yennefer returned with traces of stellacite on her from the portal, meaning whoever made it could have a link to the monoliths and the missing book.
Ciri is still unsure about going to Aretuza full-time. What will Geralt do while she’s gone? She tells Geralt it’s not too late for them to turn back, go off the grid, and live out their days hunting monsters. But Geralt tells Ciri was he found at Vuilpanne, the horrific abomination of missing girls, and Teryn, who thinks she’s Ciri. Ciri realizes that it’s all much more harrowing than she realized and agrees to continue their mission and stop whoever is behind all of this.
We catch up with Fringilla for the first time in a while. She’s finally escaped and seems to be thriving, hanging out in a tavern and listening for important information and tidbits. Fringilla overhears the bartenders discussing the upcoming conclave at Aretuza.
Geralt, Jaskier, and Ciri meet up with Yennefer. Yennefer and Ciri immediately make amends, and then Geralt and Yennefer leave her with Jaskier while they prepare to attend the ball and the conclave. Yennefer places powerful wards around a lone shack in the woods to keep Jaskier and Ciri safe. They play card games for a bit, with Ciri beating Jaskier every time.
Once she falls asleep, Jaskier notices someone snooping around the shack. He follows the sound outside and discovers Radovid inside a nearby hovel. He assures Jaskier he slipped his security detail, so they’re not in any danger. Realizing they’re alone, the two finally act on the sexual tension that’s been brewing between them all season.
In the woods, Cahir catches up to Francesca and her men. He offers her food and a new mission where they will work together, as allies. Cahir says Gallatin was planning to stage a coup, which is why he’s dead. Now is the chance for her to team up with them under the White Flame.
And just like I suspected, Aplegatt is shot and killed on his way to deliver Dijkstra’s message, just like Ciri’s vision foretold.
After the brush with the corrupted portal, Triss returns to Istredd. She believes that whoever is hurting the novices is someone among them, someone at Aretuza. With the stellacite, they conduct a locator spell and see a safe where the Book of Monoliths is supposedly being held, a safe that belongs to Stregobor.
Meanwhile, Geralt and Yennefer discuss the portal and the illusion. They also deduce that Stregobor must behind all this, as he uses illusions and he hates elves. Is Stregobor really the mage behind everything? Geralt wants to go kill him, but Yennefer asks him to wait and let things play out at the conclave.
He’ll go to trial, and the other mages will do far worse to Stregobor than Geralt even could. Geralt isn’t thrilled at having to play politics, but he agrees to do it for Yennefer. The episode ends with everyone preparing for the ball and the subsequent conclave.

The Witcher season 3 episode 5 recap: The Art of Illusion
The Witcher season 3, episode 5 functions as the midseason finale, wrapping up the first half of the season. Netflix will release the final three episodes in late July. In “The Art of Illusion,” we get to see what happens at the ball held at Aretuza.
The episode plays out a bit like a heist episode, with viewers getting to see several things happening at once and then the same situations replayed from new angles and with different conversations revealed. Slowly, the mask is pulled back on the dangerous mage who has been controlling Rience and is after Ciri.
The Witcher season 3, episode 5 begins with a romantic interlude with Geralt and Yennefer. Throughout the episode, we see them canoodling all night, congratulating themselves on a job well done after revealing Stregobor’s duplicity.
Their plan to find proof at the ball seems to have worked, and the episode slowly shows us how it all goes down. Of course, as fans of the book know, Geralt and Yennefer’s first suspect is not the right one, but more on that later.
Yennefer and Geralt’s arrival at the ball draws the immediate attention of everyone as all eyes are on them out of curiosity. Sabrina even tries to seduce Geralt right in front of Yennefer, but it doesn’t go as she’d hoped. Geralt only has eyes for Yennefer.
As the episode unfolds, we learn that Yennefer and Geralt are working with Istredd and Triss to catch Stregobor. Geralt and Istredd stage a fight to cause a distraction, allowing Yennefer to snoop through Stregobor’s study and find his safe. Inside is the stolen Book of Monoliths.
Istredd, Triss, Tissaia, Stregobor, Artorius, and Vilgefortz arrive in time for Yennefer and Geralt to tell everyone what they’ve found. Of course, Stregobor vehemently denies their accusations, but they all agree to hold an official trial after the ball and conclave. It seems like a job well done, right? Not quite.
While chatting, Geralt and Yennefer start to look back at some of the various conversations they’ve had over the course of the night with people like Philippa and Vilgefortz. Yennefer had also found Tissaia’s bracelet, the gift Vilgefortz had given her. It’s made of scarlet ammonite, which is meant to protect loved ones. Geralt realizes the castle in West Redania where he found Teryn was near a scarlet ammonite mine.
Geralt also notes that he saw Lydia at the ball, and she was wearing earrings made of scarlet ammonite. Yennefer mentions that Lydia uses an illusion now and only communicates telepathically, reminding Geralt of what Teryn said about the “woman with the funny voice.”
Then Yennefer notes that the corrupted portal took her to the First Landing, and earlier that night, Vilgefortz told Geralt his favorite painting was of the First Landing. He also made a remark about preparing for the “battle to come” despite claiming he was all for unity and peace at the conclave. They realize they got it wrong.
It’s not Stregobor behind everything, it’s Vilgefortz conducting the experiments and controlling Rience and Lydia. Philippa and Dijkstra had already figured this out, and Philippa had been trying to warn Yennefer, but Yennefer misinterpreted her meaning.
Yennefer and Geralt split up so Yennefer can find Tissaia and warn her, and Geralt can go after Vilgefortz. But as soon as Geralt steps into the hallway, he’s stopped by Dijkstra holding a knife to his throat. The episode ends there, leaving us on a major cliffhanger. July 27 needs to hurry up!

The Witcher season 3 episode 6 recap: Everybody Has a Plan ’til They Get…
The Witcher season 3 part 2 picks up right where we left off: Dijkstra holding Geralt at knifepoint, just as the Thanedd coup begins. Geralt’s life isn’t in danger, and considering he also wants Vilgefortz exposed, they’re working toward a common goal for now.
Dijkstra and the Redanian soldiers have rounded up most of the Brotherhood and any other mages standing in their way, binding them in dimeritium to prevent them from fighting back or escaping. Thankfully, Yennefer escaped through a secret entrance before they could take her. Vilgefortz and Artorius are among the captured mages, while Sabrina stands with Philippa and Dijkstra.
They summon Tissaia to plead their case and expose Vilgefortz, leaving her unbound as a show of respect. The Rednanians want to prove that he is in league with Nilfgaard, but Tissaia doesn’t believe them and unbinds all of the mages, leading to a deadly fight.
Hanging back near a window, Geralt notices thick magical fog creeping across the ocean, meaning someone is using magic to hide their approach by sea. Dijkstra assumes it’s the Northern armies he summoned for backup courtesy of Aplegatt’s message. But we know his messenger never made it, meaning the people arriving at Thanedd are not allies of Dijkstra and Philippa.
Realizing they’ve got serious trouble on the way, in addition to the magical fight raging around them, Geralt makes haste to find Ciri. Dijkstra makes the foolish mistake of trying to stop Geralt, suggesting Ciri has already been apprehended by the newly arriving Nilfgaardian army mixed with Scoia’tael fighters there to retrieve her. Geralt beats Dijkstra to a pulp, breaking several of his bones in the process.
In the tunnels beneath Aretuza, Yennefer runs into a pissed-off Lydia, who tries to kill her in the name of her master, Vilgefortz. Triss arrives just in time to save Yennefer, and they leave to find Tissaia.
Elsewhere on Thanedd island, Jaskier wakes up to find Radovid has slipped out to kidnap Ciri now that Yennefer’s magical wards have disappeared. Jaskier is disappointed but not all that surprised by Radovid’s actions. However, they’re both too late anyway. Ciri fled the cabin earlier after a disturbing dream showing both Geralt and Yennefer dead.
Ciri and Yennefer catch up outside the walls of Aretuza. They make haste for the ferry to get Ciri off the island. Rience catches up with them, trapping Ciri in a circle of fire. Thankfully, Geralt has already found them, and in a nifty trick, Yennefer tosses him her sword so he can decapitate the fire mage, finally! Geralt confirms with Yennefer that they were right about Vilgefortz. He’s at the center of everything.
Back at Aretuza, all hell has broken loose. After freeing the mages, Tissaia realizes she’s made a terrible mistake. Vilgefortz reveals himself as a traitor and opens the doors for the Nilfgaard and Scoia’tael army, led by Francesca, Cahir, Fringilla, and Filavandrel.
A vicious battle ensues between the defending mages and the Scoia’tael, who use dimeritium-tipped arrows to kill mages. Tissaia launches a deadly spell at Francesca, but Filavendrel jumps between them and takes the brunt, getting blown to smithereens and soaking his wife in his blood. Francesca is devastated and vulnerable to an attack from Artorius. Fringilla intervenes, murdering her uncle.
Fringilla then persuades Francesca to fight through her grief, so Francesca channels her magic, locks all the doors, sets the giant floating ring above Aretuza on fire, and drops it down on all the mages in a scene that could have been straight out of Carrie.
Sensing an incoming loss, Tissaia prepares to summon a spell of last resort called Alzur’s Thunder. On her way to the upper floors of Aretuza, Tissaia runs into Sabrina, Keira, and the other mages. They plead with Tissaia to let them fight despite being part of Dijkstra and Philippa’s coup. But technically, they were only doing it to expose Vilgefortz, not to hurt the mages. Tissaia lets them pass.
Triss and Istredd are also present, conferring over the Book of Monoliths. Istredd rushes to retrieve it but mistakenly walks right into Vilgefortz’s trap. Once Istredd has the book, Vilgefortz throws him and it through a portal together for safekeeping.
MORE: What happens to Istredd in The Witcher season 3?
Amid the skirmish, Fringilla and Cahir are briefly reunited. He’s surprised to see her still alive. They discuss Ciri, wondering if she’s even still on the island. Francesca tells them to leave Tissaia to her. She’s seeking revenge for Filavandrel’s death. But then Tissaia summons Alzur’s Thunder, turning the tower of Tor Lara into a massive lightning rod to rain down electricity on everyone below. Fringilla uses her magic shield to protect herself and Francesca.
From where she’s been reunited with Geralt and Ciri, Yennefer realizes what Tissaia is doing when she sees the darkening stormcloud above Aretuza. The effort of summoning such a powerful spell could kill her. Knowing how deeply Yennefer cares for Tissaia, Ciri convinces her to go to her before it’s too late. Yennefer says goodbye to her family, telling Ciri she loves her and will find her again.
She arrives at Aretuza just in time to face off against Francesca. However, before she has to do anything, Stregobor shows up, and he’s tapped into forbidden fire magic. He’s been itching for a chance to kill elves, so he tells Yennefer and the others to go, and he’ll buy them time.
Unable to move due to the injuries inflicted by Geralt, Dijkstra is taunted by another Brotherhood member, Artaud. Philippa makes quick work of the mage in her owl form before escorting Dijkstra out of Aretuza so they can portal away.
Before Ciri and Geralt can get to the water, they come face-to-face with Cahir. Ciri immediately attacks him, but it’s not a hard fight because Cahir surrenders to her. He apologizes for his part in sacking Cintra, pleading for her forgiveness and pledging his life to hers. Before Ciri can decide his fate, some elves arrive for her, so Cahir tells her and Geralt to run while he handles them. He promises to find her again.
Vilgefortz finds Geralt, and they have an epic battle that leaves Geralt broken and bloody. Vilgefortz gives him a brutal beatdown on the beach, breaking Geralt’s back and countless other bones. He intentionally leaves Geralt horribly injured but alive as his “lesson to the Continent.”
Once he’s dealt with Geralt, Vilgefortz turns his attention to Ciri, who has escaped into Tor Lara. While trying to outrun the mage, Ciri accesses a portal within the tower, but given its unstable nature, she has no control over where it will take her, and by using her magic on it, she causes the portal and the surrounding tower to explode. The force of the magical combustion blows Vilgefortz outside. He’s not dead, but if the show continues following the books, he might look more like Rience the next time we see him.
Across the island, Yennefer reaches Tissaia, whose hair has turned completely white from the magical exertion demanded by Alzur’s Thunder. Yennefer escorts her outside Aretuza alongside the other surviving mages, including most sorceresses we’ve met, like Margarita, Sabrina, and Keira.
On the beach, Triss finds Geralt’s broken body floating in the ocean. She pulls him out before he can drown, and everyone watches as Tor Lara collapses, unaware Ciri is the reason behind its downfall.

The Witcher season 3 episode 7 recap: Out of the Fire, Into the Frying Pan
The Thanedd coup has essentially left everything in ruins. Another war has begun. We catch up with Jaskier again, who finds Radovid hiding in the wreckage at Aretuza. Despite everything that happened, Jaskier still tries to help Radovid by providing him with an address to a safe house in Oxenfurt.
Meanwhile, Jaskier intends to find his family (awe!), meaning Geralt, Ciri, and Yennefer. Luckily, he runs into Yennefer right outside the room. She tells him that Triss took Geralt to Brokilon to heal, and they don’t know where Ciri is after the explosion of Tor Lara, but they assume she’s been brought to Nilfgaard.
Geralt is dying. Vilgefortz might not have killed him outright, but the beating was brutal enough that he cannot heal on his own. He seems prepared to die, believing Ciri to be lost.
Speaking of Ciri, the Tor Lara portal dumps her out in the brutal, hostile Korath Desert, where a massive sandworm almost immediately attacks her. Luckily, a unicorn comes to her aid. This horse is known as Ihuarraquax in the book, though in both cases Ciri affectionately dubs it “Little Horse.”
Not long after meeting the unicorn, Ciri starts hallucinating people like her mother, Pavetta, and her grandmother, Calanthe. She also sees a mysterious woman in a hooded cloak that later reveals herself as Falka. None of Ciri’s familial hallucinations are kind to her. The false versions of Pavetta and Calanthe taunt Ciri, revealing her deepest insecurities about being a burden to Geralt and Yennefer. Falka is the only one who speaks to a different, darker part of Ciri, the one tapping into her great power.
MORE: Everything you need to know about Falka
For those who need a quick refresher, you might remember that Stregobor spoke of Falka in The Witcher season 2. He taught a group of mages that Falka was a power-mad princess who led a ruthless rebellion and slaughtered countless innocents when her father, King Vridank of Redania, rejected her elven heritage.
Ciri’s version of Falka encourages her to emulate her past and take back what is hers through blood if it comes to it. Falka appears to be a manifestation of Ciri’s subconscious, convincing her to harness her magic to become more powerful and ensure her survival.
The majority of this episode follows Ciri as she grapples with these illusions and tries to survive the unrelenting dangers of the Korath Desert. Only with the help of Little Horse does she make it out alive, as the two support one another, and the unicorn later protects Ciri from a monster.
Unfortunately, Little Horse is poisoned in the process, and the only way for Ciri to heal him is to summon forbidden fire magic as a chaos source. She does heal the unicorn, but it’s frightened by Ciri’s power and takes off running. “Falka” tells Ciri to let him go, that she doesn’t need anyone by her side who doesn’t respect her abilities.
Ciri eventually finds a water source near an oasis, but the days in the desert and her usage of magic push her past the point of exhaustion. She passes out, and a group of bounty hunters find her.
In Brokilon, Jaskier finally arrives to see Geralt. The elves hesitate to grant him entry until he sings an old Elven song. We officially meet Milva (Meng’er Zhang), who allows Jaskier to enter. The second he sees Geralt, Jaskier tells him what’s happened and that Ciri appears to be on her way to Nilfgaard.

The Witcher season 3 episode 8 recap: The Cost of Chaos
The Witcher season 3 finale begins at Brokilon again, with Geralt being stubborn as ever. Intent on finding Ciri, he refuses to sit still and let himself heal. Jaskier informs Milva that he’ll help Geralt no matter what.
Elsewhere, the sorceresses of Aretuza visit the scarlet ammonite mines and find the dead girls that were part of Vilgefortz’s experiments. Philippa, Keira, Yennefer, Triss, Margarita, Sabrina, and Tissaia stand together to reverse the damage to give the poor girls a proper burial. It looks to me like the Lodge is forming! Yennefer is intent on getting Ciri back. She tells them they must work together to bury the girls, and then they will fight.
Fringilla and Francesca arrive in Nilfgaard prepared with a new plan to present to Emhyr. They want to rule over Cintra side-by-side to keep things in line until Ciri comes. In the meantime, Fringilla suggests Emhyr belongs in Nilfgaard.
But the catch is that Francesca can only rule over the older elves in Cintra, not the capable Scoia’tael fighters, who Emhyr demands to stay in Nilfgaard as part of his (dispensable) army. Francesca would have to disavow them to take up her position in Cintra. The coup has left the Brotherhood in tatters, but the North is still a formidable foe.
In the aftermath of Thanedd, King Vizimir is pissed at Dijkstra. He’s also concerned they haven’t found Radovid yet. Nilfgaard blindsided them because the messenger, Aplegatt, was killed before he could deliver the message. Geralt also didn’t help matters. Vizimir needs to make an example of someone to re-establish order, so he intends to blame everything on Philippa and execute her.
Dijkstra seems to oblige the king, which brings us back to the argument from earlier in the episode between Philippa and Tissaia. Philippa judges Tissaia for trusting Vilgefortz while blindly defending Dijkstra, who appears to be turning on her. However, Vizimir and Dijkstra don’t realize that Philippa’s handmaid (and lover) Cal was eavesdropping on their conversation.
Geralt is intent on leaving Brokilon to go after Ciri. But he and Jaskier aren’t really the best fighting duo right now, so Milva, a capable archer, decides to travel with them. She gives Geralt the crest that Triss left for him, which formerly belonged to Renfri. This crest represents Geralt’s neutral stance. He has always tried to stay above the fray, but fate consistently forces his hand.
At Aretuza, Yennefer gives Tissaia a much-needed pep talk regarding Vilgefortz and not letting him make her doubt herself. But tragically, during the burial of the girls, Tissaia writes a final letter to Yennefer and then commits suicide. Tissaia blames herself for the coup and everything that happened to the young girls Vilgefortz killed. She cannot reconcile her guilt and believes ending her life is the best thing to do. Yennefer finds Tissaia’s body. Okay, is anyone else crying?
After that, a devastated Yennefer visits Geralt in Brokilon. She heals him with her magic, and they agree that she needs to stay with the sorceresses, for now, to make the world a safer place for Ciri. Geralt pledges to hunt Vilgefortz down, and Emhyr for that matter, to kill them both.
Things get a bit crazy back in Redania. First, Radovid convinces Vizimir to let him go. Radovid wants to be with Jaskier to help him since he doesn’t feel he is needed there. He’s not a spymaster and feels he’s not a good prince.
Philippa arrives to tell Vizimir that the coup was not a failure because they exposed Vilgefortz as a Nilfgaardian traitor, and she has a plan to get them back on top. But Vizimir is still angry because the goal was to put the Brotherhood in his pocket. Now there is no Brotherhood.
On the plus side, at least for Philippa, it turns out that her trust in Dijkstra was not misplaced. He tries to convince her to kill him to make amends with Vizimir by placing the blame on him. Philippa is pleased to know she was right to trust Dijkstra with her life but assures him she’s already set a new plan to protect them both into action. The following scene shows Philippa’s loyal handmaid Cal slitting Vizimir’s throat!
Francesca has reached the end of her rope with everything after losing so much, to the point that she’s ready to accept Emhyr’s deal and give up on Dol Blathanna. She’s willing to sacrifice the Scoia’tael to Emhyr’s army if it saves everyone else. Fringilla is vehemently against this because the goal was to get them out from under Emhyr’s thumb, not back under it.
She tries to convince Francesca not to trust the emperor by revealing he killed her baby and then tried to set Fringilla up for it. By revealing this, Fringilla also reveals that her lie ended up getting so many of Francesca’s loved ones killed. Francesca vows to make Emhyr…and Fringilla, suffer. Nooo, not the end of FrinFran!
Unfortunately for Radovid, Vizimir’s death means he’s now the king, so his plans of joining Jaskier are over. Philippa’s new plan allows her and Dijkstra to take control by guiding their new king and determining Redania’s new direction. They can also potentially blame someone else for Vizimir’s death to help their political strategy.
At Aretuza, Yennefer draws the remaining mages together, and we see the beginnings of the Lodge of Sorceresses forming!
Dara shows up in Brokilon to speak with Jaskier. He tells Geralt that he knows Ciri and that if they see her again, they should tell her he forgives her and is sorry. Afterward, Geralt and Jaskier gather the materials they can to make new witcher elixirs. Then Geralt does some training with the dryads and Milva to ensure he’s back up to snuff. He’s still a little rusty but in far better shape than when he arrived.
In Nilfgaard, Emhyr prepares to greet Princess Cirilla, but it’s not Ciri! It’s the fake Ciri, real name Teryn. Emhyr publicly presents the fake Ciri to the court to announce her return to Cintra. It’ll be interesting to see how this plays out in the show. We also get our first glimpse at Vilgefortz since the explosion. He’s taken his place at the Nilfgaardian court, and he has lost an eye. His face is sporting severe burns from the portal explosion.
Now we finally catch up with the real Ciri. The guys who captured her were just some run-of-the-mill bounty hunters from Nilfgaard. They tie her up and keep her at a tavern where she meets one of the Rats, Kayleigh (Fabian McCallum), who helps her to escape.
The other Rats, including Mistle—who we met earlier this season, arrive soon after and overpower the bounty hunters. Mistle hands Ciri a sword and tells her to fight the lead bounty hunter so they can see how she fares in regular combat against a human. Ciri kills him pretty effortlessly, which is a bit disturbing since it’s the first time she’s taken a human life.
The episode ends with Geralt starting a fight with some Nilfgaardians when he sees them forcing a young girl and her family into some caravans. It goes along with another “Dear Friend” letter narration from Yennefer where she says, “neutrality be damned,” how fitting. Yennefer says she knows Geralt will find Ciri while she will ensure the world is safe for her to return to.
Geralt leaves the lead soldier at the scene alive to send a message to Emhyr that Geralt is coming and will save Ciri, no matter what. Of course, at this point in time, neither Geralt nor Yennefer knows that Ciri is not in Cintra. In the final frame of Henry Cavill’s Geralt, he leaves behind Renfri’s crest, which is fitting, a symbolic gesture to Cavill’s first episode of the show and a way to hone in on Geralt finally accepting he can no longer stay neutral.
The final scene shows Ciri with the Rats after killing the bounty hunter. Ciri tells Mistle that her name is Falka, which certainly seems ominous!

