In 1964, eight-year-old Allen Bauer (David Kreps) is vacationing with his family near Cape Cod. While taking a sight-seeing tour on a small boat, he sees something below the ocean surface that fascinates him, and jumps into the water even though he cannot swim. Underwater, he encounters a mermaid girl (Shayla Mackarvich) and inexplicably finds himself able to breathe under water. However, Allen is pulled back to the surface, and the two are separated. Since no one else has seen the girl, Allen comes to believe the encounter was a near-death hallucination, but his subsequent relationships with women fail as he subconsciously seeks the connection he felt with the mysterious girl.
Twenty years later, Allen (Tom Hanks) is now co-owner of a wholesale fruit and vegetable business in New York City with his womanizing brother Freddie (John Candy). Depressed after his latest breakup, Allen returns to Cape Cod, where he encounters eccentric scientist Dr. Walter Kornbluth (Eugene Levy). After his motorboat breaks down, Allen falls into the sea and is knocked out when the boat hits his head. He wakes up with a headache on a beach, where he encounters a beautiful naked woman with long blonde hair and the inability to talk (Daryl Hannah). After kissing him, she dives into the sea, where she transforms into a mermaid. Kornbluth, while diving in order to seek proof of strange sea creatures, also encounters the mermaid in her sea form, causing him to become obsessed with finding her again.
The mermaid finds Allen’s wallet in the water and uses it to find him in New York. She comes ashore naked at the Statue of Liberty, where she is arrested for indecent exposure. Using information from Allen’s wallet, the police contact Allen, and the mysterious girl gets released into his care. She learns how to speak English from watching television, and is eager to see a big city for the first time in her life. Unable to say her real name in human language, she selects “Madison” from a Madison Avenue sign. She tells Allen that she will be in New York for “six fun-filled days when the moon is full”, but if she stays longer, she can never go home again (the reason for this is unexplained). Despite Madison’s occasional unusual behavior, she and Allen fall in love. Allen proposes to Madison, but she declines and runs away. After pondering her reason for coming to the city in the first place, Madison returns to Allen and agrees to marry him, with the added promise of telling him the truth about herself at an upcoming dignitary dinner to welcome the President of the United States.
Meanwhile, Kornbluth, realizing that the naked woman at Liberty Island was the mermaid he had encountered, pursues the couple, trying to expose her as a mermaid by splashing her with water. His first attempts are unsuccessful, and Kornbluth ends up with multiple injuries. He finally lies in wait with water tanks at the dignitary dinner, splashing Madison with an attached hose and successfully proving the existence of mermaids. Madison is seized by government agents and taken to a secret lab, headed by Kornbluth’s rival Dr. Ross (Richard B. Shull), for examination. Kornbluth regrets his actions after he learns that the scientists are planning to dissect Madison, as he just wanted to prove that he was not crazy, not get her killed.
Allen is shocked by Madison’s secret, but when he voices his disillusionment to his brother, Freddie lashes out at him, telling his brother how unbelievably happy he was with her. Realizing he still loves Madison, Allen tries to make contact with government officials to let him see Madison, but to no avail. He then confronts a guilt-ridden Kornbluth, who agrees to help him rescue her.
Impersonating Swedish scientists, Freddie, Allen, and Kornbluth enter the lab and smuggle Madison outside. Freddie decides to be arrested in Allen’s place, while Kornbluth unsuccessfully tries to stop United States troops from catching the couple. Despite being under hot pursuit, Allen and Madison make it back to the docks at the New York harbor. Madison tells Allen that he can survive under water as long as he is with her, causing Allen to realize she was the young mermaid he had met so long ago. Madison warns him that if he comes to live in the sea, he cannot return. She jumps in the water when the troops close in on them. When other troops attempt to arrest Allen, he jumps into the water after her, forsaking his life on dry land. The troops dive in the water to go after the couple, but they fight them off to escape. The credits roll as the loving couple swims along the ocean floor toward what appears to be an underwater kingdom.