Around 2,000 protesters, many carrying signs reading "no human being is illegal" and bearing trade union logos, said the demonstration was partly a response to the government's "inhuman" and "illegal" migration bill.
"People in this country are decent... and they're willing to open their arms to people who are fleeing terrible circumstances," the protest's planning officer Mark Daly told the PA news agency.
"The government is trying to make these people not only unwelcome but illegal. We cannot classify people as illegal, it's a racist policy from a racist government."
The Conservative government intends to outlaw asylum claims by all illegal arrivals and transfer them to "safe" third countries, such as Rwanda, in a bid to stop thousands of migrants from crossing the Channel on small boats.
The bill proposes detaining people who have arrived in the country illegally from seeking asylum before having them sent to a third country deemed safe.
Exceptions would be made for minors, but only if they were unaccompanied.
More than 45,000 migrants arrived in the UK last year by crossing the English Channel on small boats.
The UN children's agency said last week that it was "deeply concerned" about the bill's potential impact on minors.
Prime Minister Rishi Sunak told the House of Commons earlier this month that stopping the boats was the "people's priority".
Interior minister Suella Braverman is currently visiting Rwanda to reaffirm her commitment to the government's policy to deport migrants there.
Braverman has insisted the government is within its rights to stop the migrants crossing the Channel, who she said could total 80,000 this year.
"We're not breaking the law," she told Sky News, claiming support from the "vast majority" of the British public.
The government, she said, is in compliance with its international law obligations.