Paris Island, South Carolina, U.S. Marine Corps Training Camp: late 1960s. A group of young Marine recruits, their heads shaven and their identities erased, are prepped for basic training to become Marines. They are subjected to the brutal Gunnery Sergeant Hartman (R. Lee Ermey), whose orders are to "weed out all non-hackers." Hartman gives each of the Marines nicknames by their posture and response, naming one pragmatic recruit 'Joker' (Matthew Modine) for talking behind his back, another recruit is 'Cowboy' (Arliss Howard) for being from Texas, and a 6'3", 280-lb recruit, named Leonard Lawrence (Vincent D'Onofrio), is nicknamed 'Gomer Pyle'.
Gomer Pyle becomes the subject of Hartman's brutality because the recruit is merely a slow-witted, overgrown boy with no intelligence or ambition. The overweight Pyle just cannot keep up with the other fit recruits in the grueling obstacle courses.
One day when Joker talks back to Hartman that he is an atheist and sticks to his belief, he becomes the hero to the other recruites. But Harman immediately turns Joker from hero to outcast by giving Joker the unpopular job of being the platoon leader and also gives Joker the hard job of being Pyle's personal instructor. Joker shows Pyle how to operate and clean a rifle, make and fold bed sheets, and helps him through the obstacle courses.
But one morning, Hartman finds a jelly donut in Pyles foot locker and instead of punishing Pyle for it, Hartman punishes the entire barracks as an example. That night, the recruits decide to give Pyle a red alert: while Cowboy and a few others hold Pyle down in his bed, the recruits attack the fat recruit with soap bars wrapped in towels.
After this Pyle not only shapes up but he becomes the fastest and quickest rifleman of the entire platoon. But Joker sees that Pyle is losing his true human self, and that the rigors of basic training have dehumanized Pyle completely.
On the last night at Paris Island, Joker is doing fire watch when he runs into Pyle in the barracks latrine loading life rounds into his rifle. Pyle, now completely psychotic, yells out which awakens Hartman who enters the latrine and orders him to put down the rifle. Pyle responds by killing the drill instructor. Then Pyle turns the rifle on himself and fires.
Da Nang, Vietnam. One Year Later. Joker is now a reporter for the Stars and Stripes, a Marine Corps newspaper detailing the war in Vietnam. With his partner, combat photographer Rafterman (Kevyn Major Howard), Joker still resents not being able to get out in the country and get a good story. But that night, January 31, 1968 just after midnight, the Tet Offensive strikes. The NVA assault against the Marine Corps base at Da Nang is easily beaten back.
The next morning, Joker and Rafterman are assigned to cover the fighting in Hue which has been seized by NVA communists. Joker and Raferman fly to out Pu Bai and meet Joker's basic training friend, Cowboy, leading a platoon to recapture the south side of Hue. Going through a battle, the GI grunts give their own opinions about the fighting and insanity of the war.
A few days later, Joker and Rafterman accompany Cowboy and a squad into the ruins of the south side of Hue after an NVA pullout. But the squad wanders off too far and they soon find themselves pined down by an unseen sniper in a cluster of buildings. One grunt, Eightball (Dorian Harewood), is hit and another, Doc Jay (John Stafford), is also hit and killed when he tries to drag Eightball to safety. One big grunt, Animal Mother (Adam Baldwin), disregards orders to pull out and locates the sniper, but Cowboy himself is hit while trying to rally his men. The grunts split up and search the building with the sniper in it. Joker locates the sniper, an NVA woman (Ngoc Le), who nearly kills him, but he is saved by Rafterman who shoots her.
With the grunts looking down at their dying enemy, Joker suggest they can't leave the sniper like this and he shoots her, out of both compassion and revenge. Afterward, the squad meets their main unit and heads out, as Joker comments, "I am in a world of shit, but I am alive and I am not afraid."