Public transport largely came to a halt across much of Brazil as protesters blocked roads and scuffled with police in a general strike to protest against proposed changes to labour laws and the pension system.
President Michel Temer's administration argues that more flexible labour rules will revive a moribund economy and warns the pension system will go bankrupt without changes.
Unions and other groups called for the strike, saying the changes before Congress will make workers too vulnerable and strip away too many benefits.
In Sao Paulo, the country's largest city, most commuter trains and metro lines were stopped during the height of the morning peak, and all buses stayed off the roads.
Later in the morning, some metro lines and trains began offering services. In Rio de Janeiro, buses ran partial services.
Protesters in both cities set up roadblocks, placing barricades and starting fires in the streets. In Sao Paulo, protesters carrying signs calling for Mr Temer's removal blocked all but one lane of a major route.
Protesters blocked roads to both of Sao Paulo's main airports, and police used tear gas to break up one of the demonstrations.
"There was a blockade for about an hour, but it was removed," said Barbara Castro, a sociology professor who was flying to Lima, Peru, out of Guarulhos International Airport.
"They didn't stop the airport, but I hope that they stop the rest of the country," she said.
Protesters at Santos Dumont Airport in Rio de Janeiro created confusion by running through the terminal and pushing down the line dividers at check-in counters. Some mechanics joined the strike, according to the National Aeronautic Union, but the impact was minimal, with only a handful of flights cancelled or delayed at the two cities' airports.
Also in Rio, protesters blocked a major road and scuffled with police who tried to dislodge them. Police fired tear gas, and protesters threw stones at buses in a nearby terminal.
Brazil's economy is in a deep recession, and many Brazilians are frustrated with Mr Temer's government. He has argued that the proposed changes will benefit Brazilians in the long run, but with so many out of work, many feel they can ill afford any cuts to their benefits.
Underscoring the economic malaise, the IBGE statistics agency announced on Friday that unemployment had jumped to 13.7% in the first quarter of the year, up from 12%.
"We are demanding our rights, as workers, because the president of the country proposed a law for people to work more and live less, so you will only receive your pension when you die," said Edgar Fernandes, a dock worker who was protesting in Rio.
The government downplayed the strike, insisting that many Brazilians were still at work.
"We don't have a strike, we have widespread riots," justice minister Osmar Serraglio said on Joven Pam radio. "It is not a national strike because commerce is working, industries are working."
Many banks and post offices also closed, and miners and oil workers walked off the job. Others stayed home because they could not get to their workplaces without public transport.