NOTE: This spoiler was submitted by Jeremy

The film opens in the woods. 16-year-old Vivian (Hadley Robinson) is running until she finds a spot alone and appears to scream inaudibly. She wakes up and finds her mom Lisa (Amy Poehler) in the kitchen, wanting to take a first-day-of-school picture with Vivian as was their tradition, but Vivian feels too old for it. She pretends to take a selfie for Lisa, but really just took a picture of Lisa.

Vivian goes to Rockport High School and joins her best friend Claudia (Lauren Tsai), who is fixated on an impending list of superlatives that the jocks come up with for the girls at school. They go to class taught by Mr. Davies (Ike Barinholtz), and they sit for the morning announcements. During this time, Vivian notices a classmate, Seth (Nico Haraga), who had a growth spurt over the summer and has gotten more attractive (he used to be called “Seth The Shrimp”). After the announcements, Mr. Davies introduces a new student, Lucy (Alycia Pascual-Peña). The class begins a discussion of “The Great Gatsby”, which Lucy criticizes as another tale of a rich white guy bemoaning that he can’t have one woman. Star athlete Mitchell (Patrick Schwarzenegger) chimes in, interrupting Lucy’s opinion and defending “Gatsby” as a classic.

Vivian goes to the supermarket with Lisa, where they run into Lisa’s coworker John (Clark Gregg), who appears to be trying to flirt with Lisa.

At school, Claudia notices Vivian taking an interest in Seth. Later, Vivian witnesses as Mitchell makes a phony attempt to apologize to Lucy, but every time she responds to his condescension, he gets annoyed and ends up taking the soda she was trying to buy, and he spits in it. Lucy reports Mitchell to Principal Shelly (Marcia Gay Harden), who doesn’t want to penalize Mitchell and tries to avoid getting involved in the dilemma. Vivian follows Lucy and tells her to ignore Mitchell, but she replies that she shouldn’t have to avoid him and that he can just not be a dick.

At home, Vivian is struggling to find a subject for her college essay. She talks to Lisa about her beliefs and passions at her age, and Lisa explains that she was a major feminist who fought for other women. After referencing a quote from a Bikini Kill song, Vivian listens to the band and watches videos from frontwoman Kathleen Hanna about her drive to represent women. Vivian goes through Lisa’s stuff and finds old ‘zines and gets inspired.

The school holds a pep rally, during which the jocks’ list is sent to everyone’s phone. Many of the girls are embarrassed by their superlatives – a girl named Kaitlynn (Sabrina Haskett) is voted “Best Rack” and zips up her hoodie in humiliation; an athlete named Kiera (Sydney Park) is named “Best Ass”, with one jock even slapping it to her horror; and head cheerleader Emma (Josephine Langford) is called “Most Bangable”. Vivian receives “Most Obedient”, which Lucy gets the new category: “Biggest Cunt”, which was clearly made by Mitchell. Lucy once again tries to report this to Shelly, only to be ignored again. Infuriated, Vivian goes home that night and creates a ‘zine of her own, “Moxie”, and she runs to make 50 copies.

Vivian puts Moxie in the girls bathroom, then hides in the stall as some girls come in and find them. They are taken by the ‘zine’s feminist theme, as well as the open criticism of Mitchell and his fellow jerk jock buddy Jason (Joshua Walker). Mitchell and Jason are not amused and think Lucy started it, so they take her copy of Moxie and crumple it up, but Vivian gives her her own copy. At lunch, Lucy joins her and Claudia.

The next day, the girls, per Vivian’s suggestion in Moxie, draw hearts and stars on their hands in support of each other. Vivian is impressed by the amount of girls, and even Seth, following the cause. During class, Shelly comes in to tell Kaitlynn to cover herself up since she is wearing a tank top. Kaitlynn points out that the girl next to her is wearing a tank top too, but Shelly is clearly more concerned because Kaitlynn has bigger breasts, and she sends her home when Kaitlynn says she has nothing to wear.

Vivian and Claudia go to a party where most of their other classmates are attending. They are found by Kiera’s best friend Amaya (Anjelika Washington) and taken into a room with Kaitlynn, Kiera, and another girl, CJ (Josie Totah). Kiera asks which one of them is behind Moxie, which she and Amaya are happy for since it is bringing up major issues among the girls. Apart from Kaitlynn’s wardrobe criticism, CJ, a trans girl, is being deadnamed by other students, and even some teachers, as well as not being able to audition for Audrey in “Little Shop of Horrors”. They declare it as their first Moxie meeting, but Claudia is not nearly as onboard as everyone else due to fearing she may get in trouble for getting involved.

Vivian makes another issue of Moxie but bumps into Seth and drops them, revealing her secret to him. He promises not to tell anyone and even offers to put some in the boys bathroom since he knows many guys there could use a wake-up call. Vivian spends more time with Lucy when they come up with an idea for the girls to all wear tank tops to protest the ridiculous dress code. When all the girls go with tank tops, Claudia’s mother stops her from going out like that and she has to change.

At the homecoming game, Shelly announces Mitchell is up for an athlete award and scholarship since he is running unopposed. The girls then nominate Kiera since she is a more capable and deserving athlete. During the game, Vivian and Claudia have an argument because Claudia doesn’t feel part of Vivian’s new group of friends, as well as her own reluctance to support Moxie. After Claudia leaves, Vivian is found by Seth, who takes her away on a date to a funeral home for fun. They lay in a casket and talk for a while before he drives her home, and they have their first kiss. Lisa noticed from inside and only tells Vivian to be smart about a relationship.

