{
  "id": "deepstate-occupied-vs-recaptured",
  "title": "The gap: territory occupied by Russia vs liberated by Ukraine, km²",
  "description": "Russia was running roughly 13 km² occupied for every 1 liberated through 2024–25, before the gap narrowed again in early 2026.",
  "unit": "square kilometres (km²)",
  "date_range": "Jan 2023 — present",
  "topic": "territory",
  "license": "CC-BY-4.0",
  "license_url": "https://creativecommons.org/licenses/by/4.0/",
  "page_url": "https://visua.no/en/charts/deepstate-occupied-vs-recaptured/",
  "dataset_url": "https://visua.no/data/deepstate-occupied-vs-recaptured.csv",
  "meta_url": "https://visua.no/data/deepstate-occupied-vs-recaptured.meta.json",
  "datawrapper_id": "gcKpZ",
  "chart_png_url": "https://datawrapper.dwcdn.net/gcKpZ/full.png",
  "supabase_view": "chart_deepstate_occupied_vs_recaptured_monthly",
  "cadence": "Monthly (month-end snapshot)",
  "last_updated": "2026-06-30",
  "key_points": [
    "The chart shows territorial gains by Ukraine (blue) and Russia (red). The gap between the two lines is the net result: when occupied (red) runs far above liberated (blue), Russia is taking ground faster than Ukraine can win it back. It is calculated based on the data, mapped by <a href=\"https://visua.no/en/charts/deepstate-occupied-vs-recaptured/#chp3-source\">Deepstate Map</a>. ",
    "Ukraine retakes some territory in most months, but since its summer 2023 counteroffensive, those recaptures have stayed far below Russia's monthly gains. A gap began to narrow in 2026.",
    "Scope is territory inside Ukraine's internationally recognised borders. Crimea and the pre-2022 LPR/DPR footprint are excluded so the series isolates post-2022 movement; Ukraine's 2024 Kursk incursion (Ukrainian-held Russian territory) is a separate ledger and is excluded entirely."
  ],
  "source": {
    "key": "deepstate",
    "name": "DeepState Map",
    "short_name": "DeepState",
    "url": "deepstatemap.live",
    "description": "What it shows\nDeepState is a Ukrainian OSINT project publishing an interactive map of the Russo-Ukrainian war, updated daily. The map distinguishes occupied, liberated, and contested (grey-zone) territory.\n\nWhat it's based on\nThe territorial control depicted on the map is based on geolocated footage, open-source reports, community submissions, and direct communication with Ukrainian units.\n\nWho's behind it\nIt is created and maintained by NGO DeepstateUA, which has employees and a volunteer team of over 100 people. The founders of the project are Roman Pohorilyi and Ruslan Mykula. \n\nAlignment to the sides of the war\nThroughout the full-scale war, DeepState positions itself as a fact-based project. The map has partnerships with the Ukrainian Ministry of Defence and General Staff, and the project also has a closed map solution for the Ukrainian defence forces. DeepState has publicly stated that during Ukrainian offensive operations, it delays map updates for operational-security reasons. Yet it has contradicted the official position of the General Staff and spoken out publicly about Russian advances that the General Staff hadn't communicated prior.\n\nGeneral data risks and usefulness\nThe map data — like any source heavily based on OSINT — tends to be a lagging indicator.",
    "coverage": "April 2022 — present",
    "cadence": "Continuous · Snapshotted daily ~06:00 UTC",
    "citation": "DeepState. (2026). DeepState Map. https://deepstatemap.live.",
    "shared_points": []
  },
  "processing": [
    {
      "n": "01",
      "title": "Snapshot",
      "desc": "For each completed calendar month, take the month-end snapshot — DeepState's last map of that month — and fetch its full GeoJSON polygon, not just a headline number. The raw daily map isn't kept; only the cleaned monthly polygon is stored, as the record of the exact geometry this chart was built from."
    },
    {
      "n": "02",
      "title": "Clean",
      "desc": "Normalise the raw snapshot into a tidy table: validate the geometry, deduplicate, and key each polygon to its month-end snapshot and capture time."
    },
    {
      "n": "03",
      "title": "Compare two months",
      "desc": "Compare each month-end polygon with the previous month’s, in PostGIS: land Russia newly holds counts as taken by Russia, land it no longer holds as liberated by Ukraine. Areas are true (geodesic) km², about 0.06% from DeepState’s own figure."
    },
    {
      "n": "04",
      "title": "Exclude baseline",
      "desc": "Work from the post-24 Feb 2022 occupied zone only — Crimea and the pre-2022 LPR/DPR footprint are excluded so the series shows only what is moving. Ukraine’s 2024 Kursk incursion and other territory outside Ukraine’s borders are dropped."
    },
    {
      "n": "05",
      "title": "Round & publish",
      "desc": "Round to a sensible precision, write a one-row-per-period view, and refresh the Datawrapper chart."
    }
  ],
  "data_dictionary": [
    {
      "name": "month",
      "type": "text",
      "unit": "YYYY-MM",
      "desc": "Calendar month, keyed to the month-end snapshot. Series starts Jan 2023 (still diffs against its Dec 2022 predecessor); the 2022 mobile-war months are excluded."
    },
    {
      "name": "occupied_km2",
      "type": "number",
      "unit": "km²",
      "desc": "Territory Russia newly occupied this month. Positive; plotted as the upper line. True (geodesic) km²."
    },
    {
      "name": "recaptured_km2",
      "type": "number",
      "unit": "km²",
      "desc": "Territory Ukraine retook this month. Positive; plotted as the lower line — both lines run upward, so the two tempos compare directly. occupied_km2 − recaptured_km2 = the month’s net change."
    }
  ],
  "citation": {
    "in_text": "P. Krasnomovets (2026)",
    "full": "P. Krasnomovets (2026). \"The gap: territory occupied by Russia vs liberated by Ukraine, km².\" Processed from DeepState Map. Retrieved from https://visua.no/en/charts/deepstate-occupied-vs-recaptured/",
    "bibtex": "@misc{krasnomovets2026deepstateoccupiedvsrecaptured,\n  author = {Krasnomovets, P.},\n  title  = {The gap: territory occupied by Russia vs liberated by Ukraine, km²},\n  year   = {2026},\n  source = {DeepState Map},\n  url    = {https://visua.no/en/charts/deepstate-occupied-vs-recaptured/}\n}"
  },
  "contact": "pavlo@visua.no",
  "issues_url": "https://github.com/krasnomovets/visua-pipeline/issues"
}
