Opposition leader and former prime minister Raila Odinga organised the demonstration to address what he says are major government failures, including worsening crime and insecurity, rising living costs, impunity, corruption and allegations of ethnic favouritism in government appointments.
"Parliament itself is part of the problem, it's a rogue parliament," Odinga told the crowd, who screamed wildly calling for President Uhuru Kenyatta "to go".
"Kenyans want issues that are in a mess to be addressed," said Odinga, dressed in a shirt with the colours of the Kenyan flag.
The rally, the culmination of a series of countrywide demonstrations, was held on the anniversary of a series of July 7 protests for multi-party democracy in the 1990s. The date has since become heavy with symbolism and is known commonly as "Saba-Saba", or "Seven-Seven" in Swahili.
Also Read
Tear gas was also fired in Odinga's home town of Kisumu in western Kenya to disperse a crowd of several hundred angry youths.
Police said they deployed 15,000 officers to ensure the rally passed off peacefully, with the country already on high alert fearing attacks by Somalia's Al-Qaeda-linked Shebab gunmen, who have vowed revenge for Kenya's military presence in Somalia.
Kenyatta, however, denied that the Shebab were involved and instead blamed "local political networks" and criminal gangs, saying victims had been singled out because of their ethnicity.
His comments were widely seen in Kenyan media as being directed at Odinga.
But Odinga, leader of the Coalition for Reform and Democracy (CORD), has fiercely denied any link to the violence and condemned the attacks.
"Today Kenya looks like a military state, the police and the military are all over here yet people are been killed in Lamu," he said, waving at the lines of security officers.
Some supporters waved placards calling Odinga the "people's president", others draped themselves in strings of oranges, the party symbol.