Ethan Wate (Alden Ehrenreich) begins the film with a narration about a girl he never met, and doesn’t exist, but that he dreams about every night. He has a sketch pad of drawings he recreates of her from his dreams.
He lives in Gatlin, South Carolina, a small town that is too far from Charleston for a Starbucks. He likes reading banned books for fun and keeps a map in his home where he pins the covers to where the books are from. We see him running through the town in the middle of the night, seeing his mother’s gravestone.
It’s Ethan’s first day of junior year of high school. He talks to the family friend Amma (Viola Davis) who helps to take care of him. He goes to pick up his best friend Link (Thomas Mann) for school who is stuck in the house praying with his mother who is “officially bat shit crazy.” In the car, they start talking about a new girl at school.
At school, a girl named Savannah starts talking to him. The new girl, Lena Duchannes (Alice Englert), enters the room. Everyone is mesmerized by her with the popular girls making comments right in front of her (about her reclusive uncle Macon Ravenwood (Jeremy Irons) and her family being devil worshippers), but she makes good comebacks. Ethan notices that she has a tattoo on her hand. Their teacher tells them that they will all have to be in a Civil War reenactment of the Battle of Honeyhill over Christmas break (their town is home to a famous battle). As Ethan drives home in the rain, he almost runs over Lena who is pulled over. He gives her a ride home and the two talk about poetry and losing their mothers.
Once Ethan gets home, he starts reading the book that Lena was reading in the car. He finds a locket in his things and decides to give it to Lena. That night, the kids and townsfolk go to a field to see something. The popular girls, Savannah (Tiffany Boone) and her friend Emily (Zoey Deutch), start spreading rumors about Lena. Ethan tells her to shut up, and the girls leave pissed off.
The next day, their English teacher starts talking about their summer reading book, "To Kill a Mockingbird," which is a banned book. Savannah raises her hand and says that her mother said she shouldn’t read a book that is banned from church, and she shouldn’t be in the same class as a Ravenwood. Savannah and Emily start praying in class and Lena tenses up, shattering the windows in the classroom causing the two girls to bleed.
After school, Ethan goes to Lena’s house to give her the locket he found. He finds her sitting in the yard by herself, and she tells him to go away, but he keeps saying no. He sits down and looks at her tattoo again- it looks like the number 79. He tells her that the kids at school are just a bunch of fools. They start to talk and walk back to her house. He gives her the locket and her uncle comes out. She tells him that Ethan is leaving, but he introduces himself. Uncle Macon invites him inside. The house is huge. Ethan compliments the piano at the house and Macon invites him to play. Instead, Macon plays, and they talk about his mother passing away, the battle, etc. Macon asks him about his future and says “What if I had a magic wand that would allow you to see your whole future?” The only thing Ethan is sure of is that he wants to go to college. He starts to make jokes about what he will do each year (have an affair at this year, etc.) of his life, and as he talks Macon closes his eyes it seems like it wasn’t a joke at all but instead Macon was taking over his mind and he was speaking the truth of what his future will be. Ethan, feeling sick, leaves. Macon has words with Lena about him not wanting her to see Ethan again and she cries and runs away, wanting to just “pretend until her birthday.”
The next day, Lena sees Ethan walking outside her house from her bedroom. She goes after him and tells him what happened wasn’t his fault. Ethan tells her that he thinks he’s been dreaming about her for months she is the girl he’s been dreaming of. He opens the locket, which has a date in it, which just so happens to be her birthday. She will be 16. He puts the locket in her hand and suddenly there are visions and a shared flashback of the Civil War. All of a sudden Ethan wakes up in his bed. He runs downstairs calling for his dad but instead just sees Amma screaming/asking how he got there. Amma sees the locket and wants to know where he got it from.
Ethan goes back to Lena’s house. As he goes through the gate, he sees a car at the end of a path and turns away. Now he sees another car and a man walking toward him. He runs away, and the weather starts to change. He is being covered with darkness. Lena, in her room, does something, and suddenly Ethan is okay. He falls to the ground, and Lena is standing before him. He lies on her bed, and she starts to explain that her family is “different” and has powers. They are witches but prefer the term “casters.” He tells her that it’s evil, but she says there are evil casters just like there are evil mortals. She makes the room dark and poetry lights up the walls. She’s upset with herself because she’s not supposed to show mortals any of this. He likes her regardless, and they start kissing. He escapes through the window. Amma meanwhile means with Macon., conspiring on how to keep the two of them apart. She is also a “caster” it seems.
Another day, a new woman is speeding in to town, however, she doesn’t slow down for the cop, but instead, speeds away and causes the cop to crash. At the same time, Lena talks to Ethan about what will happen when she turns 16. As a female caster, she will either turn evil or good. With females, their true nature chooses for them, and she is afraid. The tattoo on her hand is how many days she has left, which right now is 5. Ethan tells her not to worry, and she will be fine.
While this is happening, there is a meeting going on at the church petitioning to have Lena removed from the school. Macon shows up defending Lena and himself, saying that Lena had nothing to do with the weather changes they are claiming. He starts to bribe them with money and donations too. As Macon starts to leave, we see that Lena’s mother Sarafine has possessed the body of a local woman Mrs. Lincoln (Emma Thompson). She can’t wait for Lena’s birthday and thinks she will be more powerful than she is. Macon is confident she won’t turn dark, but Sarafine happily says she has no choice.
The woman from the car earlier, Ridley (Emmy Rossum) (Lena’s provocative cousin/childhood friend) goes right to the high school, asks which one is Ethan, and then kisses him before driving to the house with him. They go inside, and Macon yells at Ethan, but he is possessed at the moment. They all (Ethan, Lena, Ridley, and Macon) go to the dining room, along with Ridley’s brother Larkin (Kyle Gallner), their Aunt Del (Margo Martindale), and their grandmother (Eileen Atkins). Ridley talks about the curse that has already started to claim her to the darkness, but Lena doesn’t really know about that. Ridley and Lena telepathically fight causing the table to turn. They scream at one another, arguing, until Ridley is turned into a black cloud and thrown into the door. The table finally stops turning, and Ethan passes out on the floor, finally unpossessed. Lena goes to get him and asks her grandmother about the curse, but she just says it’s a story. Ethan wakes up later, and Lena tells him the story of Ridley. When she turned 16, she could feel herself turning dark. Lena followed her outside to where she was looking at the full moon. She (and we through a flashback) saw her turn evil and instantly kill a boy but putting him on train tracks.
Ethan and Lena go to see “Finale Destination 6.” At the theater, they run into Savannah and Emily. Larkin also goes to the movies but by himself, and starts to become seduced and possessed by Ridley. Meanwhile, Lena and Ethan hold on to the locket again and the movie screen turns into their flashback.
Their ancestors, caster Genevieve Duchannes (Rachel Brosnahan) and mortal Confederate soldier Ethan Carter were in love. Ethan was shot in battle, and Genevieve revived him using a forbidden spell that caused her to go dark and curse the women of the Duchannes family line. He was holding the locket at the time.
They go home and consult with Amma. She looks at the locket, and she and Macon explain the story and curse to them. Lena wants to know why Macon lied to her about her mother being dead. He tells her that Sarafine is the darkest witch of them all and has no love for her. He tells her that loving Ethan will put her in danger, but Lena fights back saying that he hates all mortals and doesn’t love anyone anyway. Ethan wants to find a way to break the curse, but Macon tells him that he has to get out of her life and tells Lena to say goodbye. Later at his home, Mrs. Lincoln, aka Sarafine, shows up with some brownies. She invites herself in to talk to him. He tells her no, and she starts to get mad, revealing her true identity.
Ethan gets away to go to Lena’s house. He starts yelling at her saying he doesn’t care what they do to him that he’s still there for her. The adults in the house realize that he has to be the one to protect her. They go to the library where Amma works, and she reveals to them that she is, in fact, a seer/keeper of a caster library beneath the town library. The most ancient of these books, the Book of Moons, reveals the secret to undoing the curse: one of Lena's loved ones has to die. She tells him that she’s cutting him loose. He goes after her, yelling at her, and she makes it rain on him. They make up and make out, leaving the welcome to Gaitlin sign ablaze.
Back at the library Ethan wants to look at the book himself, but he can’t unless he is a caster, so Amma yells at him. Ethan shows Macon his drawings from his dreams how did this all happen? Lena tells Ethan that she wants to handle everything on her own. They go for a walk later on. He asks her to a dance, they have a romantic moment, and she makes it snow.
Later on, Ethan talks to Amma. Amma suggests that he invite Lena over for dinner, and he has no idea why since she’s a weird girl and he hardly knows her. We realize now that unwilling to take Ethan's life, Lena instead erased his memories of their time together.
Ridley, still seducing Link, gives him a bullet to use in the upcoming Battle of Honeyhill reenactment, which is taking place on Lena’s birthday. Lena’s grandmother brings Lena a nice dress to wear telling Lena that when the curse is being broken, she’ll feel it.
Link and Ethan agree to fake kill one another during the reenactment to get out of it, however, Link has the real bullet. The moment he is shot, Lena feels the curse being broken and runs after Ethan. Link didn’t know what he was doing. She holds him in his arms, and Ridley and Sarafine show up, telling her to just give in and be dark with them. The weather changes and becomes a horrible thunder and lightning storm, with crazy wind and tornados. Ethan turns into Macon. Macon had disguised himself so that Ethan could live. He tells her “Claim yourself” before he dies. Lena makes the moon disappear, stopping it from taking her to the dark side. She lets a scared Ridley run away and denies her mother’s urges for her to be dark, pulling her from Mrs. Lincoln’s body.
A few months later, Ethan stops by the library. He’s going on a college road trip with Link. He sees Lena there and talks to her for a minute. He tells her that he wishes he got to know her better. She gives him her book of poetry from earlier. He and Link set off, and Amma tries to make Lena feel better about him not remembering her. Ethan starts to read the book in the car and as they pass by the town sign, Ethan suddenly remembers her. He makes Link pull over, he gets out of the car, and screams “LENA!” From across town, in the library, she hears him.
You can send in your spoiler to other movies by going here.