Балетна трупа Лінкольн-центру в Нью-Йорку планує нову постановку балету «Лебедине озеро» Прима-балерина Бет Макінтайр (Вайнона Райдер) змушена покинути сцену через свій поважний для балерини віку. На головну роль претендують кілька молодих балерин, серед яких виявляється Ніна Сейерс (Наталі Портман) - дочка не відбулася балерини, яка присвятила все життя турботі про дочку.
Французький хореограф Тома ЛеруаВ фільмі його прізвище вимовляють на англійський манер - Лерой. в той час як ім'я звучить правильно - Тома. (Венсан Кассель) не впевнений в тому, що Ніна - ідеальний кандидат на роль. Він вважає, що вона прекрасна в ролі білого лебедя, але занадто скованна і недостатньо пристрасна в ролі Чорного перекладі використовується жіночий рід - біла лебідь, чорна лебідь. Під час розмови про роль Тома намагається поцілувати Ніну, але та кусає його і тікає. Тома бачить в Ніні внутрішній потенціал і дає їй головну роль. Ще перед отриманням ролі Ніна краде з гримерки Бет косметику, сподіваючись, що вона послужить їй як талісман.
Незабаром після отримання ролі Ніну починають мучити дивні зловісні галюцинації: оживають картини її матері, дивно поводяться відображення в дзеркалі, у неї починається кровотеча до того, як вона дійсно поранитися, на спині з'являється дивна висипка з кровоточить подряпинами. Мати Ніни (Барбара Херші) вважає, що до неї повернулася стара «мерзенна» звичка дряпати себе ночами. У той же час з Ніною нав'язливо намагається зав'язати дружбу інша молода балерина - Лілі (Міла Куніс).