Up to 8,000 people in the French-speaking part of Switzerland took to the streets on Tuesday evening to protest against the minaret ban.
Voters accepted a ban on the construction of minarets in a referendum on Sunday by 57.5 per cent.
A march in Lausanne attracted up to 5,000 supporters, while a demonstration in Geneva was attended by more than 2,000 people, with smaller protests taking place in other towns.
In Lausanne the crowd marched from the cathedral to the mosque shouting "no to exclusion" and "no to discrimination".
In front of the mosque, representatives of the Muslim community thanked the four cantons – Basel City, Geneva, Vaud and Neuchâtel – which voted against the minaret ban. "You warmed our hearts," they said.
The protests were organised by the Movement Against Racism with support from the Catholic, Protestant, Jewish and Muslim communities.
Candlelit vigils of several hundred people were organised in the French-speaking towns of Fribourg, Biel, Neuchâtel and Sion.
swissinfo.ch and agencies