NOTE: This spoiler was submitted by Jeremy

The film opens in Central City, where Barry Allen (Ezra Miller) stops to get a sandwich before going to work. While he waits for the sandwich to be made, he gets a call from Alfred (Jeremy Irons), informing him of a mission he needs to get to. Barry puts on his Flash suit and rushes down to stop a hospital from collapsing into a sinkhole. While he saves everyone on the ground level, part of the building collapses, and many babies (plus a nurse and a dog) from the maternity ward start to fall out the window. Barry rushes to the top but is running low on energy because he hasn’t eaten, so he breaks into a vending machine and devours snacks until he has enough energy to save every baby (plus the nurse and dog).

Nearby, Batman (Ben Affleck) is chasing after a group of criminals who are in possession of a deadly virus. After a chase on his Batcycle, Batman beats up the criminals before taking on the main one and driving his vehicle off a bridge. He grapples them up to the bridge, and they are pulled up by Wonder Woman (Gal Gadot) with her lasso. Flash shows up a bit late but is thanked by his fellow Justice League members for his work.

Barry then rushes to work at the research center late where he finds his coworkers Patty Spivot (Saoirse-Monica Jackson) and Albert Desmond (Rudy Mancuso) waiting as their boss chews him out for being late again. The boss also takes credit for recent developments in their work when speaking to the press. One of the reporters, Iris West (Kiersey Clemons), recognizes Barry from college and tries to talk to him about the upcoming trial of his father Henry (Ron Livingston), who has been imprisoned for over 20 after being wrongfully accused of murdering his wife Nora (Maribel Verdu). Barry maintains his father’s innocence.

Barry later chats with Henry over the phone to discuss security footage from the store that Henry was at to establish his alibi at the time of Nora’s death. Henry’s face is not visible to confirm he is there, so Barry fears that the evidence will be admissible. Barry then puts on his Flash suit to run back to his childhood home. He has a flashback to being a child on that day, with Henry going to pick up a can of tomatoes that Nora needs for dinner. When he returned, Henry heard Nora screaming and came into the kitchen to find her with a knife in her chest. Barry could only watch in horror as his father held his mother dead in his arms.

Barry then proceeds to run incredibly fast, to the point where he starts to see all of the day’s events, up to the point where he had to save the babies. He realizes that he can run fast enough to go back at least a day in time, which he relays to Bruce. When Barry proposes that he can go further back in time to save both his mother and Bruce’s parents, Bruce tells Barry that sometimes they need to go through these traumatic events to make them who they have to be. Bruce leaves, and Iris shows up to meet with Barry about Henry’s case. After some discussion, Barry comes to a conclusion that there is a way to undo Nora’s death.

The plan is to go back in time and plant the can of tomatoes in Nora’s shopping cart so that she never forgot it, and Henry never had to leave the house. This successfully results in preventing Nora’s death, allowing for a timeline where Barry still has both of his parents, but just as Barry reaches the 18th year of his life, another villainous looking speedster emerges and knocks Barry out of his Speed Force, landing him back in front of his house.

Barry enters the house and is emotional at seeing his mother alive again, as well as having Henry not be in prison. Just as he’s having lunch with them, he is stunned to see his 18-year-old self (let’s call him Barry 2) approaching the house. Barry intercepts Barry 2 and takes him to his room, where he explains his superpowers and the future he came from. Barry 2 then mentions that the date is September 29th, which is the day Barry got his powers.

The two Barrys go to the research center so that Barry 2 can go through the same freak accident that gave Barry his powers. Just as Barry 2 begins panicking, Barry stands in front of him right when the lightning strikes, hitting both of them. They begin to flee as the guards arrive, but Barry sees that he cannot phase or run fast, meaning he’s lost his powers while Barry 2 has successfully acquired them. They return to Barry 2’s apartment where he begins to have reckless fun with his powers until the older Barry has to get him to be more responsible.

The next day, just as Barry gives Barry 2 his suit, they find people crowding around to watch news about General Zod (Michael Shannon) and his army of Kryptonians arriving on Earth to find who Barry believes is Superman. They go back to Barry 2’s apartment to find that Patty and Albert are dating and also Barry 2’s roommates. Barry tries to find other Justice League members in this timeline, only to find that Victor Stone hasn’t become Cyborg yet, Thomas Curry (Temeura Morrison) didn’t marry Atlanna and have Arthur, and Wonder Woman also doesn’t exist. Everyone else confirms that Batman does exist, so Barry heads out to find him.

The Barrys go to Wayne Manor to find Bruce, only to see that this Bruce (Michael Keaton) is older, disheveled, and alone since the death of his Alfred. He has become more bitter and retired his duties as Batman since Gotham City is now safer than ever. After Barry explains himself and his alternate future, Bruce tells Barry he ended up opening other timelines in the multiverse. Bruce also declines to help them locate Superman, so the Barrys sneak into the Batcave and begin to do some research on Bruce’s computer.

After some time, Barry gets annoyed with his younger self’s immaturity and goofiness, but he cannot bring himself to admit why he went back in time in the first place. Barry then talks to Bruce over the camera and manages to convince him to help. Bruce dons the Batsuit once more and gives the Barrys a file in which it is stated that a Kryptonian is being kept prisoner at a facility in Siberia.

The trio use the Batwing to fly to Siberia and infiltrate the base. They find a chamber which contains not Kal-El, but a young Kryptonian woman, Kara Zor-El (Sasha Calle). The heroes get her out of there, but Barry 2 gets shot in the leg by the mercenaries after they are spotted. Batman manages to help get them out using an explosive charge, but once they are out in the open, the mercenaries corner Batman and the Barrys, but Kara is re-energized by the sun and begins to pummel the mercenaries before passing out again.