The girls hold a Moxie meeting in the locker room for Kiera’s campaign. Emma overhears them and appears interested but then steps back when asked to join. They all soon start promoting Kiera and hang up posters in the halls. Claudia then steps in when she tells the girls that Shelly tried to get the posters down, but she convinced her not to by registering Moxie as an official club. She even helps them hold a party for the campaign at a retirement home that she volunteers at. The girls rock out, and Lucy and Amaya kiss.

During the morning announcements, Mitchell steps in to interrupt and claim that Moxie is slandering him, and that he feels attacked, which is a play for his victory since he is threatened by Kiera’s chances of winning.

Seth goes to pick up Vivian for a date but meets Lisa first, who brings up an embarrassing story of him wetting himself as a kid. Seth takes Vivian to a private spot where they start to hook up and prepare to have sex, but Vivian chooses to wait, and Seth respects her choice.

At the school’s next game, the results of the election are announced, and, to almost everyone’s disappointment, Mitchell wins. Vivian walks home depressed, drinking a bottle of champagne along the way. She comes home to find Lisa with John, and is annoyed that she kept this relationship a secret from her. Vivian then throws up.

The girls come up with stickers to place around the school in response to Mitchell’s win that say “You’re an asshole!” Shelly brings Vivian to her office to ask her who is behind Moxie, since Shelly is personally named and called out for not helping the female students. Shelly later presses Claudia about it after her car gets covered in the stickers, and she takes the fall for the group. When Vivian hears about it from Lucy, she snaps at her and tells Lucy that she only just got there and doesn’t understand the situation between her and Claudia. Vivian goes to Claudia’s house later but is not allowed through the front door by her mom. Vivian climbs up to Claudia’s bedroom window and finds out that Claudia already knew Vivian started Moxie. She tells Vivian that she made her feel bad for her previous lack of involvement, and calls her a coward for not owning up to her identity as Moxie.

Vivian invites Seth over that night for dinner since Lisa invited John. She starts to make a scene over John talking to Seth about physics, Lisa making a salad when she usually eats junk food, and John having an American flag car sticker. After she storms off to her room, Lisa goes to talk to her, and Vivian vents about her problems to her, blaming Lisa for inspiring her with her feminist talk.

Vivian is left alone at school without Claudia or Lucy, and Seth is upset with her for blowing up at him for no reason. When she goes into the bathroom, Vivian finds a note from a girl who says she was raped the previous year, asking Moxie for help. That night, Vivian sneaks off to the school and spray-paints “RAPEPORT” on the front steps of the house, followed by her smashing a trophy from Shelly’s office. Vivian then gets the Moxie Instagram page to send a message for all students in support of the girl who wrote the note to walk out after the morning announcements the next day.

Mr. Davies reads an announcement from Shelly condemning whatever Moxie is planning to do, but he shows that he supports their cause by revealing stars and hearts on his hands. The majority of girls, and some boys, walk out onto the front of the school. Vivian then stands up in front of everyone and gives a big speech, revealing herself to have started Moxie. Other girls speak up and show support before Emma comes forward and says she wrote the note in the girls bathroom. She stands up and reveals to everyone that Mitchell raped her the previous year when they were dating, and him calling her “Most Bangable” left her mortified. All the students are horrified and lend their support, and Shelly overhears everything. She goes to Mr. Davies’ classroom to give Mitchell his comeuppance. Lisa and Claudia then arrive at the school to show support after seeing Vivian’s speech, and the best friends reconcile while Lisa expresses pride in her daughter. Seth also appears to have forgiven Vivian.

The girls (and Seth) throw a party in celebration for Moxie.

Brought to you by

At Rockport High School, the jocks make a list of superlatives for the girls, giving them sexist and perverse opinions and making the girls self-conscious. After a new student, Lucy, is called a foul word by star jock Mitchell, another girl, Vivian, becomes inspired by her feminist mother Lisa and starts "Moxie", a 'zine aimed at calling out the unfair treatment of girls at the school, and empowering them to come forward with their issues.

Vivian befriends Lucy, as well as a group of other girls who have been put down, but her best friend Claudia is reluctant to get behind the movement and it causes a rift between them. Vivian also starts a relationship with a classmate named Seth, who knows she started Moxie and fully supports her.

After Mitchell wins an athlete award over the girls' candidate, Kiera, the Moxie girls respond by putting crude stickers all over the school. Principal Shelly, who was called out by Moxie for not supporting the girls, attempts to shut down the group. Claudia, who eventually joined the group, takes the fall for it. Vivian then hits a low point when Claudia calls her out for not coming forward (she knew Vivian started Moxie), while also hitting a bump with Seth and Lisa after she yells at them and Lisa's boyfriend John during dinner.

Vivian finds a note from an anonymous girl who claimed to have been raped the previous year. Vivian gets Moxie supporters to stage a walk-out in support of the girl. The majority of students do so, and Vivian reveals to have started Moxie. Head cheerleader Emma comes forward as the girl who wrote the note, stating that Mitchell, her ex, was her rapist. Shelly overhears and prepares to punish Mitchell at last. Vivian reconciles with her mom, Claudia, and Seth, and Moxie gains more followers