Every marker is a real place. Every number refers to a person.
Between the day of 21 July and the morning of 22 July, Russian missile, guided-bomb, drone and artillery strikes killed 12 people and injured at least 66 across Zaporizhzhia, Kharkiv, Donetsk, Kherson, Odesa, Kyiv and Sumy oblasts. Guided aerial bombs hit an ordinary nine-storey apartment building in Zaporizhzhia, killing three and injuring 13; two women were killed in the village of Ruska Lozova in Kharkiv Oblast; a strike on a civilian car in Znamenivka in Donetsk Oblast killed two; and overnight drone strikes killed a woman in Odesa Oblast and another in Kherson.
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 22 July, Russia attacked Ukraine with one Iskander-M ballistic missile and three Kh-59/69 guided air-launched missiles, both from occupied Crimea, along with 216 attack drones — Shahed-type (including jet-powered variants), Gerbera, Italmas and "Parodiya" decoy drones — launched from Bryansk, Oryol, Millerovo and Primorsko-Akhtarsk in Russia and from occupied Donetsk and Hvardiiske in Crimea. The Ukrainian Air Force reported that air defence shot down or suppressed all three Kh-59/69 missiles and 204 of the drones (207 targets in all) as of 08:30, while the ballistic missile and 12 strike drones hit 12 locations, with debris falling at seven more (Ukrainian Air Force, via the kpszsu Telegram channel, on the morning of 22 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.