Samantha Kingston wakes on Valentine's Day. She is picked up by her friends, Lindsey, Ally and Elody, who joke with her about losing her virginity to her boyfriend Rob that night. During class, Sam is handed a bunch of roses from her boyfriend with a blasé note. Included in the bunch is a pale colored rose with a note suggesting it is from another boy named Kent. He later invites her to his party. During lunch the girls make fun of Juliet, an outsider girl that they view as a "psycho". At the party, Juliet shows up, seemingly uninvited. Lindsay confronts her and the two fight, with Juliet leaving in tears. As they are driving back from the party, the car hits something and crashes.
Sam wakes in her room on Valentine's Day again. Thinking the previous day was just a dream, Sam continues on with her day but finds that the same events occur, and they again crash leaving the party.
Sam wakes up on the same day again. Realizing she is in a time-loop, she convinces the group to have a sleep over instead of going to the party, trying to avoid the crash. They avoid the crash, but find out later in the night that Juliet has killed herself.
Despite avoiding the crash, Sam wakes up on the same day again. Seemingly unable to break the loop, she angrily reacts to everyone around her, insulting her friends and family. At the party, she has sex with Rob, not enjoying the experience. She runs into Kent's room and breaks down in tears. Kent sees and comforts her, letting her stay in his room.
The next day, she skips school and spends time with her sister. At the party, Sam and Kent share a kiss. She hears the fight between Lindsey and Juliet from the hall and chases after her through the woods. Sam tries to stop Juliet, but she jumps in front of Lindsey's car, horrifying Sam.
Sam wakes up again with a sense of calm and understanding, knowing what must she must do to break the loop. She goes about her day much kinder and considerate than she had on the first. She also breaks up with Rob and tells Kent that she has a "secret" to tell him. At the party, she tells Kent she loves him. She again attempts to save Juliet, but when Juliet attempts to run into traffic, Sam pushes her out of the way, killing herself and breaking the loop. As she dies, a montage of good memories plays in her head.