visua.no Ukraine in open data

Ukraine in open data. Visual, documented, auto-updated.

Air war

Ukrainian Air Force is no longer reporting the full scope of the missile attacks

Lowest estimate of the number of missiles Russia launched and Ukraine shot down.

What you should know about this chart

  • After the reporting change, the Ukrainian Air Force often published neither the number of missiles launched nor the number intercepted during August 2026. Most reports now give interceptions only. From August 2026 until further notice these figures are a floor: the real scale of the strikes is higher. See the editorial changelog for details.
  • The chart shows how many missiles of all types Russia launched at Ukraine and how many of those were neutralised from October 2022 until the last complete month, based on Ukrainian Air Force reports on the official Telegram channel. The width of the red band on the chart shows the number of missiles that went through air defence.
  • The number of missiles is a low-end estimate, as it draws on reports about the major missile and drone attacks. Individual launches outside the big overnight attacks may not be reported at all. Air defence is not the Air Force alone. Units under other commands bring down drones and missiles too, and their tallies are not in these figures.
  • "Neutralised" means the missile did not reach its target: it was either destroyed or knocked off course by electronic warfare.
  • July 2026 was the heaviest missile month of the war so far: 463 launched. Both ballistic and cruise launches hit or neared record levels in the same month.

About the source

Ukrainian Air Force reports, compiled by Petro Ivaniuk

kaggle.com/datasets/piterfm/massive-missile-attacks-on-ukraine

What it is — A record of Russian air attacks on Ukraine: what was launched, of which type, from where, and how much of it did not reach a target. It runs from October 2022 to the present.

Where the numbers come from — Following every major air attack, the Ukrainian Air Force posts a report on its official Telegram-channeldetailing the weapons detected, tracked, intercepted, or knocked off by electronic warfare. Those reports are the original source. Petro Ivaniuk, a Ukrainian data scientist, compiles them into a dataset, which is openly available on Kaggle.

What it counts — It counts missiles and drones that were detected, tracked, and neutralised by Ukrainian Air Force units. The numbers of drones and missiles are a low-end estimate, as it draws on reports about the major missile and drone attacks. Individual launches outside the big overnight attacks may not be reported at all. Air defence is not the Air Force alone. Units under other commands bring down drones and missiles too, and their tallies are not in these figures.

How accurate is it — It is a lower-end estimate. The numbers are definitely imprecise in most cases, but they are useful to see the overall trend. On the one hand, the Ukrainian Air Force has an incentive to inflate the number of intercepted targets. On the other hand, they have an interest in accurate statistics because they rely on weapons supplies from Western partners. The public perception of the number of strikes among Ukrainians also plays a role. A good illustration is that in early August, due to a shortage of interceptor missiles for Patriot systems, the Air Force published a report showing zero interceptions out of 24 launched ballistic missiles. Ultimately, they made the decision to stop publishing statistics regarding ballistic missiles altogether.

Retrieved on
2026-08-31
Coverage
October 2022 — present
Update cadence
Weekly
Citation
Ivaniuk, P. Massive Missile Attacks on Ukraine [dataset]. Kaggle. Compiled from Ukrainian Air Force reports.

How we processed the data

  1. 1 Load the published dataset We download the current dataset and check its columns. If the structure has changed (it did a few times over the years), the processing is stopped.
  2. 2 Group weapons into types Each row names a specific model of a drone or missile. We group those into ballistic, cruise (subsonic), cruise (supersonic), aeroballistic, and Shahed-type drones. A model we have no rule for stops the load rather than being quietly dropped.
  3. 3 Set aside the tactical fleet Reconnaissance drones, short-range loitering munitions, and glide bombs are excluded. These charts are about long-range strike.
  4. 4 Add up by month Launches are summed per calendar month. The current month is left out until it ends. An attack is counted in the month it began. The weapons used in the attack that started at 18:00 on 31 July 2026 and ended at 09:30 the next day are counted in July statistics.

Changelog

