Every marker is a real place. Every number refers to a person.
Between the day of 20 July and the morning of 21 July, Russian missile, guided-bomb, drone and artillery strikes killed fourteen people and injured at least 103 across Dnipropetrovsk, Odesa, Kharkiv, Donetsk, Zaporizhzhia, Kherson and Sumy oblasts. A guided aerial bomb hit a five-storey residential building in Pavlohrad — the first such strike on the city — killing two and injuring 18, including two children; a missile struck a civilian enterprise in Odesa Oblast, killing three workers; and guided bombs killed four across Donetsk Oblast. One of the day's casualties in Kherson also appears in the previous edition and is 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 21 July, Russia attacked Ukraine with 58 strike drones — Shahed-type (including jet-powered variants), Gerbera, Italmas, "Banderol" loitering munitions and "Parodiya" decoy drones — launched from Kursk and Oryol in Russia and from occupied Donetsk and Hvardiiske in Crimea. The Ukrainian Air Force reported that air defence shot down or suppressed 46 of them as of 08:00, while eight strike drones hit targets at seven locations (Ukrainian Air Force, via the kpszsu Telegram channel, on the morning of 21 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.