During the Han Dynasty in ancient China, the legendary Great Wall fails to keep out the notorious Hun army and their ruthless leader, Shan Yu (Miguel Ferrer). The alarm is raised, and the Emperor (Pat Morita) entrusts General Li (James Shigeta) with mobilizing an army to protect China. The wise Emperor reminds the general that "one man can be the difference between victory and defeat."
Fa Mulan (Ming-Na Wen), the teenage daughter of prosperous farmer Fa Zhou (Soon-Tek Oh), nervously prepares for her meeting with the village matchmaker (Miriam Margolyes). Though clever and kindhearted, Mulan is a tomboyish klutz who has little faith in her ability to become a poised and dignified bride. After rushing through her morning chores, she meets her mother, Fa Li (Freda Foh Shen) and grandmother (June Foray) in town and is bathed and dressed before joining the other girls at the matchmaker's house. Mulan's eccentric grandmother insists that Mulan take a live cricket with her for good luck, but the insect escapes from its cage and wreaks havoc at the meeting. Mulan is deemed a "disgrace," and is told she will never bring honor to her family.
Deeply ashamed, Mulan returns home and laments that she is not the daughter her parents deserve. Her father, however, comforts her and metaphorically suggests that the cherry blossom late to bloom will be the most beautiful of all.
The Emperor's smug councilman, Chi Fu (James Hong) arrives at Mulan's village to draft one man from each family for the imperial army. Mulan watches in fear as young men are called forward to receive their orders, knowing that her aging and weak father will be called up as well, being the only male member of the Fa family. As Fa Zhou is summoned by Chi Fu, Mulan pleads for her father to be excused from battle, as he is already a veteran and is afflicted with an injured leg. Fa Zhou reprimands her for her interference, and insists he will go to training camp the next day with the other soldiers. Knowing her father will die if put in combat again, Mulan makes a desperate decision. After her parents are asleep, she cuts her hair short, dons her father's armor, and takes his draft information before riding out to the camp in his place. Fa Zhou and Fa Li awaken and discover with horror that their daughter has left to join the army. They cannot go after her, for impersonating a soldier is a capital offense, and Mulan would be executed if her identity was revealed. Grandmother Fa prays to their ancestors to protect Mulan.
In the small temple on the Fa's property, the statues of the ancestors come to life to deliberate over what to do about Mulan. Mushu the dragon (Eddie Murphy), a former guardian who was demoted to gong-ringer, is sent to awaken the Great Stone Dragon, the most powerful guardian, to bring Mulan home safely. While grumpily trying to wake the statue, Mushu accidentally reduces it to rubble. He is met by Cri-Kee, the "lucky" cricket who had accompanied Mulan to the matchmaker, and the two eventually decide to go after Mulan themselves. Mushu plans to make Mulan excel in the army, thus earning back his place among the ancestors as a guardian.
Shan Yu and the Huns are riding quickly through the wilderness toward the Imperial City. Shan Yu sends a taunting message to the Emperor, daring him to send his finest troops to face the Hun army.
Mulan arrives at the outskirts of the training camp, terrified of her task and dejectedly telling her horse, Khan, that it would take a miracle for her plan to work. As if on cue, Mushu and Cri-Kee appear, with Mushu falsely introducing himself as a trusted guardian of her ancestors and promising to help her become a model soldier. Mulan timidly enters the camp and, following Mushu's instructions on how to interact with men, inadvertently causes a brawl. The ruckus is quelled by Captain Li Shang (B.D. Wong), the son of General Li, who was appointed by his father to train the new troops while Li takes his army to protect the Imperial City. Shang is unimpressed with the sloppy new recruits, especially awkward Mulan, who presents herself as Fa Zhou's little-seen son Ping.
Mushu supports Mulan as she struggles through training, which is especially harrowing because her fellow soldiers are still angry with her for the camp-wide fight on their first day. Shang presents them with a seemingly-impossible task: to climb a huge wooden pole while wearing heavy arm weights to retrieve an arrow from the top. Mulan finally redeems herself by cleverly using the weights to her advantage, scaling the pole and reaching the arrow. The other troops begin to warm up to "Ping," especially grouchy Yao (Harvey Fierstein), gawky Ling (Gedde Watanabe), and enormous but gentle Chien-Po (Jerry Tondo). Mulan has an increasingly difficult time keeping her identity hidden, especially since the men all bathe together in a nearby lake, and Mushu is called upon to provide distractions when things get too dangerous.
Shan Yu plans to move his army through a mountain pass, which is the swiftest route to the Imperial City. Though he determines that General Li and his army is already guarding the pass, Shan Yu confidently leads the Huns to battle the imperial troops.
Chi Fu, the Emperor's council, has remained at training camp to compile a report on the new troops. He remains unimpressed, though the soldiers have successfully completed training, and behaves rudely toward Captain Shang. Mushu, continuing his plan to transform Mulan into a war hero, has Cri-Kee forge a letter from General Li, requesting backup troops at the mountain pass. The ruse works, and Shang marches the troops out of camp the following day. During their trek, Mulan's friends keep their spirits up by dreaming about their ideal woman, but their optimism is short-lived. When they reach the mountain pass, they find General Li and his entire platoon slaughtered. Shang is shocked and grief-stricken at his father's death, but is all the more determined to stop Shan Yu before he reaches the Emperor.
As Mulan, Shang, and the troops progress through the snowy mountains, Mushu accidentally sets off a cannon and gives away their position. The Huns immediately attack, and it is evident that they greatly outnumber the soldiers. As the Hun army charges toward them, Shang instructs Yao to aim their last cannon at Shan Yu. Quick-thinking Mulan swipes the cannon and fires it at the mountainside, causing a huge avalanche that buries the Huns. The soldiers run for safety, with Shang and Mulan narrowly avoiding falling to their deaths over a cliff. Shang thanks Mulan for saving their lives, and gets her medical attention for an injury she sustained from Shan Yu's sword. Mulan can no longer hide her gender, and she is ousted to the rest of the troops. Chi Fu pressures Shang to execute Mulan immediately, but Shang, while angry at Mulan for her deception, refuses to kill her and leaves her in the mountains with her horse and supplies.
Mulan miserably tells Mushu that entering the army was a mistake, and that she was fated to dishonor her family. Mushu finally admits that he was not sent by the ancestors, and that his mission was a selfish one to get his job back. Even Cri-Kee confesses that he is not a truly lucky cricket. They are all about to give up hope when they discover that Shan Yu and many of the Huns had survived the avalanche and are emerging from the snow. Mulan, Mushu, Khan and Cri-Kee rush to the Imperial City to warn of the coming attack.
In the city, Shang and his troops are being hailed as heroes for defeating the Huns. Mulan, presenting herself as a woman again, confronts Shang during their victory parade (though Shang, Ling, Yao, and Chien-Po are noticeably glum) and tells him what she saw in the mountains. Shang dismisses her as a liar, and members of the crowd are deaf to Mulan's words. On the steps of the palace, the Emperor is kidnapped by the Huns, who beat Mulan to the city. Shang, Yao, Ling, and Chien-Po turn to Mulan for a plan. With the latter four disguising themselves as concubines, they infiltrate the palace and attack the Huns guarding the chamber into which Shan Yu had taken the Emperor. Shan Yu threatens to kill the Emperor if he refuses to bow to him and accept him as the new leader of China. The Emperor stoically refuses, but Shang leaps to his aid just in time. As Shang and Shan Yu battle, Chien-Po carries the Emperor to safety. Mulan then attracts Shan Yu's attention by proving herself to be the soldier who started the avalanche, and Shan Yu turns his wrath from Shang to her. Mulan lures Shan Yu to the roof of the palace, before Mushu arms himself with an enormous firework rocket which he launches at Shan Yu. The Hun leader is blasted to smithereens in a colorful display, and Mulan drops to safety on the palace steps.
As the chaos subsides, Chi Fu verbally attacks Mulan for her actions. Shang angrily defends her until the Emperor appears. He explains to Mulan that, despite her fraud, she has saved the entire nation of China. In the ultimate display of respect, the Emperor bows to Mulan, as do the countless people in the attending crowd. He then offers Mulan a job as his council (to the shock of Chi Fu), but Mulan respectfully declines and expresses her wish to return home. The Emperor gives her his medallion and Shan Yu's sword as gifts to honor the Fa family.
Back at the Fa estate, Fa Zhou is overjoyed at the return of his daughter. Though she presents him with the Emperor's crest and the sword of Shan Yu, he casts the priceless gifts aside and embraces Mulan, ensuring her that "the greatest gift and honor is having you for a daughter." Shang arrives soon afterward, returning the helmet that Mulan left behind, and awkwardly but happily accepts Mulan's invitation to stay for dinner.
Mushu, at last, is restored to guardian status in the family temple. Mulan thanks him for his help in her adventurous plan, and the ancestors celebrate that the Fa family is complete again.