Typhoon Kalmaegi, known in the Philippines as Typhoon Tino, was a strong, deadly and extremely impactful tropical cyclone that affected portions of the central Philippines, particularly in Cebu, causing freshwater flooding due to record-breaking rains. It later struck Central Vietnam as one of the strongest typhoons on record in the area during early November 2025. The deadliest typhoon to strike the Visayas since Typhoon Rai in 2021, Kalmaegi is the twenty-fifth named storm and eleventh typhoon of the 2025 Pacific typhoon season.

Kalmaegi originated from an area of convection on October 30. The following day, it was later classified as a tropical depression as the Joint Typhoon Warning Center (JTWC) issued a Tropical Cyclone Formation Alert (TCFA) at 02:00 UTC. At 12:00 UTC, the Japan Meteorological Agency (JMA) upgraded the system to a tropical storm and assigned it the name Kalmaegi, as environmental conditions became increasingly favorable for development. The JTWC followed suit at 21:00 UTC, also designating it as a tropical storm. The system entered the Philippine Area of Responsibility (PAR) at 05:30 PHT on November 2 (21:30 UTC on the previous day) and was named Tino by the Philippine Atmospheric, Geophysical, and Astronomical Services Administration (PAGASA). At 12:00 UTC, the JMA upgraded Kalmaegi to a severe tropical storm. By 03:00 UTC on November 3, PAGASA, the JTWC, and the JMA all upgraded the system to typhoon status, citing a highly favorable environment for rapid intensification.

Tropical Cyclone Wind Signal No. 4, indicating potential winds of , was raised in numerous areas. Kalmaegi generated strong winds and flooding that left at least 269 people dead, 523 injured and 113 others missing in the Philippines, mostly in Cebu, with 13 additional fatalities in Thailand and six more in Vietnam.

Meteorological history

Kalmaegi originated from an area of strong convection that developed on October 30, located about east-southeast of Yap. Satellite imagery showed cycling deep convection over a poorly organized low-level circulation center (LLCC). The disturbance was embedded in a favorable environment for tropical cyclogenesis, with low wind shear and warm sea surface temperatures (SSTs). On the following day, the JMA classified the system as a tropical depression as its LLCC slowly consolidated. The JTWC noted that the depression remained in an environment conducive for further development, characterized by light vertical wind shear and warm SSTs. Around 05:00 PHT (21:00 UTC on the previous day) on November 1, PAGASA also classified the system as a tropical depression.

The JTWC issued a TCFA at around 02:00 UTC on November 1, citing a high probability of further development as the system moved west-northwestward. The JTWC noted a broad low-level circulation center (LLCC) with convection concentrated north of the center and some curved banding features. Favorable environmental conditions persisted, supported by good poleward outflow. As the LLCC gradually consolidated and convective banding wrapped around its northern semicircle, the system began tracking northwestward along the southwestern edge of a subtropical ridge. At 06:00 UTC, the JMA noted that, while the system remained in a favorable environment, the limited organization of its structure caused it to maintain its intensity for several hours. The JTWC later designated the system as 31W at 09:00 UTC. At around 12:00 UTC, the JMA upgraded 31W to a tropical storm, assigning it the name Kalmaegi. The JTWC observed a symmetric central dense overcast (CDO) enveloping the LLCC and described the system as compact as it tracked along the southern periphery of a subtropical ridge located to the northeast. By 21:00 UTC, the JTWC also classified Kalmaegi as a tropical storm, citing an expanding CDO and a highly favorable environment for further intensification. The storm later entered the PAR at 05:30 PHT on November 2 (the day before at 21:30 UTC) and was given the local name Tino. Satellite imagery showed robust radial outflow and intense central convection, with the deepest convection concentrated over the northern and western semicircles.

At 17:00 PHT (09:00 UTC), PAGASA upgraded Kalmaegi to a severe tropical storm. Alt URL The JMA noted a brief slowdown in intensification before the system resumed strengthening. According to the JTWC, deep convective bursts developed over the center, with a banding feature forming to the north. Microwave imagery showed a small, forming eye and strong convection displaced slightly to the south, indicating increasingly favorable conditions for further intensification. Three hours later, the JMA also upgraded Kalmaegi to a severe tropical storm. The JTWC noted two distinct clusters of deep convection forming an oblong-shaped CDO. By 18:00 UTC, two lobes became apparent: the southeastern lobe was centered over the low-level circulation and served as the primary region of deep convection, while the northwestern lobe exhibited strong poleward outflow. At 03:00 UTC on November 3, the JTWC upgraded Kalmaegi to a typhoon, citing a consistently favorable environment and strong outflow supported by trade winds. Multispectral satellite imagery showed a compact core with deep convection wrapping closely around the center. At the same time, the JMA and PAGASA also upgraded the system to a typhoon when it was approximately north-northeast of Sonsorol. Alt URL The JTWC later noted that deep convection wrapped around the core but an eye failed to develop due to persistent northeasterly wind shear, despite otherwise favorable conditions.

