In Los Angeles, California Fletcher Reede (Jim Carrey) is a career-focused lawyer and divorced father. He loves spending time with his young son Max (Justin Cooper); they often play a game where Fletcher makes his hand into "the Claw" and pretends to chase Max with it. But Fletcher has a habit of giving precedence to his job, breaking promises to Max and his ex-wife Audrey (Maura Tierney), and then lying about the reasons. Fletcher's compulsive lying has also built him a reputation as one of the best defense lawyers in the state of California as he is climbing the ladder in the firm for which he works. Ultimately, Fletcher misses his son's 5th birthday party because he is having sex with his boss Miranda (Amanda Donohoe). Max makes a birthday wish that: "I wish that for just one day, Dad can't tell a lie. Immediately, that wish actually and magicaly comes true.
Fletcher, through a series of embarrassing incidents, finds that he is unable to lie, mislead, or even withhold a true answer. He blurts out exactly what he is thinking, like a Torrette's Syndrome twitch, and figures out that he is unable to lie or even withhold a true answer. Some of these instances include: Immediately after Max makes his wish, Fletcher has just had sex with Miranda and when she asks "was it good for you?" "I've had better," he responds.
(The plot is reminiscent of The Twilight Zone episode "The Whole Truth," which involves a used car salesman being forced into uninhibited honesty by a haunted car.)
The next morning, when an attractive girl says everyone is so nice to her, he says "Well, that's because you have big jugs! I mean... your boobs are huge! I mean... I wanna squeeze em'!"
Also when he walks out of the elevator at his office and everyone is plugging their nose, he admits "It was me!". When an obese man asks "What's up," he says, "Your cholesterol! Dead man walkin'!" He also tells a co-worker he doesn't know his name because he's not important enough. When he tries to explain his situation to his secretary Greta (Anne Haney), she doesn't believe him so he sets himself up good. He tells her to ask him something she thinks he would normally lie about. Greta asks him about a raise she wanted a couple months ago. Fletcher had told her if he gave her a raise it would make the other secretaries jealous. She asks if that was true or if he just didn't want to "pony up the dough". Greta immediately quits and threatens to sue him.
These incidents are inconvenient, as he is fighting a divorce case in court which, should he win, could be a huge boost to his career. His client is Samantha Cole (Jennifer Tilly). His main witness is willing to commit perjury to win, but Fletcher discovers that he cannot even ask a question if he knows the answer will be a lie; during the case he even objects to himself when he tries to lie to get the desired information. Meanwhile, Audrey is planning to move to Boston with her new boyfriend Jerry (Cary Elwes), and decides that Max is going with them so that she can protect him from getting hurt by Fletcher. It is here that Fletcher learns about Max's birthday wish and now realizes that he cannot tell a lie for 24 hours which will mean that the magical ability (or curse) will expire on the 24th hour when Max made the wish at his birthday party; at 8:15 pm.
Fletcher tries desperately to delay the case, even beating himself up, but he cannot conceal that he is able to continue, so Judge Marshall Stevens (Jason Bernard) insists that he does. Finally he realizes that his client had lied about her age and therefore had signed her prenuptial agreement while a minor, rendering it invalid. This allows him to win his case truthfully, but the repercussions become a catalyst to his understanding of what he himself is about to lose. Samantha, who only cared about her ex-husband's money, takes custody of her children purely so her ex-husband would be forced to continue paying her for child care and literally snatches the children out of the arms of their good and caring father. Fletcher then has a crisis of conscience and shouts at the judge to reverse the decision, and is taken to jail for contempt of court. Audrey refuses to pay his bail, which is eventually paid by his secretary Greta (Anne Haney), who forgives him for his earlier rude truth-tellings after hearing he "went all noble" in front of their firm's senior partner.
Now recognizing his son Max as his highest priority, Fletcher struggles to keep him. He hurries to the airport, but Audrey and Max's plane has already left the terminal. Desperate, he hijacks a mobile stairway and pursues the plane onto the runway. The plane finally stops, but Fletcher is injured. On his way to the hospital, he vows to his son to spend more time with him and never hurt him again. Even though the 24 hours of truth are up, Max knows he means it, and Audrey decides not to move to Boston with Jerry after all.
One year later, Fletcher and Audrey are celebrating Max's birthday. The lights go off when Max blows out his birthday candles. When they go back on, Fletcher and Audrey are kissing. Fletcher asks Max if he wished for his mother and his dad to get back together and Max replies "No, I wished for roller blades!" The family seemingly returns to normal as Fletcher chases Audrey and Max around the house with "the Claw".
Over the end credits, a montage of bloopers and outtakes from the movie is shown.