An Insurance Salesman/Ex-Cop is caught up in a criminal conspiracy during his daily commute home.
Michael MacCauley (Liam Neeson) is a former cop/recently fired life insurance salesman who meets a mysterious woman, Joanna (Vera Farmiga), on his train ride home. She tricks Michael into accepting a bribe so that he may identify a witness on the train, “Prynne”, who saw a murder and is carrying valuable information. Joanna’s employers want the witness dead, and she blackmails Michael into finding Prynne, or else his wife and son will be hurt.
Joanna’s people kill two passengers while Michael scrambles to find Prynne. At the end of the ride, he finds that a young woman, Sofia (Ella-Rae Smith), is Prynne, and that she witnessed officers killing her friend, a city planner. When Michael refuses to give her up, Joanna’s people derail the train, but Michael manages to save the remaining passengers.
Michael learns that his friend and former partner, Alex Murphy, is in on the conspiracy. After a fight, Michael gets the police to shoot Murphy dead. The police arrest men attempting to harm Michael’s wife and son, and they are reunited.
Michael rejoins the police force and finds Joanna, and it’s implied he will arrest her.
Every day, Michael MacCauley (Liam Neeson) goes through the same routine prior to his daily commute. He spends time with his wife Karen (Elizabeth McGovern) and son Danny (Dean-Charles Chapman) before boarding the train to work, frequently engaging with other regular commuters like Walt (Jonathan Banks).
Michael works as a life insurance salesman. However, on this particular day, Michael’s boss calls him into his office to tell him he is being laid off. Despite trying to argue against it, Michael is let go.
Michael goes to a bar where he meets his friend, Officer Alex Murphy (Patrick Wilson), who was also Michael’s former partner during his time as a detective. As they chat, there’s a news story on TV about a city planner that supposedly jumped to his death several nights earlier. Michael admits to Murphy that he hasn’t told Karen about getting laid off yet. They then find a former colleague that they don’t like, Dave Hawthorne (Sam Neill), is now captain. He goes over to chat with the men for a brief moment.
On the train ride home, Michael is told by Walt that a woman is observing him. Michael sits down and is joined by the woman, Joanna (Vera Farmiga). After brief friendly chat, Joanna tells Michael that there is a compartment on the train containing $25,000, plus another $75 in cash. She tells him he can have it as long as he helps find someone at the last stop at Cold Spring under the name “Prynne”. Before departing, Joanna hints at knowing about Michael being a former cop.
Michael looks in the designated compartment and does find the money. When the train reaches a stop, a young woman finds Michael and tries to claim the money, but Michael decides to keep it for himself. The woman then hands Michael an envelope, saying it’s a warning. Michael opens the envelope and finds Karen’s wedding ring. Since he lost his own phone, Michael borrows the phone of another commuter, Tony (Andy Nyman). He tries to call Karen but cannot reach her. He tries Murphy and gets the same result but leaves a message. He then hears from Joanna, who tells him he’s made his choice and must now find Prynne, or something will happen to Karen and Danny.
Michael tries to leave a message for Walt on a piece of newspaper to contact the police. Just then, Michael receives a phone call from Murphy. After Michael tells him what’s going on, Murphy mentions that a witness using the name Prynne claims to have seen two men throwing the city planner to his death. After hanging up with Murphy, Joanna calls Michael again and directs his attention out the window. He sees Walt about to cross the street to talk to officers, but someone working with Joanna pushes Walt into the path of a bus, killing him. She warns Michael this is what happens when he tries to weasel his way out. She instructs Michael to find Prynne and a bag that they are holding, and to put a tracker they slipped on him onto the bag.
Michael observes the other passengers in case anyone is watching him. He interacts with a few who just think he’s weird. Michael sees one young girl, Gwen (Florence Pugh) with a bag, but when he follows her, he sees she’s carrying fake ID’s for her boyfriend. Michael then spots one young man, Dylan (Killian Scott), talking on the phone and carrying a bag. Michael follows Dylan, who attacks him in the next cart for following him. When Michael mentions Prynne, Dylan gets suspicious, and the two continue fighting until Michael lets Dylan win so he can slip the tracker on him.
A while later, Michael is called by Joanna again and he looks under the floor of the empty cart. Dylan’s body is stuffed in there with a bullet in his head. She blames Michael for this happening as he identified the wrong person. To make things worse, the police are coming after being told about disturbances on the train. Michael hides next to Dylan’s body but gets locked in when a cop inspecting the cart steps on the handle. Michael slips out of the train just as it starts up again and then rolls himself out before running back to the train. His bag gets caught, and when he pulls it back, all the money (except for a $100 bill) flies out.
As the train gets closer to Cold Spring, Michael gets more desperate. He pegs 5 commuters as potentially being Prynne since he’s never seen them on the train before. After mistakenly thinking a man playing cards with Tony is Prynne, Michael follows a guitar player, Oliver (Kobna Holdbrook-Smith), into the empty cart. Oliver turns out to not be Prynne, but an assassin working with Joanna sent to kill Prynne. Michael fights Oliver for a while until they break a window, with Oliver trying to push Michael out, but Michael gets the upper hand and stabs Oliver in the neck before throwing him out the window where he gets run over by another passing train. He then grabs Oliver’s gun.
With two stops remaining, Michael causes the train’s air-conditioning to malfunction so that all the remaining passengers can move to the empty cart where the AC does work. He then suspects a nurse, Eva (Clara Lago), of being Prynne. He takes her phone, thinking she is contacting Joanna, and holds her at gunpoint to tell the truth. Frightened, Eva admits she had a fight with her boyfriend and is trying to fix things up with him. Michael apologizes after realizing she’s telling the truth.
Once they reach Cold Spring, Michael slowly realizes that Prynne isn’t anyone he suspected before. He recalls a young woman going to Cold Spring but had switched seats after being next to an obnoxious passenger. The woman’s name is Sofia (Ella-Rae Smith). “Prynne” comes from her reading “The Scarlet Letter” and its protagonist, Hester Prynne. Michael realizes Sofia witnessed the murder and is supposed to testify with two FBI agents at Cold Spring, but since he refuses to give her up, Joanna declares via another phone call that everyone will die now.
The train moves on, but Michael tells one of the conductors, Sam (Colin McFarlane) to stop the train. Sam pulls the breaks, but the train keeps moving because the engineer is dead. With the train set to crash, Michael and Sam try to unhinge their cart from the rest of the train. Michael manages to get it loose with Sam’s help, but the cart is still stuck because of a chain. Sam helps Michael get it loose, but the train crashes with Sam still inside, and Michael manages to jump onto the other cart, which derails and comes to a screeching halt on the outskirts of a trainyard.
Once everyone has calmed down, Michael asks Sofia what she might have that the villains want. She pulls out a some kind of flash drive containing information that the city planner, who was a friend of Sofia’s, might have known about. Sofia also mentions that she couldn’t go to the police because the killers were cops. The police then arrive outside, believing Michael has taken the passengers hostage. Murphy shows up and tries to talk Michael down. Michael helps let a large group of passengers go out, with a few remaining on board. Michael tries to get Murphy to tell him what he may know about the conspiracy. Murphy mentions the phrase, “There’s no such thing as noble”, which is something Joanna said earlier, cluing Michael in to Murphy’s involvement. After getting Murphy to admit his guilt, Murphy takes out his gun, telling Michael he’s got his family to worry about as well. Murphy goes looking for Prynne. When Sofia tries to reveal herself, other passengers start saying they are Prynne as well. Michael and Murphy then fight while the cops outside try to get a clear shot at Michael. Michael manages to take Murphy’s tracker, tricking the police. Once Murphy draws his weapon, Hawthorne orders the cops to take the shot, killing Murphy.
Outside, Michael is reunited with Karen and Danny after being told that the agents arrested three men outside their home. Sofia meets the FBI agents and gives her testimony. The other passengers consider Michael a hero. He then talks to Hawthorne, who says they will investigate Murphy and any accomplices he may have had. Hawthorne also suggests inviting Michael back to his old job.
Some time later, Michael is back on the train, and he manages to find Joanna. Although she pretends not to know him, Michael figures he’s got her whole scheme pegged and that it won’t work now. When she asks him how he thinks this will end, Michael simply takes out his detective badge.