Every marker is a real place. Every number refers to a person.
In the 24 hours to the morning of 31 July, Russian air strikes, drones, guided bombs and artillery hit cities and front-line communities across Ukraine, killing ten people and injuring at least 61 across ten oblasts. The heaviest toll was in Dnipropetrovsk Oblast, where strikes on Pavlohrad and the Nikopol district killed five and injured 16. In Sumy Oblast a 47-year-old woman injured by a drone in Romny hromada died of her wounds; Kherson Oblast recorded four killed and five injured over the day. Overnight Russia launched 255 Shahed-type and decoy drones; air defence downed 195.
These are not just numbers, photographs, or cards. They are real people’s lives.This report preserves only facts confirmed by official sources.
Overnight into 31 July (from 18:00 on 30 July), the Ukrainian Air Force said Russia attacked with 255 Shahed-type strike drones, including jet-powered variants, along with Gerbera, Italmas and "Parodiya" decoy drones, launched from Oryol and Kursk in Russia and from occupied Donetsk and Hvardiiske in occupied Crimea. As of 08:00 on 31 July air defence had shot down or suppressed 195 of them over the north, south and east of the country. Hits by 22 attack drones were recorded at 14 locations, with debris from intercepted drones falling at four more. No missile launches were reported in this tally. The figures are preliminary — the Air Force said the attack was still under way when the post was published, and no fuller consolidated tally had appeared by the time of this edition.
Verified by the UN Human Rights Monitoring Mission (OHCHR): in July 2026 alone, at least 437 civilians were killed and 2,610 injured in Ukraine — the highest monthly civilian death toll since May 2022.
Official confirmation required. A report is included only after confirmation by a Ukrainian regional administration, the State Emergency Service (DSNS), police or another public authority. A link may lead to reputable reporting that directly attributes the facts to that official source. Casualty figures are official and time-stamped.
Curated, not exhaustive. Reporting delays, safety restrictions and limited information from occupied territories mean that some attacks will not appear. A report can also be delayed until an official account is available.
Finished editions, coarse locations. This is not a live map: each edition covers a completed 24-hour window, and a report appears only after Ukrainian authorities have made it public themselves. Exact coordinates appear only if the authorities have disclosed a location; otherwise the map shows the district or city. Casualty figures are preliminary, time-stamped (“as of …”) and corrected as official updates arrive.
Overlapping official windows. An oblast’s 24-hour tally can cover a strike this site already reported on its own the previous morning, hours before that tally was published. Each card keeps the figure its official source stated, so an edition’s daily total is the sum of the official reports it contains and can overlap the edition before it. Multi-day totals on the map subtract the overlap, so every victim is counted once.
No money passes through the app. Every “Support” button is a direct external link to an established fund (UNITED24, Superhumans, Voices of Children and others), matched to the kind of recovery or relief work involved. These links support each fund’s broader work and are not earmarked for the people or locations in a specific report.
“Support the project” is separate from the funds. The Ko-fi link in the footer covers only the project’s own running costs — hosting, subscriptions and maintenance. It is not a fundraiser for victims, it is not connected to any of the funds above, and the project is not run for profit.
Thank you for staying with the people behind these numbers, photographs and reports.
The most helpful thing you can do right now takes ten seconds: share this report so more people see it.
A new report is published every morning — come back tomorrow.