Nina Sayers (Natalie Portman) är en ung ballerina som har bestämt sig för att bli den nya balettstjärnan. En balettensemble i New York ämnar sätta upp sin version av Svansjön, och Nina aspirerar att få dubbelrollen som Odette/Odile. Odette är den oskuldsfulla vita svanen medan Odile är den förföriska svarta svanen. Ninas personlighet passar bäst för rollen som Odette, medan konkurrenten Lily (Mila Kunis) gör sig bäst som Odile. När de båda tävlar om dubbelrollen, upptäcker Nina en mörk sida inom sig själv.