Tens of thousands of demonstrators took to the streets in cities across Germany on Sunday to call for peace and protest against Russia's invasion of Ukraine, police and organisers said.

A sea of people carrying yellow and blue signs that read "Stop Putin" and "Stop the War" massed at Berlin's Brandenburg Gate, with police estimating turnout in the capital at between 20,000 and 30,000.

In Frankfurt, around 11,000 people gathered in solidarity with Ukrainians, according to a police spokesman, who said the rallies proceeded "peacefully and without incident".

Demonstrators there waved Ukrainian and European Union flags and chanted "Stoppt den Krieg" (Stop the war), a reporter at the scene said.

Colourful marches also took place in Stuttgart, Leipzig and Hamburg, drawing in young and old, including families with children.

A giant figure representing Russian President Vladimir Putin swallowing a map of the Ukraine is seen during a demonstration in Berlin, the words read :"Choke on it!!!"
A giant figure representing Russian President Vladimir Putin swallowing a map of the Ukraine is seen during a demonstration in Berlin, the words read :"Choke on it!!!" AFP / John MACDOUGALL

The demos were organised by an alliance of more than 40 rights organisations, campaign groups, unions and church groups.

The organisers put turnout nationwide at around 125,000 people.

In a written appeal, organisers condemned the "increasingly brutal" attacks against civilians in Ukraine, and praised the courage of Russians protesting against Moscow's actions.

"Together, we call on Putin to immediately stop the attacks, withdraw from Ukraine and restore the nation's territorial integrity," the letter said.

The turnout in Berlin on Sunday was smaller than the 100,000-strong crowd that attended a Ukraine solidarity march in the capital two weeks ago, three days after Russia launched its invasion.