It's the late 1960s at Parris Island, South Carolina, the U.S. Marine Corps Training Camp, where a group of young Marine recruits, after having their heads shaved, are being prepped for basic training by the brutal Gunnery Sergeant Hartman (R. Lee Ermey
), whose orders are to "weed out all non-hackers". Hartman gives each of the Marines nicknames; one pragmatic recruit who talks behind his back becomes "Joker" (Matthew Modine
); a Texas recruit becomes "Cowboy" (Arliss Howard
). And finally Leonard Lawrence, a 6-foot 3-inch, 280 pound, slow-witted recruit with low intelligence and ambition becomes "Gomer Pyle" (Vincent D'Onofrio
), and the focus of Hartman's brutality, because the overweight boy cannot keep up with the other more physically fit recruits in the grueling obstacle courses.
One morning during muster, Hartman asks Joker if he believes in the Virgin Mary. Joker responds that he doesn't, angering the Catholic drill instructor. The clearly religious Hartman continues to ask Joker if he believes in the Virgin Mary, and Joker continues to resist, confirming that he doesn't because he's an atheist. Despite Hartman's slapping him in the face, Joker stubbornly refuses to change his answer, stating that he belives that Hartman will only "beat him harder if he reverses himself." Hartman immediately promotes Joker to squad leader for having the courage to stand up to his drill instructor. However, Hartman also gives Joker the difficult job of being Pyle's personal instructor. Off on the sidelines over the next few days, Joker helps Pyle through the obstacle courses, shows him how to operate and clean a rifle, and how to make his bed. But all of this effort is later proven to be a waste.
One evening during a routine inspection, Hartman, noticing that Pyle's foot locker is unlocked, searches it and finds a jelly doughnut; food is strictly forbidden in the barracks (and Pyle is not permitted to eat donuts because he's overweight). Enraged, Hartman decides that from then on instead of punishing Pyle, he'll punish all the other recruits in the platoon. A few nights later, the angry recruits attack Pyle with soap bars wrapped in towels while Cowboy gags him and a few others hold him down on his bed. At first, Joker is reluctant to attack his friend, but after Cowboy persuades him, Joker hits Pyle longer and harder than most of the others. In his bunk, Joker covers his ears, ashamed at himself for his actions, while Pyle howls in pain.
After the traumatic experience, Pyle slowly begins to go insane but also shapes up and becomes the fastest and quickest rifleman of the entire platoon, impressing Hartman. When Joker sees Pyle talking to his rifle and staring off into space blankly, and not responding to interaction, he realizes that Pyle is losing his mind ("Section 8"), and confides in Cowboy about Pyle's growing mental breakdown. By the end of basic training, Pyle clearly has been completely dehumanized by its rigors.
After graduation, Hartman assigns each recruit a MOS (Military Occupational Specialty), most of them as 0300 (Infantry). One exception is Joker who is assigned as a 4212 (Basic Military Journalism). On the platoon's last night on Parris Island, Joker draws fire watch (guard patrol), during which he discovers Pyle in the bathroom loading his M-14 rifle with live ammunition. Frightened, Joker attempts to calm the insane Pyle, who begins shouting, executing drill commands, and reciting the Rifleman's Creed. The noise awakens Hartman, who confronts Pyle and demands that he drop the rifle. When Pyle refuses and does not respond, Hartman hurls further insults at him. Pyle responds by shooting Hartman dead, and then aims the rifle at Joker. Joker pleads with Pyle, who lowers the rifle and nods, possibly in recognition of Joker as a friend. Pyle sits down on a toilet, places the muzzle of the weapon in his mouth and kills himself.
One year later, Joker is in Da Nang, reporting on the Vietnam War for the military newspaper Stars and Stripes
. He and his partner, combat photographer Rafterman (Kevyn Major Howard
), meet a prostitute (Leanne Hong
) in the streets and encounter a thief (Nguyen Hue Phong
) who steals Rafterman's camera. When they return to their base, they are given new assignments, but Joker wants to go to the front lines to get a good story.
That evening in the barracks, Rafterman talks with the others GIs about wanting to go into combat, as Joker claims he has done. One of the other GI's mocks Joker, saying he knows Joker has never been in combat because he doesn't have the "thousand-yard stare." The sound of nearby gunfire interrupts their argument. The North Vietnamese Army is attacking and attempting to overrun the base in what turns out to be the beginning of the Tet Offensive. Joker's unit returns fire but the base is not attacked as heavily as other locations.
The next day, the staff learns about enemy attacks throughout South Vietnam. Joker's commander, Lt. Lockhart (John Terry
), assigns Joker to Phu Bai, a Marine forward operating-base near the ancient Vietnamese city of Hue, to cover the combat taking place in the area. Rafterman accompanies him, hoping to get some combat experience. During the helicopter ride, Joker and Rafterman encounter an insane door gunner who shoots indiscriminately at unarmed Vietnamese civilians on the ground, boasting about his ability to kill.
When they land outside Hue, Joker and Rafterman meet and talk to a lieutenant, Touchdown (Ed O'Ross
). He tells Joker, who is looking for his old friend Cowboy, that he's Cowboy's commanding officer. However, before Joker and Rafterman meet the squad, they follow up a rumor about Vietnamese civilians who are reported to have been executed by the Viet Cong. They go to the mass grave and find over 20 bodies in a mass grave that have been covered with lime. Joker talks to a lieutenant who confirms that the dead people were told by the Viet Cong they'd be "re-educated" at a public meeting and were killed when they arrived. As they wrap up their coverage, Joker is approached and lectured by a belligerent colonel (Bruce Boa
) who demands to know why Joker wears a peace symbol on his body armor when he also has the words 'Born to Kill' written on his helmet. Joker suggests it has to do with the "duality of Man" according to Jung. The cynical colonel doesn't believe him and tells him to "get with the program".
They later meet Cowboy's unit, the Lusthog Squad, and Joker is finally reunited with Cowboy, who has been promoted to sergeant and is second-in-command. Joker accompanies the squad during the Battle of Hue. During the battle the enemy kills their commanding officer, Lt. Touchdown. Another Marine nicknamed Crazy Earl (Kieron Jecchinis
) takes command of the squad. The group goes into battle and quickly comes under enemy fire from a nearby building (which appears to be a building containing a blast-furnace among a ruined factory). Afterward, the squad is interviewed by a touring combat news team, and they share their experiences and opinion of the war. A little while later a South Vietnamese Army soldier and pimp (Tan Hung Francione
) with a prostitute (Leanne Hong
) visit the resting Marines to offer her services to them.
A few days later, the squad goes out on patrol again, this time in the factory-ruins north of the Perfume River which divides the city of Hue, where the Americans believe enemy forces have hidden themselves. Crazy Earl comes across a toy rabbit in a ruined building and picks it up, triggering an explosive booby trap that kills him, leaving Cowboy as the reluctant squad leader. The squad becomes lost in more ruined buildings, and a unseen sniper (Ngoc Le
) pins them down wounding two of their comrades, first Eightball (Dorian Harewood
), and then Doc Jay (Jon Stafford
) when he tries to drag Eightball to safety. The sniper refrains from killing the wounded men, with the apparent intention to draw more of the squad into range. The M-60 machine gunner, Animal Mother (Adam Baldwin
) disregards Cowboy's orders to withdraw, charges into the clump of warehouse buildings, and locates the sniper. As the squad maneuvers to try to locate the sniper's position, Cowboy is shot. He is rushed behind one of the blown-out buildings where the squad tries to keep him alive; they fail and Cowboy dies in Joker's arms.
Animal Mother assumes command of the remaining Marines and angrily declares, "Let's go get some payback." Using smoke grenades to conceal their advance, the squad enters the building and searches for the sniper. Joker finds the sniper on an upper floor, but his rifle jams as he tries to shoot. The enemy sniper, a teenage girl, spins around, opening fire with her AK-47 automatic rifle and pinning him behind a column. Panicked, Joker drops his rifle and draws his sidearm, however he is unable to shoot back. Rafterman arrives and shoots the sniper, saving Joker. As Animal Mother and other Marines of the squad converge, she begins to pray in her native language, then repeatedly begs (in English) "shoot me", prompting an argument about whether to leave her to die from her wounds or to put her out of her misery. Animal Mother decides to allow a mercy killing only if Joker performs it. After some hesitation, Joker shoots her with his sidearm. The Marines sarcastically congratulate him on his first kill as Joker stares into the distance, having finally gotten his dehumanized "thousand yard stare".
The film concludes with a night time shot of Joker, Rafterman, Animal Mother, and all the other Marines marching through the burning ruins of Hue toward their bivouac for the night, singing the 'Mickey Mouse March'. Joker states that despite being "in a world of shit", he is glad to be alive, and is no longer afraid.