The Ukrainian president said he would not give the number of wounded as that would help Russian military planning.
Typically, Ukrainian officials do not make casualty figures public, and other estimates are much higher.
It comes after the defence minister said half of all Western aid for Ukraine has been delayed, costing lives and territory.
Mr Zelensky said on Sunday that he was providing an updated death toll in response to the inflated figures that Russia has quoted.
“31,000 Ukrainian soldiers have died in this war. Not 300,000 or 150,000, or whatever Putin and his lying circle are saying. But each of these losses is a great loss for us.” Speaking about the wider losses in the war, Mr Zelensky said tens of thousands of civilians had died in the areas of Ukraine occupied by Russia but the true number was unknown.
“I don’t know how many of them died, how many were killed, how many were murdered, tortured, how many were deported.”
It is rare for Ukraine to provide a military death toll, and other estimates suggest a much higher number.
US officials in August put the number of Ukrainian soldiers killed at 70,000 and as many as 120,000 injured.
In terms of Russian losses, Mr Zelensky said 180,000 Russian soldiers have been killed and tens of thousands more injured.
BBC Russian, in a joint project with the Mediazona website, has established the names of more than 45,000 Russian servicepeople who had died. But it estimates the total number to be greater than that.
In February, the UK’s defence ministry estimated that 350,000 Russian troops had been killed or injured.
President Zelensky’s address came after his defence minister, Rustam Umerov, called out the country’s Western allies for delays in military aid.
“At the moment, commitment does not constitute delivery,” he said.
Ukraine is currently experiencing a variety of setbacks in its mission to drive Russia from its territory.
Mr Umerov said that the lack of supplies put Ukraine at a further disadvantage “in the mathematics of war”.
“We do everything possible and impossible but without timely supply it harms us,” he said.
Germany warned in November that a European Union (EU) plan to deliver a million artillery shells by March would not be met.
In January, the EU said just over half of these would reach Ukraine by the deadline and that the promised amount would not be there until the end of 2024.
President Zelensky said one of the reasons Ukraine’s highly anticipated counter-offensive last year did not start earlier was the lack of weapons.
That counter-offensive largely failed – one of a number of setbacks Kyiv has faced after some early successes in repelling Russia after it invaded in February 2022.
Mr Zelensky also suggested on Sunday that plans for the counter-offensive were leaked to Russia ahead of time.
Last week, it was announced that Ukrainian troops had withdrawn from the key eastern town of Avdiivka – Moscow’s biggest win in months.
Mr Zelensky also blamed this partly on faltering Western weapon supplies.
The Biden administration, meanwhile, has said the hold-up in Congress of a $60bn aid package for Ukraine contributed to the fall of the town.
Western leaders travelled to Kyiv on Saturday in a show of solidarity with Ukraine as the country marked two years since Russia’s full-scale invasion.
There, it was announced that Italy and Canada had signed security deals with Ukraine – bolstering support until the country could join Nato.
Canada’s deal included more than three billion Canadian dollars (£1.7bn) in financial and defence aid.
It is not only Ukraine that is having trouble resourcing its military activities. Russia is also struggling to provide ammunition and weapons, according to Western officials. “Russia’s domestic ammunition production capabilities are currently insufficient for meeting the needs of the Ukraine conflict,” a Western official claimed.