VIINA
VIINA: Violent Incident Information from News Articles on the 2022 Russian Invasion of Ukraine
Install / Use
/learn @zhukovyuri/VIINAREADME
VIINA 2.0 / Violent Incident Information from News Articles
2022 Russian Invasion of Ukraine
(territorial control)
(events)
VIINA/ВІЙНА/ВОЙНА/WAR 2.0 is a near-real time multi-source event data system for the 2022 Russian Invasion of Ukraine. These data are based on news reports from Ukrainian and Russian media, which were geocoded and classified into standard conflict event categories through machine learning. In addition to raw events, VIINA also includes data on territorial control, at the level of individual populated places.
These data are GIS-ready, with temporal precision down to the minute. Each observation is accompanied by full source information, text and URLs.
VIINA is updated daily, and is freely available for use by students, journalists, policymakers, and everyday researchers under an Open Database License (ODbL).
The most recent versions these data are available as a comma-delimited-text (csv) files within the following compressed ZIP archives:
- Data/control_latest_2022.zip | Territorial control daily status for 2022 (GeoNames locations)
- Data/control_latest_2023.zip | Territorial control daily status for 2023 (GeoNames locations)
- Data/control_latest_2024.zip | Territorial control daily status for 2024 (GeoNames locations)
- Data/control_latest_2025.zip | Territorial control daily status for 2025 (GeoNames locations)
- Data/control_latest_2026.zip | Territorial control daily status for 2026 (GeoNames locations)
- Data/kontrol_latest_2022.zip | Territorial control daily status for 2022 (KATOTTH locations)
- Data/kontrol_latest_2023.zip | Territorial control daily status for 2023 (KATOTTH locations)
- Data/kontrol_latest_2024.zip | Territorial control daily status for 2024 (KATOTTH locations)
- Data/kontrol_latest_2025.zip | Territorial control daily status for 2025 (KATOTTH locations)
- Data/kontrol_latest_2026.zip | Territorial control daily status for 2026 (KATOTTH locations)
- Data/event_info_latest_2022.zip | Raw event reports for 2022 (locations, dates, urls, headlines)
- Data/event_info_latest_2023.zip | Raw event reports for 2023 (locations, dates, urls, headlines)
- Data/event_info_latest_2024.zip | Raw event reports for 2024 (locations, dates, urls, headlines)
- Data/event_info_latest_2025.zip | Raw event reports for 2025 (locations, dates, urls, headlines)
- Data/event_info_latest_2026.zip | Raw event reports for 2026 (locations, dates, urls, headlines)
- Data/event_labels_latest_2022.zip | Event reports for 2022, labeled by actor and tactic (from BERT model)
- Data/event_labels_latest_2023.zip | Event reports for 2023, labeled by actor and tactic (from BERT model)
- Data/event_labels_latest_2024.zip | Event reports for 2024, labeled by actor and tactic (from BERT model)
- Data/event_labels_latest_2025.zip | Event reports for 2025, labeled by actor and tactic (from BERT model)
- Data/event_labels_latest_2026.zip | Event reports for 2026, labeled by actor and tactic (from BERT model)
- Data/event_1pd_latest_2022.zip | De-duplicated event reports and labels for 2022 ("one-per-day" filter)
- Data/event_1pd_latest_2023.zip | De-duplicated event reports and labels for 2023 ("one-per-day" filter)
- Data/event_1pd_latest_2024.zip | De-duplicated event reports and labels for 2024 ("one-per-day" filter)
- Data/event_1pd_latest_2025.zip | De-duplicated event reports and labels for 2025 ("one-per-day" filter)
- Data/event_1pd_latest_2026.zip | De-duplicated event reports and labels for 2026 ("one-per-day" filter)
Note that each event data release includes both raw event reports (event_info, event_labels) and a simplified, de-duplicated data file (event_1pd). The latter uses a "one-per-day" filter to remove potential duplicate event reports, by treating multiple event reports of the same type (i.e. same combination of actor and tactic labels) in the same populated place on the same day as a single unique event.
Previous data versions are available by request (email me).
Also included are tessellated geometries of Ukrainian populated places, which were used to create some of the maps on this site. These can be matched to the territorial control data by the variable geonameid (control* datasets) or kod (kontrol* datasets):
- Data/gn_UA_tess.geojson (N = 33,141 populated places)
- Data/katotth_UA_tess.geojson (N = 29,724 populated places)
For additional information on VIINA (1.0) and illustrative analyses, see:
- Zhukov, Yuri (2023). "Near-Real Time Analysis of War and Economic Activity during Russia’s Invasion of Ukraine." Journal of Comparative Economics 51 (4): 1232-1243 (doi.org/10.1016/j.jce.2023.06.003). Offprint available here.
Please cite VIINA 2.0 data as:
- Zhukov, Yuri and Natalie Ayers (2023). "VIINA 2.0: Violent Incident Information from News Articles on the 2022 Russian Invasion of Ukraine." Cambridge, MA: Harvard University. (https://github.com/zhukovyuri/VIINA, accessed [DATE]).
Corrections, feedback welcome:
Yuri M. Zhukov. Associate Professor, School of Foreign Service, Georgetown University. ymz2-at-georgetown-dot-edu. zhukovyuri.github.io.
Learn more about VIINA:
- Territorial control data and sources
- Event data sources
- Event data geocoding
- Event data classification model
- Event data variable names
Territorial Control Data

VIINA data on territorial control are based on four sources:
- VIINA event reports on territorial control
- Polygon map layers from DeepStateMap (Ukraine)
- Polygon map layers from Institute for the Study of War (U.S.)
- Crowdsourced control maps from Wikipedia
In cases where these data sources disagree, a "majority vote" rule is used to determine whether a populated place is under the control of Ukrainian forces, Russian forces, or is being actively contested between the two. If these "votes" are evenly split, ties are broken in favor of DeepStateMap.
Note that Institute for the Study of War (ISW) territorial control data are updated less frequently than the other three sources.
Territorial control data are available for two sets of geographic units.
The first (control) includes full set of Ukrainian populated places in the GeoNames gazetteer (N = 33,141), with feature_code's beginning in PPL*.
The second (kontrol) uses Ukraine's national register of administrative divisions, KATOTTH (N = 29,724), which can be more easily merged with official government statistics.
Each territorial control dataset includes the following fields:
geonameid(incontrol*datasets only): Numeric ID of populated place (can be linked to geometries in gn_UA_tess.geojson)kod(inkontrol*datasets only): KATOTTH code of populated place (can be linked to geometries in katotth_UA_tess.geojson)date: Date of map update (YYYYMMDD)status_wiki: Reported control status (UA/RU/CONTESTED), from Wikipedia crowdsourced mapsstatus_boost: Reported control status (UA/RU/CONTESTED), from Wikipedia "boosted" by VIINA event reportsstatus_dsm: Reported control status (UA/RU/CONTESTED)
Related Skills
node-connect
333.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
333.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.0kCommit, push, and open a PR
Security Score
Audited on Mar 23, 2026
