Seventeen-year-old Kyle (Alex Pettyfer) is the spoiled, shallow and incredibly popular prince of his high school kingdom. Kyle foolishly chooses Kendra (Mary-Kate Olsen), a witch masquerading as a high school student, as his latest target for humiliation. In order to teach Kyle a lesson, Kendra transforms him into someone as unattractive on the outside as he is on the inside. Now he has one year to find someone to love him, or he will remain Beastly forever. A quiet classmate he never noticed named Lindy (Vanessa Hudgens) may be his best chance to prove that love is never ugly.