Editorial changes

  • 2026-08-13

    A change in reporting by the Ukrainian Air Force. Its spokesperson confirmed on 13th of August that it would no longer report ballistic missile launches and interceptions in after-attack updates. The last report to state a concrete number of Russian ballistic missiles was published on Aug. 8. The spokesperson said that the ballistic missiles' launches would still be present in the monthly summaries, but not the interceptions, reported The Kyiv Independent. So the launched statistics would be unaffected in our chart, but the neutralised field would be dragged down by the absence of reported interceptions.

  • 2026-09-02

    After the reporting change, the Ukrainian Air Force often published neither the number of missiles launched nor the number intercepted during August 2026. Most reports now give interceptions only. From August 2026 until further notice, these figures are a floor: the real scale of the strikes is higher.

Data dictionary

Columns in the downloadable CSV — the exact output of this chart’s processed view. Periods without a usable upstream snapshot are absent rows, never interpolated or carried forward.

ColumnTypeUnit / formatDescription
month text YYYY-MM The completed calendar month. The current, partial month is excluded.
Launched number missiles Missiles of all types detected and tracked over Ukraine that month.
Neutralised number missiles Did not reach the target: destroyed or knocked off course by electronic warfare.

The full dataset carries more fields than we use, including launch site, target and per-attack notes. The columns above are the ones these charts are built on.

Reuse this work

You’re free to

  • Republish the chart on your own site, in print, in a paper.
  • Restyle the chart — change colours, fonts, layout.
  • Remix the data with other sources to build something new.
  • Use the chart commercially. <mark>Make sure you check the terms of primary data source — {source} publishes under its own terms.</mark>

The only ask

  • Credit the original source (Ukrainian Air Force) and the processed dataset (this site).
  • Link back to this page when republishing online.
  • Don’t imply Ukrainian Air Force or this site endorses your republication.

All charts and processed datasets on this site are released under Creative Commons Attribution 4.0 (CC-BY 4.0). The underlying source data is licensed by its respective provider — Ukrainian Air Force publishes under its own terms.

Citations

Please cite both this processed dataset and, most importantly, the original Ukrainian Air Force source. The Ukrainian Air Force's work should be recognised. Two-part citations look like this:

In-text

Ukrainian Air Force reports, compiled by Petro Ivaniuk (2026), processed by visua.no

Full citation

Ukrainian Air Force reports, compiled by Petro Ivaniuk (2026). "How many missiles Russia launches every month" [chart]. Processed by Pavlo Krasnomovets, visua.no. Data as of 31 August 2026. https://visua.no/en/charts/attacks-ua-missiles/

BibTeX

@misc{ukrainianairforcereportscompiledbypetroivaniuk2026attacksuamissiles,
  author       = {Ukrainian Air Force reports, compiled by Petro Ivaniuk},
  title        = {How many missiles Russia launches every month},
  year         = {2026},
  note         = {Processed by Pavlo Krasnomovets, visua.no},
  howpublished = {\url{https://visua.no/en/charts/attacks-ua-missiles/}},
  urldate      = {2026-08-31}
}

Download

Everything used to produce this chart. The CSV and PNG come straight from Datawrapper; the processed series and source data are linked from the pipeline repository.

Embed code — responsive iframe

Iframe

<iframe title="Ukrainian Air Force is no longer reporting the full scope of the missile attacks" aria-label="Line chart" id="datawrapper-chart-3WolO" src="https://datawrapper.dwcdn.net/3WolO/" scrolling="no" frameborder="0" loading="lazy" style="width: 0; min-width: 100% !important; border: none;" height="400" data-external="1"></iframe>

Use the unversioned dwcdn.net/3WolO/ path — the daily refresh always serves the latest version. Full snippet from Datawrapper →

For scripts & agents

Every chart is built to have .csv and .meta.json siblings at a stable URL — no auth, no rate limits for reasonable use. Pages are plain HTML, so the methodology above is readable without JavaScript.

  • Dataset (CSV)

    https://visua.no/data/attacks-ua-missiles.csv

    Latest full series. Stable URL — re-fetch daily, content updates in place.

  • Metadata (JSON)

    https://visua.no/data/attacks-ua-missiles.meta.json

    Schema, source, processing steps, key points, license. Machine-readable version of this page.

  • Site index for agents

    https://visua.no/llms.txt

    Plain-text index of every chart, dataset URL, and methodology page on the site.

Questions, corrections, source ideas

Using this chart in a story or a paper and something’s unclear? Spotted an error? Know a data source worth tracking? I read (almost) everything — usually same-day.