More than 100,000 people have been marching in the German capital Berlin to protest against xenophobia and the increasing influence of the far right.
Rights groups organised the rally, as marchers held placards reading "Indivisible" and "United against racism".
The BBC's Jenny Hill in Berlin says even the organisers seemed surprised by the turnout.
Support for the anti-immigration AfD party has risen in recent years.
The Alternative for Germany entered parliament for the first time last year, becoming the biggest opposition party, and is expected to make a strong showing in elections in the southern state of Bavaria on Sunday.
Marchers walked through central Berlin, rallying at the Brandenburg Gate.
Many said they were defending human rights and tolerance, particularly of migrants.
"I'm worried that we are not there for the others, and that we just don't bother or care about loads of people who really need our help," said one demonstrator.
"Nobody just comes because they are bored."
One woman said: "There are so many people who believe they can abuse human rights and questions of equality and so on, and it's time to say no, there are other people who just want to be open and open-minded."
Organisers of Saturday's rally say that more than 240,000 attended. Police said the number of participants was "in the low hundreds of thousands".
Theresa Hartmann, spokeswoman for the #unteilbar (indivisible) movement, said only 40,000 had been expected.
The march is partly as a response to the rise of the AfD, which has seen a particularly strong rise in support in eastern parts of Germany.
In August, far-right groups held protests in Chemnitz and other cities after the fatal stabbing of a German man blamed on migrants.
The arrival of more than a million migrants in the country in 2015 boosted support for the party, although immigration levels have since fallen sharply.