Zurich police fired a water cannon and rubber bullets to quell a small riot after some 12,000 people had gathered peacefully in the streets for May Day demonstrations.
Police said about 300 masked troublemakers started brawls and damaging property in the city around 3.30pm on Friday, when officers moved in to restore order.
Thirty people were arrested.
A demonstration earlier in the day had unfolded largely without incident in Switzerland's biggest city. Tamils participated in particularly large numbers, observers said, adding significantly to a crowd that swelled to an estimated 12,000 people.
"We will not pay for your crisis" was the theme behind the rallies, where speakers called for protecting markets and better social programmes.
In Bülach, canton Zurich, Foreign Minister Micheline Calmy-Rey - a centre-left politician - agreed that workers are not to blame for current economic hardships. She said a third economic-stimulus package was currently being reviewed.
Elsewhere around Switzerland about 2,500 people rallied in Basel. Demonstrations were also planned in Neuchâtel, Geneva and Lausanne. About 20,000 people in all demonstrated on Friday across the country.
swissinfo with agencies
In compliance with the JTI standards