Thousands of people marched in the cold and snow through Belgrade to protest against Serbian President Aleksandar Vucic and demand an end to attacks against journalists and opposition figures.
An estimated 15,000 protesters blew whistles, chanted "Vucic, thief," and waved banners that read "Stop the treason, Defend the constitution and back the people."
The antigovernment protest on January 5 was the fifth in as many weeks.
The Beta news agency reported that smaller protests were held in other areas, including the southern town of Kragujevac and the northern city of Novi Sad.
The demonstrations were triggered last month when a gang of thugs beat up opposition politician Borko Stefanovic.
Opposition parties and organizations have accused Vucic of being an autocrat and his ruling Serbian Progressive Party (SNS) of being corrupt. Vucic denies the claims.
Officially, the president in Serbia plays a largely ceremonial role, but Vucic's Progressive Party has dominated the legislature since 2012.
Vucic was elected to a five-year term as president in 2017 after holding the post of prime minister.
A former nationalist, Vucic is now guiding Serbia toward membership of the European Union. He has also sought to maintain ties with traditional ally Russia and to develop relations with China.
Vucic has said he will not give in to opposition demands for electoral reform and increased media freedom regardless of the number of protesters on the streets, although he has suggested he might call a snap vote to demonstrate his party’s strength
According to survey a conducted in October by the CESID election watchdog, Vucic’s SNS has 53.3 percent support, far ahead of other parties.
The poll indicated that if the leading opposition parties ran as an alliance, they would receive only about 15 percent of the vote.
Many opposition leaders said they would boycott a vote, saying they would not be free or fair.