Nina Sayers is a 28-year-old who lives with her overprotective mother, Erica, and dances with a New York City ballet company. The company is opening the season with Tchaikovsky's Swan Lake. After forcing prima ballerina Beth MacIntyre into retirement, artistic director Thomas Leroy announces he is looking for a new dancer for the dual roles of the innocent and fragile White Swan Odette and the sensual Black Swan Odile. Nina auditions for the roles and gives a flawless performance as Odette, but fails to embody Odile.
The following day, Nina asks Thomas to reconsider her role. When he forcibly kisses her, she bites him and runs out of his office. Later that day, Nina sees the cast list and discovers to her surprise she has received the lead roles. At a gala celebrating the new season, an intoxicated Beth accuses her of sleeping with Thomas for a promotion. The following day, Nina hears Beth was hit by a car. Thomas believes Beth was attempting to commit suicide.
During rehearsals, Thomas tells Nina to observe a newcomer, Lily, who has a physical resemblance to Nina but also an uninhibited quality Nina lacks. Nina hallucinates a doppelgänger more and more frequently and finds scratch marks on her own back.
One night, despite Erica's objection, Nina accepts Lily's invitation to go out for drinks. Lily offers Nina an ecstasy capsule, saying it would help her relax. Nina turns it down, but Lily spikes her drink with the powder. Under its influence, Nina flirts with men at the bar and Lily as well. The two dance at a nightclub and return to Nina's apartment late. After arguing with her mother, Nina barricades herself in her room and has sex with Lily. She wakes up the next morning alone, still locked in her room from inside, and late for the dress rehearsal.
Upon arriving at Lincoln Center, Nina sees Lily dancing as Odile and confronts her about their night together. Lily denies going home with Nina and taunts Nina for having a sexual fantasy about her. Nina is unsure if the sexual encounter was a hallucination. After learning that Thomas has made Lily her alternate, Nina's hallucinations grow stronger and her injuries increase. On opening night, her mother tries to prevent her from leaving, and Nina fights her. After jeering that her mother was never promoted above the corps, she leaves. As Nina is late, Lily is already prepped to replace her. Nina confronts Thomas, who is so impressed by her newfound confidence that he allows her to take back her roles.
Toward the end of the second act, Nina is distracted by a hallucination and loses her stability. The dancer playing the prince drops her on stage, infuriating Thomas. She returns to her dressing room and finds Lily preparing to be Odile. As they argue, Lily transforms into Nina. The two fight, breaking a mirror. Nina stabs her doppelgänger with a large piece of glass from the mirror, killing her. The body reverts to Lily. Nina hides the body in the bathroom and returns to the stage, where she loses herself and dances flawlessly as Odile. Amidst a standing ovation from the audience, Nina surprises Thomas with a passionate kiss and returns to her dressing room.
As Nina puts the Odette costume and makeup back on, there is a knock at her door. She opens it to see Lily alive and well. Lily apologizes and congratulates her, then leaves. Confused, Nina sees the mirror is broken, but the towel she used to mop up blood is clean. She looks down and pulls a shard of glass from her abdomen, realizing she stabbed herself, not Lily.
Nina dances the last act, which ends with Odette throwing herself off a cliff and Nina landing on a mattress behind the scenes. The theater erupts in applause while Thomas, Lily, and the others gather to congratulate Nina, who remains lying on the mattress. Thomas sees the blood spreading at her waist and shouts for help. He asks Nina what happened to her. Nina calmly replies that her performance was perfect as the screen fades to white.