The vote in the National Assembly is a blow to the labour movement, which staged three months of rolling strikes over the bill, the longest industrial action in over 30 years on French railways.
Members of the lower house of parliament, where Macron's party has an overwhelming majority, adopted the bill by 452 votes for to 80 against.
Analyst have compared the standoff between the government and railworkers with Margaret Thatcher's showdown with British miners in the 1980s.
Train drivers particularly had resisted plans to deny job and pension guarantees to new SNCF recruits, along with plans to turn the SNCF into a joint-stock company, which they see as a covert first step toward privatisation.
The government says the heavily-indebted SNCF needs to cut costs and improve flexibility before the EU passenger rail market opens up to competition.
Polls showed voters largely on board with the changes.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)