On November 4, Kalmaegi intensified into a Category 2-equivalent typhoon before making landfall in Silago, Southern Leyte at around 00:00 PHT (16:00 UTC). It then weakened back into a Category 1 typhoon due to land interaction. The system went on to make three additional landfalls in Borbon, Cebu, Sagay, Negros Occidental, and San Lorenzo, Guimaras at 05:10 PHT (21:10 UTC), 06:40 PHT (22:40 UTC), and 11:10 PHT (03:10 UTC), respectively. The repeated landfalls caused Kalmaegi to slightly weaken and slow as it moved into the Iloilo Strait. Alt URL At 13:20 PHT (05:20 UTC), Kalmaegi made its fifth landfall over Iloilo City. It then made a sixth landfall in Magsaysay in the Cuyo Archipelago at 19:30 PHT (11:30 UTC). At 04:10 PHT (20:10 UTC) on November 5, Kalmaegi made its seventh landfall over Batas Island in Taytay, Palawan, followed by an eighth landfall at 04:40 PHT (20:40 UTC) over El Nido, Palawan. Subsequently, Kalmaegi emerged over the South China Sea, where it began reorganizing under favorable oceanic and atmospheric conditions, with satellite imagery showing improved structure and strengthening convection. It rapidly intensified under favorable conditions, and the JTWC upgraded the storm into a Category 3-equivalent typhoon as a broad region of diffluent outflow developed and a ragged eye formed. The JMA soon followed suit and upgraded Kalmaegi into a very strong typhoon. The JTWC, on November 6, noted that Kalmaegi began to gradually weaken on approach to Vietnam due to northeasterly wind shear, although the environment remained marginally favorable, and satellite imagery continued to show a well-defined eye. Later that day, Kalmaegi moved inland over the provinces of Gia Lai and Đắk Lắk in southern Central Vietnam, with its center crossing near the northern part of Sông Cầu in Đắk Lắk. Subsequent interaction with the mountainous terrain rapidly disrupted the typhoon's structure, prompting the JTWC to issue its final warning at 15:00 UTC as it moved west-northwestward. At 18:00 UTC, the JMA downgraded the system to a severe tropical storm. Three hours later, the storm was downgraded again into a tropical storm before fully dissipating on November 7.

Two stations in Vietnam recorded the lowest sea-level atmospheric pressure during Typhoon Kalmaegi's impact lower than 975 hPa. An Nhơn weather station, located in Gia Lai province, recorded 973.2 hPa, and Quy Nhon weather station, also in Gia Lai province, recorded 967 hPa.

Preparations Philippines Highest Tropical Cyclone Wind Signal

TCWS# Luzon Visayas Mindanao4Calamian Islands, Cuyo Islands, Extreme Northern Portion of PalawanCapiz, Guimaras, Iloilo, Central and Southern Portions of Antique, Southern Portion of Aklan, Extreme Northern Portion of Negros Oriental, Northern Portion of Negros Occidental, Bantayan Islands, Northern Portion of Cebu, Northern Portion of Bohol, Camotes Islands, Central and Southern Portion of Leyte, Southern Leyte, Extreme Southeastern Portion of Eastern SamarBucas Grande Islands, Dinagat Islands, Siargao Islands3Northern Portion of Palawan, Southwestern Portion of MasbateRest of Aklan, Rest of Antique, Central Portion of Negros Occidental, Northern Portion of Negros Oriental, Central Portion of Bohol, Central Portion of Cebu, Biliran, Rest of Leyte, Southern Portion of Eastern SamarSurigao del Norte2Cagayancillo Islands, Central Portion of Palawan, Romblon, Southern Portion of Occidental Mindoro, Southern Portion of Oriental Mindoro, Central Portion of MasbateRest of Negros Occidental, Central Portion of Negros Oriental, Rest of Bohol, Rest of Cebu, Siquijor, Central and Southern Portions of Samar, Central Portion of Eastern SamarNorthern Portion of Surigao del Sur, Northern Portion of Agusan del Norte, Northern Portion of Agusan del Sur, Camiguin1Lubang Islands, Rest of Occidental Mindoro, Rest of Oriental Mindoro, Rest of Palawan, Southern Portion of Marinduque, Southwestern Portion of Quezon, Albay, Burias Island, Rest of Masbate, Sorsogon, Ticao IslandRest of Negros Oriental, Northern Samar, Rest of Eastern Samar, Rest of SamarRest of Surigao del Sur, Central Portion of Agusan del Sur, Rest of Agusan del Norte, Northern Portion of Bukidnon, Misamis Oriental, Northern Portion of Misamis Occidental, Northern Portion of Zamboanga del Norte,

At 11:00 PHT (03:00 UTC) on November 2, PAGASA issued Tropical Cyclone Wind Signal No. 1, indicating winds of after at least 36 hours, over Eastern Samar, Dinagat Islands, Siargao Island, and Bucas Grande Island. Alt URL Six hours later, seven more provinces across the Visayas and Mindanao were added under Signal No. 1. At 23:00 PHT (15:00 UTC), Guiuan, Salcedo, and Mercedes in Eastern Samar, alongside Siargao Island and Bucas Grande Island, were raised to Signal No. 2, indicating winds of after at least 24 hours, while additional areas were also placed under Signal No. 1. Alt URL By 05:00 PHT on November 3 (21:00 UTC on November 2), Signal No. 2 was extended to eleven more provinces. Alt URL