Angelica Evans, Christina Harward, Daria Novikov, and George Barros with Nate Trotter
July 21, 2025, 5:30 pm ET
Click here to see ISW’s interactive map of the Russian invasion of Ukraine. This map is updated daily alongside the static maps present in this report.
Click here to see ISW’s interactive map of Ukraine’s offensive in Kursk Oblast.
Click here to see ISW’s 3D control of terrain topographic map of Ukraine. Use of a computer (not a mobile device) is strongly recommended for using this data-heavy tool.
Click here to access ISW’s archive of interactive time-lapse maps of the Russian invasion of Ukraine. These maps complement the static control-of-terrain map that ISW produces daily by showing a dynamic frontline. ISW will update this time-lapse map archive monthly.
Note: The data cut-off for this product was 12:15 pm ET on July 21. ISW will cover subsequent reports in the July 22 Russian Offensive Campaign Assessment.
Russian forces conducted a large-scale series of missile and drone strikes against Ukraine on the night of July 20 to 21 that included over 400 drones as Russia continues to launch significantly larger strike packages in June and July 2025 than in January to May 2025. The Ukrainian Air Force reported that Russian forces launched 426 Shahed-type strike drones and decoy drones from the directions of Bryansk and Oryol cities; Millerovo, Rostov Oblast; Shatalovo, Smolensk Oblast; and Primorsko-Akhtarsk, Krasnodar Krai.[1] The Ukrainian Air Force reported that Russian forces also launched five Kh-46 Kinzhal aeroballistic missiles from the airspace over Tambov Oblast; four Kalibr cruise missiles from the Black Sea; one Iskander-K cruise missile from Millerovo; and 14 Kh-101 cruise missiles from the airspace over Saratov Oblast. The Ukrainian Air Force reported that Ukrainian forces shot down and suppressed 200 Shahed-type drones and 203 decoy drones that Ukrainian air defense fire and electronic warfare (EW) downed all the missiles. The Ukrainian Air Force reported that 23 strike drones hit three locations and that drone debris fell in 12 locations. Ukrainian officials reported that Russian strikes damaged civilian and critical infrastructure in Ivano-Frankivsk, Kyiv, and Kharkiv oblasts.[2] Kyiv City Military Administration Head Timur Tkachenko reported that the Russian strike damaged the entrance to a metro station in the city.[3] Ukrainian President Volodymyr Zelensky stated that the Russian strikes injured 15 civilians and killed two.[4] Russia rarely launched over 200 drones per night between January and May 2025, and an overnight strike package consisting of over 400 drones — even if far below Russia’s latest record high of 728 drones in one strike package — demonstrates the dramatic shift in Russia’s ability to repeatedly launch larger-scale drone strikes in recent weeks since May 2025.
Ukraine’s Western partners pledged additional military and financial assistance to Ukraine during a virtual meeting of the Ukraine Defense Contact Group (the Ramstein format) on July 21. Ukrainian Defense Minister Denys Shmyhal announced that Germany will transfer five Patriot air defense systems to Ukraine in the near future and that Germany will also send 200,000 Gepard shells to Ukraine.[5] German Defense Minister Boris Pistorius also confirmed that Germany will send five Patriot air defense systems and necessary interceptors to Ukraine.[6] Shmyhal stated that Canada will contribute an unspecified amount toward financing Ukraine’s defense industrial base (DIB) via the “Danish model” (in which Ukraine’s partners buy Ukrainian-manufactured weapons for the Ukrainian military) and allocated 20 million CAD ($14.6 million) to Ukrainian tank maintenance. Shmyhal stated that the Netherlands allocated 200 million euros (roughly $234 million) to fund Ukrainian production of interceptor drones to counter Russian Shahed-type drones and 125 million euros (roughly $146 million) for F-16 fighter jet maintenance. Shmyhal stated that Norway also allocated one billion euros (roughly $1.67 billion) to fund Ukrainian drone purchases in 2025, including 400 million euros (roughly $468 million) specifically to purchase drones from Ukraine’s DIB.
British Defense Secretary John Healey announced during the Ukraine Defense Contact Group meeting on July 21 a “50-day drive” to arm Ukraine on the battlefield and help push Russian President Vladimir Putin to the negotiating table.[7] Healey noted that the group needs to seize on US President Donald Trump’s threat to impose “severe” 100 percent secondary tariffs on Russia’s trade partners if there is no peace settlement to end Russia’s war in Ukraine within 50 days from July 14.[8] ISW has consistently assessed that only significant Russian battlefield setbacks, enabled by timely and sufficient Western military assistance to Ukrainian forces, will force Putin to reconsider Russia’s ability to militarily defeat Ukraine and bring him to the negotiating table.[9] Such setbacks will not happen in a matter of weeks and will likely require several months or campaign seasons, assuming that the West commits to properly equipping and aiding Ukrainian forces to the point that Ukraine could successfully conduct such operations.
Ukrainian officials discussed Ukraine’s increasing defense industrial capacity amid ongoing European aid announcements. Ukrainian Defense Minister Denys Shmyhal stated that Ukraine’s defense industrial base (DIB) can accommodate an additional $6 billion in investments and that Ukraine could use these funds to produce more first-person view (FPV) and interceptor drones and long-range weapons.[10] Ukrainian President Volodymyr Zelensky stated that Ukraine intends to increase domestic defense production over the next six months.[11] Ukrainian Defense Procurement Agency Head Arzen Zhumadilov told Ukrainian television channel Kanal 24 that Ukraine has contracted with three companies, including one Ukrainian and one American company, to produce interceptor drones to counter Russian Shahed-type drones.[12] Zhumadilov stated that Ukraine’s DIB currently has the capacity to produce eight to 10 million FPV drones per year but that the Ukrainian government will only be able to fund the procurement of four to 4.5 million drones in 2025 due to budgetary constraints.
Ukraine officially proposed a third round of negotiations with Russia amid speculation in the Ukrainian and Russian informational spaces. Russian officials continue to feign interest in good-faith negotiations, despite failing to propose or agree to a third round of negotiations. Ukrainian President Volodymyr Zelensky stated on July 21 that Ukraine’s National Security and Defense Council Secretary Rustem Umerov recently proposed conducting a third round of negotiations between Ukraine and Russia in Istanbul, Turkey.[13] A source told Ukrainian outlet Suspilne on July 21 that Ukrainian and Russian delegations could meet in Istanbul as early as July 22 or 23.[14] Unspecified sources cited by Kremlin newswire TASS confirmed that Ukraine proposed a third round of negotiations to Russia and stated that negotiations may be held on July 24 or 25.[15] Kremlin Spokesperson Dmitry Peskov claimed on July 21 that Russia is in favor of conducting a third round of negotiations with Ukraine, that the Kremlin would announce when a date had been set, and that Russia’s delegation to the third round of negotiations would be the same delegation that attended previous Istanbul negotiations in May and June 2025.[16] Russia and Ukraine last met in Istanbul on June 2 and only concluded agreements about prisoner of war (POW) exchanges due to Russia’s refusal to provide Ukrainian negotiators with a memorandum of its terms for a peace settlement in advance of negotiations.[17] The Kremlin has since repeatedly claimed interest in a third round of negotiations as Russian officials have reiterated in June and July 2025 Russia’s long-standing demands that amount to Ukrainian capitulation.[18] Russia’s decision to send the same, mid-level negotiating team to the reported upcoming third round of negotiations indicates that Russia’s disinterest in peace negotiations is unchanged. ISW continues to assess that the Kremlin remains dedicated to protracting peace negotiations to support continued offensive operations in Ukraine and extract additional concessions from Ukraine and the West.[19]
Key Takeaways
We do not report in detail on Russian war crimes because these activities are well-covered in Western media and do not directly affect the military operations we are assessing and forecasting. We will continue to evaluate and report on the effects of these criminal activities on the Ukrainian military and the Ukrainian population and specifically on combat in Ukrainian urban areas. We utterly condemn Russian violations of the laws of armed conflict and the Geneva Conventions and crimes against humanity even though we do not describe them in these reports.
Ukrainian Operations in the Russian Federation
Fighting continued in Kursk Oblast on July 20 and 21.[20]
A Russian milblogger claimed that Ukrainian forces maintain limited positions near Novyi Put (east of Tetkino).[21]
Russian Supporting Effort – Northern Axis (Russian objective: Create defensible buffer zones in northern Ukraine along the international border and approach to within tube artillery range of Sumy City)
Ukrainian and Russian forces recently advanced in northern Sumy Oblast.
Assessed Ukrainian advances: Ukrainian military observer Kostyantyn Mashovets stated that Ukrainian forces seized Andriivka, Kindrativka, and Oleksiivka (all north of Sumy City) in the past two weeks (since about July 7).[22]
Assessed Russian advances: Geolocated footage published on July 20 and 21 indicates that Russian forces recently advanced in northeastern Kindrativka and southwest of Yablunivka (northeast of Sumy City).[23] A Russian milblogger claimed that Russian forces only maintain positions in a limited number of houses in Kindrativka.[24]
Unconfirmed claims: Mashovets stated that Ukrainian forces advanced to Novomykolaivka (northeast of Oleksiivka) in the past two weeks and that Russian forces recently advanced 150 to 200 meters near Yablunivka and Oleksiivka and toward Sadky (northeast of Sumy City).[25] Mashovets reported that Russian forces have advanced about 0.8 to one kilometer from the international border along both banks of the Volfa River near Bezsalivka (northwest of Sumy City near the international border).[26] A Russian milblogger claimed that Russian forces advanced in Varachyne (northeast of Sumy City).[27]
Russian forces conducted offensive operations in northern Sumy Oblast, including north of Sumy City near Oleksiivka and northeast of Sumy City near Varachyne, Yunakivka, and Sadky, on July 20 and 21.[28] Mashovets stated that Ukrainian forces are counterattacking in the Kostyantynivka-Volodymyrivka-Novomykolaivka-Oleksiivka area (north of Sumy City).[29]
A Russian milblogger claimed that Russian forces have not seized the entirety of Ryzhivka (southwest of Bezsalivka).[30]
Order of Battle: Mashovets stated that elements of the 76th Airborne (VDV) Division, reinforced by elements of the 51st and 137th VDV regiments (both of the 106th VDV Division), are operating in the Sumy direction.[31] Mashovets stated that elements of the 155th Naval Infantry Brigade (Pacific Fleet), 1443rd Motorized Rifle Regiment (reportedly of the 18th Motorized Rifle Division, 11th Army Corps [AC], Leningrad Military District [LMD]), and 30th Motorized Rifle Regiment (72nd Motorized Rifle Division, 44th AC, LMD) and an understrength battalion of the 200th Motorized Rifle Brigade (14th AC, LMD) are operating in the Andriivka-Kindrativka-Oleksiivka area. Mashovets reported that the Russian military command introduced elements of the 40th Naval Infantry Brigade (Pacific Fleet) into battle about a week and a half ago (about July 10) in the Andriivka-Kindrativka-Oleksiivka area as part of efforts to stabilize the situation. Mashovets stated that the Russian military command replenished the forward elements of the 11th and 83rd separate VDV brigades near Novomykolaivka and Yablunivka and recently reinforced the brigades with elements of the 1443rd Motorized Rifle Regiment. Mashovets stated that elements of the Russian 56th VDV Regiment (7th VDV Division) and 217th VDV Regiment (98th VDV Division) are operating near Bezsalivka.[32] Elements of the Smuglyanka Detachment are reportedly striking Ukrainian forces near Kindrativka and Andriivka, and elements of the 177th Naval Infantry Regiment (Caspian Flotilla) are reportedly striking Ukrainian forces near Pysarivka and Khotin (both north of Sumy City).[33] Elements of the 119th VDV Regiment (106th VDV Division) are reportedly operating near Beszalivka.[34] Elements of the 1427th Motorized Rifle Regiment (18th Machine Gun Artillery Division, 68th AC, Eastern Military District [EMD]) and 352nd Motorized Rifle Regiment (11th AC) are reportedly operating near Ryzhivka.[35] Elements of the 810th Naval Infantry Brigade (Black Sea Fleet) are reportedly operating in Sumy Oblast.[36]
Russian Main Effort – Eastern Ukraine
Russian Subordinate Main Effort #1 – Kharkiv Oblast (Russian objective: Push Ukrainian forces back from the international border with Belgorod Oblast and approach to within tube artillery range of Kharkiv City)
Russian forces continued offensive operations in northern Kharkiv Oblast on July 21 but did not advance.
Russian forces conducted offensive operations northeast of Kharkiv City near Vovchansk, Vovchanski Khutory, and Starytsya on July 20 and 21.[37] A Russian milblogger claimed that Ukrainian forces counterattacked near Vovchansk.[38]
The chief of staff of a Ukrainian drone battalion stated that Russian forces in northern Kharkiv Oblast are conducting motorized and infantry assaults and sometimes try to use heavy equipment.[39] The chief of staff stated that Russian forces are moving in smaller groups consisting of two people. An officer in a Ukrainian brigade operating in the Vovchansk direction reported that Russian forces are attacking in small groups on motorcycles and buggies.[40]
Order of Battle: The chief of staff of a Ukrainian drone battalion stated that elements of the Russian 79th Motorized Rifle Regiment (18th Motorized Rifle Division, 11th Army Corps [AC], Leningrad Military District [LMD]) are operating in northern Kharkiv Oblast.[41] Ukrainian military observer Kostyantyn Mashovets stated that elements of the 128th Motorized Rifle Brigade (44th AC, LMD) are operating in Vovchansk and in the Vovchanski Khutory direction.[42]
Russian forces continued offensive operations in the Velykyi Burluk direction on July 21 but did not advance.
A Russian milblogger claimed on July 21 that Russian forces conducted offensive operations northeast of Velykyi Burluk near Milove.[43] A Russian milblogger claimed that Ukrainian forces counterattacked near Milove.[44]
Order of Battle: Drone operators of the Russian Anvar Spetsnaz Detachment (possibly referring to the BARS-25 Anvar volunteer detachment) are reportedly operating in the Velykyi Burluk direction.[45]
Russian Subordinate Main Effort #2 – Luhansk Oblast (Russian objective: Capture the remainder of Luhansk Oblast and push westward into eastern Kharkiv Oblast and northern Donetsk Oblast)
Russian forces continued offensive operations in the Kupyansk direction on July 21 but did not advance.
Russian forces attacked toward Kupyansk itself, northeast of Kupyansk near Krasne Pershe and Stroivka, and north of Kupyansk near Kutkivka, Holubivka, Radkivka, and Kindrashivka on July 20 and 21.[46]
Russian forces continued offensive operations in the Borova direction on July 21 but did not advance.
Russian forces attacked northeast of Borova near Zelenyi Hai on July 20 and 21.[47]
Russian forces continued offensive operations in the Lyman direction on July 21 but did not make confirmed advances.
Unconfirmed claims: Ukrainian military observer Kostyantyn Mashovets stated that elements of the Russian 67th Motorized Rifle Division (25th Combined Arms Army [CAA], Central Military District [CMD]) recently advanced 1.5 kilometers toward Torske (east of Lyman) as part of efforts to reinforce elements of the 37th Motorized Rifle Regiment (67th Motorized Rifle Division, 25th CAA, CMD) that are currently partially isolated in Torske.[48]
Russian forces attacked northwest of Lyman toward Shandryholove, Serednie, and Drobysheve; north of Lyman near Novyi Myr, Karpivka, and Ridkodub; northeast of Lyman near Kolodyazi and Yampolivka; east of Lyman near Torske; and southeast of Lyman in the Serebryanske forest area on July 20 and 21.[49]
Order of Battle: Mashovets stated that elements of the Russian 2nd Motorized Rifle Division (1st Guards Tank Army [GTA], Moscow Military District [MMD]) are operating near Nove (north of Lyman).[50]
Russian Subordinate Main Effort #3 – Donetsk Oblast (Russian objective: Capture the entirety of Donetsk Oblast, the claimed territory of Russia’s proxies in Donbas, and possibly advance into Dnipropetrovsk Oblast)
Russian forces continued offensive operations in the Siversk direction on July 21 but did not make confirmed advances.
Unconfirmed claims: A Russian milblogger claimed that Russian forces advanced south of Vekhnokamyanske (east of Siversk).[51]
Russian forces attacked northeast of Siversk near Serebryanka and Hryhorivka, east of Siversk near Verkhnokamyanske, southeast of Siversk near Vyimka, and southwest of Siversk near Fedorivka on July 20 and 21.[52]
Order of Battle: Ukrainian military observer Kostyantyn Mashovets stated that elements of the Russian 6th, 123rd, and 127th motorized rifle brigades (all part of the 3rd Combined Arms Army [CAA], formerly 2nd Luhansk People’s Republic Army Corps [LNR AC], Southern Military District [SMD]) are operating near Hryhorivka, Verkhnokamyanske, and Vyimka.[53] Artillery elements of the 88th Motorized Rifle Brigade (3rd CAA) are reportedly striking Ukrainian positions in Pereizne (south of Siversk).[54]
Russian forces recently advanced in the Chasiv Yar direction.
Assessed Russian advances: Geolocated footage published on July 21 indicates that Russian forces recently advanced in western Bila Hora (south of Chasiv Yar).[55] A Russian milblogger claimed that elements of the Russian 77th Motorized Rifle Regiment (reportedly of the 7th Military Base, 49th CAA, SMD) participated in the seizure of Bila Hora.[56]
Unconfirmed claims: Mashovets stated that elements of the Russian 4th Motorized Rifle Brigade (3rd CAA, SMD) and elements of two unspecified regiments advanced up to one kilometer along the railway toward Oleksandro-Shultyne (just west of Bila Hora).[57] Russian milbloggers claimed that Russian forces advanced northwest and southwest of Bila Hora.[58]
Russian forces attacked south of Chasiv Yar near Bila Hora and Predtechyne on July 20 and 21.[59] A Russian milblogger claimed that Ukrainian forces counterattacked near Bila Hora and Oleksandro-Shultyne.[60]
Order of Battle: Drone operators of the Russian 98th Airborne (VDV) Division are reportedly striking Ukrainian positions in Chasiv Yar.[61]
Russian forces recently advanced in the Toretsk direction.
Assessed Russian advances: Geolocated footage published on July 20 indicates that Russian forces recently marginally advanced east of Rusyn Yar (northwest of Toretsk).[62]
Unconfirmed claims: Mashovets stated that elements of the Russian 242nd and 255th motorized rifle regiments (both of the 20th Motorized Rifle Division, 8th CAA, SMD) recently advanced 250 to 300 meters in the Popiv Yar-Poltavka and Novoolenivka-Rusyn Yar directions (all northwest of Toretsk).[63] Russian milbloggers claimed that Russian forces advanced further east of Rusyn Yar, southwest of Katerynivka (northwest of Toretsk), and southeast of Poltavka (northwest of Toretsk).[64]
Russian forces attacked in Toretsk itself; north of Toretsk near Dyliivka; northwest of Toretsk near Oleksandro-Kalynove, Yablunivka, Rusyn Yar, and Poltavka and toward Katerynivka and Pleshchiivka; west of Toretsk near Shcherbynivka; and southwest of Toretsk near Leonidivka and Romanivka on July 20 and 21.[65]
The deputy commander of a Ukrainian battalion operating in the Toretsk direction stated that Russian forces often attack without adequate food and water supplies.[66]
Order of Battle: The Russian Ministry of Defense (MoD) credited elements of the Russian 102nd Motorized Rifle Regiment (150th Motorized Rifle Division, 8th CAA) with the recent claimed seizure of Popiv Yar (northwest of Toretsk).[67] Mashovets stated that elements of the Russian 20th and 150 motorized rifle divisions are unsuccessfully attacking near Yablunivka and Oleksandro-Kalynove.[68] Drone operators of the 242nd Motorized Rifle Regiment (20th Motorized Rifle Division) and 39th Motorized Rifle Brigade (68th AC, Eastern Military District [EMD]) are reportedly operating near Popiv Yar.[69] Drone operators of the 56th Separate Spetsnaz Battalion (51st CAA, formerly 1st Donetsk People’s Republic [DNR] AC, SMD) are reportedly operating near Dachne (north of Toretsk), and elements of the 255th Motorized Rifle Regiment (20th Motorized Rifle Division) and 238th Artillery Brigade (8th CAA) are reportedly operating near Yablunivka.[70] Drone operators of the 33rd Motorized Rifle Regiment (20th Motorized Rifle Division) are reportedly operating in the Kostyantynivka (Toretsk) direction.[71]
Russian forces recently advanced south of Pokrovsk amid reports that the Russian military command is reinforcing its force grouping northeast of Pokrovsk.
Assessed Russian advances: Geolocated footage published on July 21 indicates that Russian forces recently advanced in eastern Zvirove and seized the remainder of Pishchane (both south of Pokrovsk).[72] Mashovets stated that elements of the Russian 30th Separate Motorized Rifle Brigade (2nd CAA, Central Military District [CMD]) and 1435th Motorized Rifle Regiment (likely comprised of mobilized personnel) recently advanced near Pishchane and Zvirove.[73]
Unconfirmed claims: Mashovets stated that elements of the Russian 15th Motorized Rifle Brigade (2nd CAA) recently advanced to the western outskirts of Udachne (southwest of Pokrovsk) and interdicted the T-0406 Pokrovsk-Mezheva highway.[74]
Russian forces attacked near Pokrovsk itself; northeast of Pokrovsk near Mayak, Volodymyrivka, Novotoretske, and Novoekonomichne; east of Pokrovsk near Myrnohrad; southeast of Pokrovsk near Lysivka; south of Pokrovsk near Zvirove and Novoukrainka; and southwest of Pokrovsk near Udachne on July 20 and 21.[75]
Mashovets stated on July 21 that the Russian military command recently redeployed elements of the Russian 1st and 9th motorized rifle brigades (both of the 51st CAA, SMD) to reinforce the Russian force grouping attacking north and northeast of Pokrovsk.[76] ISW last observed reports of the 1st Motorized Rifle Brigade operating near Toretsk in January 2025, and the brigade has likely been resting and reconstituting over the last six months.[77] Elements of the 9th Motorized Rifle Brigade have reportedly been operating in the Toretsk, Pokrovsk, and Novopavlivka direction over the last two months.[78] Mashovets stated that the Russian military command intends to leverage these units to intensify efforts to envelop Pokrovsk and that elements of the 2nd CAA have simultaneously intensified assaults south of Pokrovsk. ISW has recently observed a series of Russian advances northeast of Pokrovsk aimed at both enveloping Pokrovsk and creating the base of a salient to attack Ukraine’s fortress belt from the south.[79] The redeployment of elements of two brigades to the area indicates that the Russian military may be preparing to intensify assaults against Pokrovsk in the near future.
Order of Battle: The Russian MoD claimed that drone operators of the Russian Rubikon Center for Advanced Unmanned Technologies are striking Ukrainian positions near Balahan (immediately east of Myrnohrad).[80]
Russian forces continued offensive operations in the Novopavlivka direction on July 21 but did not make confirmed advances.
Unconfirmed claims: Mashovets stated that elements of the 35th Motorized Rifle Brigade (41st CAA, CMD) recently advanced 1.5 kilometers toward Muravka (northeast of Novopavlivka).[81] Russian milbloggers claimed that elements of the Russian 37th Motorized Rifle Brigade (36th CAA, EMD) and unspecified Russian Spetsnaz forces are advancing north of Voskresenka (southwest of Novopavlivka).[82] Another Russian milblogger claimed that Russian forces advanced southwest of Piddubne (southwest of Novopavlivka).[83]
Russian forces attacked toward Novopavlivka itself; southeast of Novopavlivka near Horikhove and Oleksiivka; south of Novopavlivka near Dachne and Zaporizhzhia and toward Filiya; and southwest of Novopavlivka near Yalta, Zirka, Piddubne, Myrne, Tovste, and Zelenyi Hai and toward Oleksandrohrad and Voskresenka on July 20 and 21.[84]
Order of Battle: Drone operators of the Russian 14th Spetsnaz Brigade (Russian General Staff’s Main Directorate [GRU]) are reportedly striking Ukrainian positions near Novoselivka (southwest of Novopavlivka).[85]
Russian forces continued offensive operations in the Velyka Novosilka direction on July 21 but did not advance.
Russian forces attacked northwest of Velyka Novosilka near Vilne Pole and Maliivka and toward Komyshuvakha and west of Velyka Novosilka near Zelene Pole, Temyrivka, and Novopil on July 20 and 21.[86]
Order of Battle: Drone operators of the Russian 14th Spetsnaz Brigade (GRU) are reportedly striking Ukrainian positions in Berezove (west of Velyka Novosilka).[87]
Russian Supporting Effort – Southern Axis (Russian objective: Maintain frontline positions, secure rear areas against Ukrainian strikes, and advance within tube artillery range of Zaporizhzhia City)
Russian forces continued offensive operations in the Hulyaipole direction on July 21 but did not advance.
Russian forces conducted offensive operations east of Hulyaipole near Malynivka on July 21.[88]
Order of Battle: Elements of the Russian 11th Air Force and Air Defense Army (Russian Aerospace Forces [VKS] and Eastern Military District [EMD]) are reportedly striking Ukrainian positions in Poltavka (east of Hulyaipole).[89]
Russian forces continued offensive operations in western Zaporizhia Oblast on July 21 but did not advance.
Russian forces attacked southwest of Orikhiv near Kamyanske and west of Orikhiv near Plavni on July 21.[90] A Russian milblogger claimed that Ukrainian forces are trying to counterattack near Kamyanske.[91]
Order of Battle: Drone operators of the Russian Smuglyanka Detachment are reportedly striking Ukrainian forces near Plavni and Orikhiv; elements of the 70th Motorized Rifle Regiment (42nd Motorized Rifle Division, 58th Combined Arms Army [CAA], Southern Military District [SMD]) are reportedly operating near Mala Tokmachka (southeast of Orikhiv); elements of the 108th and 247th airborne (VDV) regiments (both of the 7th VDV Division) are reportedly operating near Kamyanske; and elements of the Nemets group of the 291st Motorized Rifle Regiment (42nd Motorized Rifle Division) are reportedly operating in the Zaporizhia direction.[92]
Russian forces attacked in the Kherson direction, including on the islands in the Dnipro River, on July 20 and 21, but did not advance.[93]
Order of Battle: Artillery elements of the Russian BARS-33 Detachment (Russian Combat Army Reserve) are reportedly striking targets on the right (west) bank Kherson Oblast, and elements of the 61st Naval Infantry Brigade (Northern Fleet) are reportedly operating in the Kherson direction.[94]
Russian Air, Missile, and Drone Campaign (Russian Objective: Target Ukrainian military and civilian infrastructure in the rear and on the frontline)
See topline text for reports of Russian strikes against Ukraine.
Significant activity in Belarus (Russian efforts to increase its military presence in Belarus and further integrate Belarus into Russian-favorable frameworks)
Nothing significant to report.
Note: ISW does not receive any classified material from any source, uses only publicly available information, and draws extensively on Russian, Ukrainian, and Western reporting and social media as well as commercially available satellite imagery and other geospatial data as the basis for these reports. References to all sources used are provided in the endnotes of each update.
[1] https://t.me/kpszsu/38974
[2] https://www.facebook.com/watch/live/?ref=watch_permalink&v=773252865205784&rdid=FJ2p9JGauwX5UGv8 ; https://suspilne dot media/ivano-frankivsk/1071377-unaslidok-kombinovanoi-ataki-rf-v-ivano-frankivskij-gromadi-e-travmovani/ ; https://t.me/synegubov/15893; https://t.me/tkachenkotymur/1503; https://t.me/tkachenkotymur/1498 ; https://t.me/tkachenkotymur/1497 ; https://suspilne dot media/kyiv/1071381-odna-ludina-zaginula-sered-postrazdalih-e-ditina-naslidki-rosijskoi-ataki-kieva/; https://t.me/dsns_telegram/46380 ; https://armyinform.comdot ua/2025/07/21/udar-po-shesty-rajonah-kyyeva-zagynula-lyudyna-gorily-bagatopoverhivka-dytsadok-i-rynok/
[3] https://t.me/tkachenkotymur/1506; https://meduza dot io/en/feature/2025/07/21/see-the-aftermath-of-a-russian-strike-that-hit-kyiv-homes-and-a-metro-station-shelter
[4] https://x.com/ZelenskyyUa/status/1947193015874805776
[5] https://t.me/Denys_Smyhal/10886 ; https://armyinform.com dot ua/2025/07/21/denys-shmygal-rozpoviv-na-yaku-dopomogu-ukrayina-mozhe-rozrahovuvaty-pislya-ramshtajnu/
[6] https://www.rbc dot ua/rus/news/nimechchina-dopomozhe-iz-patriot-pistorius-1753097906.html
[7] https://www.pravda.com dot ua/eng/news/2025/07/21/7522743/
[8] https://isw.pub/UkrWar071425 ; https://www.pravda.com dot ua/eng/news/2025/07/21/7522743/ ; https://www.gov dot uk/government/news/uk-ramps-up-ukraine-military-support-with-150-million-of-vital-air-defence-and-artillery-ammunition-delivered-in-just-two-months
[9] https://isw.pub/UkrWar060725 ; https://isw.pub/UkrWar121924
[10] https://t.me/Denys_Smyhal/10885 ; https://suspilne dot media/1072035-ukraini-potribno-6-mlrd-abi-zakriti-progalinu-u-virobnictvi-ozbroen-smigal/ ; https://armyinform.com dot ua/2025/07/21/amerykanska-zbroya-ta-finansuvannya-glava-mou-rozpoviv-pro-shho-jshlosya-na-zasidanni-ramshtajnu/
[11] https://t.me/V_Zelenskiy_official/15204 ; https://t.me/V_Zelenskiy_official/15205 ; https://t.me/V_Zelenskiy_official/15206 ; https://www.president.gov dot ua/news/volodimir-zelenskij-predstaviv-novogo-ochilnika-ministerstva-99089
[12] https://24tv dot ua/droni-perehoplyuvachi-shahediv-skilki-droniv-mozhe-vigotovlyati_n2871357 ; https://suspilne dot media/1072067-ukraina-zakontraktuvala-droni-perehopluvaci-u-kilkoh-virobnikiv-sered-akih-e-ukrainskij/
[13] https://x.com/ZelenskyyUa/status/1947287078699503693; https://www.president.gov dot ua/news/finansuvannya-opk-vikoristannya-rosijskih-aktiviv-chlenstvo-99097; https://suspilne dot media/1072131-zelenskij-rozpoviv-detali-pro-majbutni-peregovori-z-rf-u-stambuli/
[14] https://suspilne dot media/1071649-ukraina-ta-rosia-mozut-provesti-novij-raund-peregovoriv-u-stambuli-vze-cogo-tizna-dzerelo/
[15] https://tass dot ru/politika/24570549
[16] https://tass dot ru/politika/24567875; https://t.me/tass_agency/326399; https://isw.pub/UkrWar051525;
[17] https://isw.pub/UkrWar060225
[18] https://isw.pub/UkrWar060325; https://isw.pub/UkrWar071525; https://isw.pub/UkrWar070325; https://isw.pub/UkrWar060425; https://isw.pub/UkrWar052025; https://isw.pub/UkrWar051325; https://isw.pub/UkrWar062125; https://isw.pub/UkrWar062025
[19] https://isw.pub/UkrWar05022025 ; https://isw.pub/UkrWar051325 ; https://isw.pub/UkrWar060125; https://isw.pub/UkrWar051725; https://isw.pub/UkrWar062625
[20] https://t.me/GeneralStaffZSU/26873 ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al
[21] https://t.me/rusich_army/24789
[22] https://t.me/zvizdecmanhustu/2877;
[23] https://t.me/Waryaz_we_are/253; https://x.com/richardzai38580/status/1947196511164764429; https://t.me/creamy_caprice/9625; https://t.me/skala425/625; https://x.com/Bielitzling/status/1946954017856168029
[24] https://t.me/severnnyi/4610
[25] https://t.me/zvizdecmanhustu/2877
[26] https://t.me/zvizdecmanhustu/2877
[27] https://t.me/wargonzo/27972
[28] https://t.me/GeneralStaffZSU/26873 ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/wargonzo/27972; https://t.me/severnnyi/4610
[29] https://t.me/zvizdecmanhustu/2877
[30] https://t.me/rusich_army/24789;
[31] https://t.me/zvizdecmanhustu/2877
[32] https://t.me/zvizdecmanhustu/2877
[33] https://t.me/dva_majors/75728; https://t.me/dva_majors/75733
[34] https://t.me/severnnyi/4618
[35] https://t.me/severnnyi/4618
[36] https://t.me/mod_russia/54855; https://t.me/RtrDonetsk/31501
[37] https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170; https://t.me/wargonzo/27972
[38] https://t.me/severnnyi/4610
[39] https://armyinform.com dot ua/2025/07/21/nastup-dvoh-kolon-zakinchyvsya-na-yihnij-terytoriyi-na-harkivshhyni-rosiyany-zrozumily-nedoczilnist-vykorystannya-broni/
[40] https://armyinform dot com.ua/2025/07/20/na-broni-ne-doyihaty-drony-j-artyleriya-zmusyly-okupantiv-peresidaty-na-moto-ataky/
[41] https://armyinform dot com.ua/2025/07/21/nastup-dvoh-kolon-zakinchyvsya-na-yihnij-terytoriyi-na-harkivshhyni-rosiyany-zrozumily-nedoczilnist-vykorystannya-broni/
[42] https://t.me/zvizdecmanhustu/2878
[43] https://t.me/dva_majors/75738
[44] https://t.me/severnnyi/4610
[45] https://t.me/RVvoenkor/96215
[46] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170; https://t.me/wargonzo/27972; https://t.me/Sladkov_plus/13649
[47] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170
[48] https://t.me/zvizdecmanhustu/2878; https://www.facebook.com/share/p/14GMaKfmT5h/
[49] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170; https://t.me/zvizdecmanhustu/2878
[50] https://t.me/zvizdecmanhustu/2878; https://www.facebook.com/share/p/14GMaKfmT5h/
[51] https://t.me/dva_majors/75738
[52] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al
[53] https://t.me/zvizdecmanhustu/2878 ; https://www.facebook.com/share/p/14GMaKfmT5h/
[54] https://x.com/richardzai38580/status/1947209353909747717; https://t.me/shock3OA/1532
[55] https://t.me/creamy_caprice/9629; https://t.me/RtrDonetsk/31492
[56] https://t.me/motopatriot78/39137; https://t.me/motopatriot78/39141
[57] https://t.me/zvizdecmanhustu/2879; https://www.facebook.com/share/p/14GMaKfmT5h/
[58] https://t.me/voenkorKotenok/66052 ; https://t.me/motopatriot78/39141
[59] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170; https://t.me/wargonzo/27972
[60] https://t.me/voenkorKotenok/66051
[61] https://x.com/richardzai38580/status/1947318796018180183; https://t.me/rodnaya98vdd/1778
[62] https://t.me/creamy_caprice/9626; https://t.me/b4_101/178 ; https://x.com/AudaxonX/status/1947001932242919525
[63] https://t.me/zvizdecmanhustu/2879
[64] https://t.me/boris_rozhin/173195 ; https://t.me/voenkorKotenok/66052 ; https://t.me/motopatriot78/39122
[65] https://t.me/GeneralStaffZSU/26873 ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al ; https://t.me/Khortytsky_wind/14170 ; https://t.me/dva_majors/75738 ; https://t.me/voenkorKotenok/66052 ; https://t.me/DnevnikDesantnika/31520
[66] https://www.youtube.com/watch?v=lnrp2S2L6qk ; https://armyinform.com dot ua/2025/07/21/yak-dushyty-targaniv-palczyamy-poblyzu-toreczka-pozycziyi-syl-oborony-shturmuyut-golodni-ta-poraneni-rosiyany/
[67] https://t.me/mod_russia/54859 ; https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-july-17-2025
[68] https://t.me/zvizdecmanhustu/2879
[69] https://t.me/nm_dnr/14065 ; https://t.me/nm_dnr/14060
[70] https://t.me/nm_dnr/14063 ; https://t.me/nm_dnr/14063
[71] https://t.me/dva_majors/75767
[72] https://x.com/Map_Hargoo/status/1947276953259512042 ; https://t.me/motopatriot78/39154
[73] https://t.me/zvizdecmanhustu/2879
[74] https://t.me/zvizdecmanhustu/2879
[75] https://t.me/GeneralStaffZSU/26873 ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al ; https://t.me/Khortytsky_wind/14170 ; https://t.me/dva_majors/75738
[76] https://t.me/zvizdecmanhustu/2879
[77] https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-january-2-2025 ; https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-january-30-2025
[78] https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-may-6-2025 ; https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-june-12-2025 ; https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-june-22-2025
[79] https://isw.pub/UkrWar070525
[80] https://t.me/tass_agency/326467
[81] https://t.me/zvizdecmanhustu/2879
[82] https://t.me/motopatriot78/39140 ; https://t.me/RVvoenkor/96212
[83] https://t.me/RVvoenkor/96212
[84] https://t.me/GeneralStaffZSU/26873 ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl ; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al ; https://t.me/Khortytsky_wind/14170 ; https://t.me/RVvoenkor/96212 ; https://t.me/dva_majors/75738
[85] https://t.me/voin_dv/16087
[86] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/Khortytsky_wind/14170
[87] https://t.me/voin_dv/16079
[88] https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl ; https://www.facebook.com/OperationalCommandSouth/posts/pfbid0XQ9EQKLpQWNwYK6vD74CeEskF7XiC4i3qG2QtyziPshZ26JK6Hjni4HiJwhtsDiZl
[89] https://t.me/voin_dv/16098
[90] https://t.me/GeneralStaffZSU/26873; https://t.me/dva_majors/75738
[91] https://t.me/DnevnikDesantnika/31540
[92] https://t.me/dva_majors/75734; https://t.me/dva_majors/75728; https://t.me/boris_rozhin/173221; https://t.me/dva_majors/75751; https://t.me/DnevnikDesantnika/31527
[93] https://t.me/GeneralStaffZSU/26873; https://www.facebook.com/GeneralStaff.ua/posts/pfbid02zs5b5yNGLA3CqdePMCUpvMEQqd4Av6t3WZ52cffsxxfgkpEwVQJbdba3Q8tdJZUZl ; https://www.facebook.com/OperationalCommandSouth/posts/pfbid0XQ9EQKLpQWNwYK6vD74CeEskF7XiC4i3qG2QtyziPshZ26JK6Hjni4HiJwhtsDiZl; https://www.facebook.com/GeneralStaff.ua/posts/pfbid0WN5NzNxa89NX8cz3SykRZk8wgwCqtAYqfPyVeBGHSCUaMvbDE7X2DbBFaYh1xQ8Al; https://t.me/dva_majors/75738
[94] https://t.me/SALDO_VGA/8582; https://t.me/dva_majors/75764; https://t.me/dva_majors/75772
Russian Offensive Campaign Assessment, July 21, 2025 – Institute for the Study of War
