Derek Thompson (Dwayne Johnson) is a minor league hockey player nicknamed "The Tooth Fairy", for hitting opposing players so hard that he knocks out their teeth.
One night, Derek steals a dollar from his girlfriend Carly's (Ashley Judd) six-year-old daughter Tess (Destiny Whitlock) that had been left for her lost tooth. Later that night, he receives a summons under his pillow. He magically grows wings and is transported to the realm of tooth fairies. There, he meets his case worker, Tracy (Stephen Merchant), and the head fairy, Lily (Julie Andrews). Lily tells Derek that he is a "dream crusher", due to his unsympathetic dealings with children, and Tess in particular. He is then sentenced to serve two weeks as a tooth fairy. He returns to his bed and wakes up, believing that it was a dream.
The next night, Derek slowly realizes it wasn't a dream after he receives a text message from Tracy for his first appointment. He then meets Jerry (Billy Crystal), who gives him the things he needs for duty, including Shrinking Paste (which shrinks the user down to about six inches in height), Invisible Spray (which makes the user invisible), Amnesia Dust (which makes people forget the past few seconds), Cat Away (a small airhorn designed to scare cats away), and Dog Bark Peppermints (that make people bark like a dog).
Derek visits several children and tries his best to become a good tooth fairy, but ends up ultimately causing more harm than good (like when he crashes a party and overuses the Amnesia Dust). Lily states that he is the worst tooth fairy ever and denies him more supplies for the remainder of his sentence. However, he buys some second-hand tooth fairy supplies from another fairy named Ziggy (Seth MacFarlane). When he uses these for his next duty, they malfunction and he is found by the child's mother and is arrested. While behind bars, Tracy tells Derek that because of this, his duty is extended to 3 weeks. Soon after, Carly comes to bail him out.
The next day, Carly and Tess go to a party, leaving him to take care of Carly's teenage son, Randy (Chase Ellison), who wants to grow up to be a rockstar. He dislikes Derek for being similar to his mother's past boyfriends. Later, Derek defends Randy against a bully and Randy grows to like him. Derek also becomes a better tooth fairy by helping Tracy become an official tooth fairy despite not having any wings.
After Derek attempts to score a goal during a hockey game and misses, Derek's coach threatens to bench him the next game. That night, frustrated over what happened at the game, Derek tells Randy that he will never become a rockstar, causing Randy to smash his guitar. With her son upset, Carly ends her relationship with Derek and drives back home. Later, Tracy comes to Derek's house and announces that he is a tooth fairy in training.
The next game, Derek gets back on the ice and sees Tracy. Tracy, in an attempt to teach Derek the importance of dreams, wants Derek to score a goal--and to go get Tess' tooth. Derek scores the goal, gets into his tooth fairy costume, and flies away while Tracy spreads Amnesia Dust on the audience, telling them that they should have good luck trying to find their cars.
At Carly's, Tess sees Derek taking her tooth, but she promises to keep it a secret, and Derek uses his magic wand to grant Randy a new guitar, as an apology. Downstairs, Carly sees him as a tooth fairy, but assumes that he rented a costume for Tess' sake (which makes Carly forgive him his earlier harshness). He then flies Randy to the talent show, but throws Amnesia Dust on him. Derek then heads back to the fairy realm to give Tess' tooth to Lily, and is told that he has been relieved of his fairy duties. Lily throws Amnesia Dust on him, then transports him back to the talent show. There, Randy outperforms everyone and other kids in the talent show form a band to play with him. Derek proposes to Carly, and she accepts.
Dwayne Johnson as Derek Thompson / Tooth Fairy