Protests fill the streets of Paris amid plan to raise retirement age
President Emmanuel Macron called the reforms "just and responsible" - but they are facing a make-or-break moment.
The strikes severely disrupted public transport and many schools were closed.
Protests took place across France, in Nantes, Lyon, Bordeaux, Marseille and Toulouse, as train drivers, public sector workers and refinery staff walked out.
The head of the big CGT union, Philippe Martinez, put the total number of protesters at beyond two million, higher than the government's 1.12 million figure. They said 400,000 peopled had joined the biggest march, from Place de la République in Paris.
Buoyed by their success, the unions called another day of action for 31 January.
Police were out in force in Paris in case of violence from ultra-left "black bloc" infiltrators but there were few clashes and 38 arrests. Prime Minister Élisabeth Borne praised both the police and the unions for the "good conditions" in which the protests had taken place.
On some rail lines, as few as one in 10 services were operating, while the Paris metro was running a skeleton service.
The main secondary education union said 65% of teachers were on strike, although the education ministry said it was 35%.