The 34-year-old with a history of mental illness freed the hostages one by one as the drama unfolded. The last captive was released shortly before the suspect turned himself in, police said.
The incident unfolded around 5 p.m. local time in the port city of Le Havre and authorities quickly blocked off the area.
The hostage-taker was armed with a handgun, but it was not immediately clear whether the weapon was real or fake.
Local media reported earlier that authorities were concerned that there may be explosives involved.
A senior police union official who was in contact with officers in negotiations said the suspect was on a security agency watchlist.
“We’ve identified him. He’s on a watchlist. We know that he has been radicalized and suffers a serious psychiatric illness,” SGP Unite police union chief told Reuters.
However, the official did not confirm French media reports that he had put forth confusing demands. The official could not be identified by name, in keeping with French custom.
RAID, a special intervention unit, was on the scene. The unit trained to negotiate to try to defuse tense situations and move in if that fails.
The police unit spent hours negotiating with the hostage-taker before he turned himself in and was arrested. None of the captives were injured.
Le Havre is a major port city on the English Channel coast and a vacation destination.
The Associated Press contributed to this report.