Every marker is a real place. Every number refers to a person.
Between the day of 19 July and the morning of 20 July, Russian missile, drone and bomb strikes killed twenty-four people and injured at least 134 across Odesa, Kharkiv, Zaporizhzhia, Donetsk, Kherson, Sumy and Mykolaiv oblasts. A missile strike on a civilian cargo ship off Odesa killed ten of its crew, a missile hit a Nova Poshta postal terminal near Kharkiv, killing four, and guided bombs on Zaporizhzhia killed three, among them an 11-year-old girl. Some of the day's casualties — in Kharkiv, Kherson and Sumy — also appear in the previous edition and are counted once in multi-day totals. Figures are official but preliminary.
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 20 July, Russia attacked Ukraine with 2 Kh-59/69 guided air-launched missiles from occupied Crimea and 94 attack drones (Shahed-type, including jet-powered variants, Gerbera, Italmas, "Banderol" loitering munitions and "Parodiya" decoys), launched from Kursk, Millerovo and Oryol in Russia and from occupied Donetsk and Gvardiiske in Crimea. The Ukrainian Air Force reported that air defence shot down or suppressed 81 drones as of 08:00, while one missile and nine attack drones struck at nine locations and one missile failed to reach its target — a far lighter attack than the mass ballistic strike of the night before (Ukrainian Air Force, via the kpszsu Telegram channel, on the morning of 20 July; figures preliminary, the attack still ongoing at the time of reporting).
Verified by the UN Human Rights Monitoring Mission (OHCHR): in June 2026 alone, at least 293 civilians were killed and 1,990 injured in Ukraine — the deadliest month for civilians since April 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.