Olive Penderghast (Emma Stone) lies to her best friend Rhiannon Abernathy (Aly Michalka) about going on a date in order to get out of camping with Rhiannon's hippie parents. Instead, she hangs around the house all weekend listening to Natasha Bedingfield's "Pocketful of Sunshine". The following Monday, pressed by Rhiannon, Olive lies about losing her virginity to a college guy. Marianne Bryant (Amanda Bynes), a strictly religious girl at their school, overhears her telling the lie and soon it spreads like wildfire. The school's conservative church group run by Marianne decides Olive will be their next project. Olive confides the truth to her friend Brandon (Dan Byrd), and he explains how others bully him because he is gay. Brandon later asks Olive to pretend to sleep with him so that he will be accepted by everyone.
Brandon convinces Olive and they pretend to have sex at a party. After having a fight with Rhiannon over Olive's new identity as a "dirty skank", Olive decides to counteract the harassment by embracing her new image as the school tramp. She begins to wear more provocative clothing and stitches a red "A" to everything she wears. Boys who usually have had no luck with girls in the past beg Olive to say they have had sex with her in order to increase their own popularity, in exchange for money, in turn increasing her reputation. Things get worse when Micah (Cam Gigandet), Marianne's 20-year-old boyfriend, contracts chlamydia from sleeping with Mrs. Griffith (Lisa Kudrow), the school guidance counsellor, and blames it all on Olive. Olive agrees to lie to cover up the affair so that the marriage of her favorite teacher, Mr. Griffith (Thomas Haden Church), would be spared.
Marianne's religious clique, which now includes Rhiannon, begins harassing Olive in order to get her to leave school. After an ill-fated date with Anson (Jake Sandvig), a boy who wants to pay her to actually sleep with him and not just pretend she did, Olive reconnects with Todd (Penn Badgley), her old crush, who is also the school's mascot. Todd then tells her that he does not believe the rumors because he remembers when she lied for him when he was not ready for his first kiss years ago. Olive then begins to ask everyone she lied for to help her out by telling the truth, but Brandon and Micah have abruptly left town and everyone else is enjoying their newfound popularity and do not want the truth to get out. Mrs. Griffith also refuses to tell the truth and when Olive threatens to expose her, Mrs. Griffith rebuffs her, saying no one would believe her.
Olive, out of spite, then immediately tells Mr. Griffith, who believes her and separates from Mrs. Griffith. After a friendly talk with her eccentric, open-minded mother Rosemary (Patricia Clarkson), Olive comes up with a plan to get everything finally out in the open. She then does a song and dance number at a school pep rally to get people's attention to watch her via web cam, where she confesses what she has done (the web cam is the framing device of the film). The various boys whose reputations Olive helped improve are also shown watching. Later, Olive texts Rhiannon apologizing for lying to her. When she is finishing up her web cast, Todd comes by riding a lawnmower and tells her to come outside. She goes outside to meet him, they kiss and the two are shown riding off on the lawnmower.