The guys return Kara back to Wayne Manor, where she says that she is Kal-El’s cousin and was sent to protect him after the destruction of Krypton. After learning that Zod is on Earth, she puts on her Supergirl suit and goes out to fight. Barry 2 tries to convince her to aid them in saving the world, but Kara distrusts humans for them imprisoning and experimenting on her. When she flies out to find Zod, Kara sees him with his henchwoman Faora (Antje Traue) just before they execute a soldier for failing to bring him Kara. She then witnesses the other Kryptonians slaughter the soldiers before reinforcements arrive.

Barry then asks Bruce for help in recreating the lightning storm to give him back his powers. They set up a machine to do it, but after the initial lightning strike, Barry 2 tries to get Bruce to stop because Barry looks hurt, though he tells Bruce to turn it on again. The circuits in the machine end up fried, but Kara flies in and pulls Barry high above the clouds to get a more effective lightning strike that successfully returns him his powers. The heroes then resolve to go out and stop Zod.

Zod prepares his World Engine to terraform Earth as he previously tried to. The two Barrys and Kara speed in to fight the Kryptonians, with both Flashes trying to figure out effective ways to take on invincible warriors. Zod sends out his brutish henchman Nam-Ek to provide more of a challenge while Batman flies above in the Batwing to provide support. Kara confronts Zod, who says that they have been pursuing her all along, and not Kal-El, to gain her blood for the Codex to rebuild Krypton. After Zod confirms that Kal-El is dead, Supergirl begins to fight the villain. Zod and Faora overpower her, and Zod impales Kara, successfully extracting her blood. Batman also ends up making a sacrifice by crashing his jet into Zod’s jet, but does not manage to destroy it.

The Barrys, devastated by the loss of their allies, both run back in time to save them. However, Kara still ends up killed, and Batman dies after a fight against Nam-Ek. Barry mourns Bruce before they succeed in blowing Nam-Ek up and then using part of his armor to impale Faora. Barry 2 then starts to run back, with Barry going after him. They get stuck in their Speed Force because every timeline always results in Kara and Bruce’s deaths, and Zod destroying Earth. As Barry tries to stop Barry 2, he becomes more and more angry until they are met by the evil speedster that started the mess, who just happens to be a much older Barry (“Dark Flash”) that has not stopped trying to fix everything. As a result, multiple worlds and timelines begin to collide, featuring different Flashes (Teddy Sears as Jay Garrick), an alternate Batman (Adam West), alternate Supergirl (Helen Slater), and many alternate Supermen (George Reeves, Christopher Reeve, and even none other than NICOLAS CAGE). Dark Flash prepares to kill Barry for trying to go back and undo saving Nora, but Barry 2 takes the killing blow, erasing Dark Flash and fixing the other worlds. As Barry mourns his younger self, he then begins to run backwards in time.

Barry returns to the supermarket where he prepares to take out the tomato can from Nora’s cart. He briefly talks to her, saying he is seeing his mother for the last time before beginning to cry. Nora consoles him, and Barry takes the time to admire his mother one last time before making the switch. He then returns home to his timeline, but not before noticing the security camera at the store.

Barry shows up (late) for Henry’s trial, where his lawyer brings up new footage that has been enhanced thanks Barry moving the camera to get a better look at Henry. This effectively proves his alibi and his innocence, allowing him to go free. After the trial, Barry runs into Iris again and makes dinner plans with her. He then gets a phone call from Bruce, congratulating him just as he pulls up to the courthouse. Barry is then shocked to see that this is not the same Bruce he knows (because he’s played by GEORGE CLOONEY).

After the credits, Barry hangs out with a drunken Arthur (Jason Momoa).

Brought to you by

Barry Allen has been trying hard to live up to his responsibility in the Justice League, but as his father Henry is set to try for an appeal after his wrongful conviction in the murder of his wife Nora, Barry ends up running fast enough to go back in time to fix a chain of events on the day of the murder. He succeeds in preventing Nora's death, but ends up meeting his younger self who has not yet become The Flash. When he tries to recreate the accident that gave him his powers, Barry ends up losing his powers while Barry 2 gains them.

When General Zod and his army of Kryptonians arrive looking for who Barry believes is Superman, the two Barrys seek help from the Bruce Wayne of this timeline, but he is older and retired from being Batman. After some convincing, Bruce dons the cowl once more to help the Barrys find an imprisoned Kryptonian that turns out to be Kara Zor-El, Kal-El's cousin that also survived Krypton's destruction. Although she is initially resistant to helping save humanity, Kara comes back after witnessing Zod and Faora killing humans. With help from her and Bruce, they are able to recreate the lightning strike to give Barry his powers back.

The heroes engage in battle with Zod, but Kara and Bruce don't survive. When the Barrys go back in time to save them, each outcome ends with Batman and Supergirl getting killed. Barry 2 eventually keeps trying for so long that he becomes Dark Flash, who is hellbent on fixing things so nobody has to die. Barry realizes he needs to go back and let Nora's death happen, and Dark Flash disintegrates when Barry 2 takes a killing shot meant for Barry. He returns to the past and has one final moment with his mother before fixing things.

Back in the present timeline, Barry helps find footage that exonerates Henry, and he starts a relationship with his former classmate Iris West. He then meets the Bruce of this universe, but it's not the same one he knows (it's George Clooney instead of Ben Affleck).