The rally went on peacefully under the close watch of several hundred riot police, who separated the protesters from a few dozen anti-gay demonstrators.
Participants in today's protest held placards with signs such as "Stop homophobia in Russia!" and chanted "Putin lies!" a reference to the Russian president's denial that the new law infringes gay rights.
One of the protesters, Kirill Kalugin, said police protection of the rally was a "show intended for the Group of 20 leaders."