As an eight-year-old boy, Allen Bauer (David Kreps) is vacationing with his family near Cape Cod. While taking a sight-seeing tour on a small boat, he gazes into the ocean and sees something below the surface that fascinates him, while his older brother Freddie Bauer is walking around the boat fascinated by the women. Allen jumps into the water, even though he cannot swim. He grasps the hands of a girl who is inexplicably under the water with him and an instant connection forms between the two. Allen can now breathe under water as he is in the hands of a mermaid. However, Allen is pulled to the surface by the deck hands and the two are separated, though apparently no one else sees the girl. After the ferry moves off, Allen looks back at the girl, who dives underwater showing her mermaid's tail. Allen comes to believe the encounter was a near-death hallucination, but his bond with the mermaid proves so strong that his subsequent relationships with women fail as he seeks the connection he felt with the mermaid.
Years later, Allen (Tom Hanks) is a co-owner of a wholesale fruit and vegetable business in New York City with his womanizing older 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 Allen is left alone when his motorboat conks out, he again 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, a necklace with a lion medal, and the inability to talk (Daryl Hannah) who, unknown to him, is the mermaid he met as a boy (her tail transforms into legs when it becomes dry). After kissing him, she dives into the sea and leaves Allen to return home. 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 goes to a sunken boat where she finds a map. Using Allen's wallet to find where he is from, she then decides 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 says her true name is a high-pitched chirp sound in the language of mermaids. She's eager to see a big city for the first time in her life, and when Allen suggests a more audible name, 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" and if she stays longer, she can never go home again (the reason for this is unexplained). Despite Madison's occasional unusual behavior - such as locking herself in the bathroom to enjoy a bath in her mermaid state, wildly gobbling up a lobster dish in a posh restaurant, and having a large mermaid fountain brought into his apartment - 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. Many attempts are unsuccessful, and Kornbluth ends up with multiple injuries including a badly broken arm and whiplash. Kornbluth finally lies in wait with water tanks at the dignitary dinner, splashing Madison with an attached hose and successfully proving the existence of mermaids when government officials are surprised to see Madison's tail flapping in public. Madison is seized by government agents and put under government study, headed by Kornbluth's rival Dr. Ross (Richard B. Shull) for examination. However, Kornbluth regrets his actions after he learns that Madison is due to be studied and dissected, as he just wanted to prove that he wasn't crazy.
Allen is shocked by Madison's secret and when he voices out 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 and Allen enter the lab with Kornbluth and smuggle Madison outside. Despite being under hot pursuit by United States troops, Allen and Madison make it back to the docks at the New York harbor and she tells Allen that he can survive under water as long as he is with her. Allen realizes she was the young mermaid he had met so long before. The United States military arrive to recapture her, ignoring Allen's demands to let her be free. Although Madison warns him that if he comes to live in the sea he can't return, he jumps into the water after her and they elude their pursuers. Together they swim along the ocean floor toward what appears to be an underwater kingdom.
Who is actually the naked woman at Liberty Island?
A mermaid