ADVERTISEMENT

How the 2025 'habagat' compares with past southwest monsoon onslaughts

Published Jul 29, 2025 01:26 pm
(Mark Balmores/Manila Bulletin)
(Mark Balmores/Manila Bulletin)
Intense to torrential rainfall from July 20 to 23, fueled by the tropical cyclone-enhanced southwest monsoon (habagat), was comparable to some of the most notable habagat events in recent history, particularly in 2012, 2013, 2018, 2021, and 2024, data from the Philippine Atmospheric, Geophysical and Astronomical Services Administration (PAGASA) showed.
PAGASA senior weather specialist Remedios Ciervo said during a climate forum on Tuesday, July 29, that the 2025 habagat, driven by Severe Tropical Storm Crising (Wipha), Tropical Storm Dante (Francisco), and Typhoon Emong (Co-may), brought 845.6 millimeters of rain as recorded in Subic Bay, Zambales, from July 20 to 23.
Based on PAGASA data, this ranks as the fifth most intense habagat episode among recent notable southwest monsoon events in terms of rainfall.
July 2025 rainfall exceeds normal
Between July 1 and 28, 10 PAGASA stations recorded rainfall totals exceeding 1,000 millimeters, well above their normal averages for July.
Subic Bay had the highest rainfall at 1,798.6 millimeters, significantly more than its normal 456.5 millimeters.
Abucay, Bataan, a newly established station, followed with 1,651.6 millimeters.
Baguio City recorded 1,607.8 millimeters, more than twice its average of 772.7 millimeters.
Iba, Zambales registered 1,423.5 millimeters, exceeding its normal 857.3 millimeters.
Benguet State University in Benguet recorded 1,371.8 millimeters compared to its normal 700.1 millimeters, while Don Mariano Marcos Memorial State University in Bacnotan, La Union, also a new station, had 1,294.3 millimeters.
Sangley Point in Cavite recorded 1,270 millimeters, well above its average of 456.7 millimeters.
Science Garden in Quezon City reported 1,221.8 millimeters, more than double its average of 516.6 millimeters.
Dagupan City in Pangasinan recorded 1,153.5 millimeters, which is also more than twice its normal 532.7 millimeters.
Meanwhile, Matulid in Bulacan logged 1,016 millimeters, exceeding its usual July average of 477.4 millimeters.
Notable events
In comparison, the years 2012, 2013, 2018, 2021, and 2024 also experienced destructive habagat episodes, most of which were intensified by tropical cyclones.
According to PAGASA, the 2013 habagat remains the most intense in recent history.
In 2012, Typhoon Haikui enhanced the southwest monsoon, dumping 1,007.4 millimeters of rain at Quezon City’s Science Garden monitoring station over three days from Aug. 6 to 8.
In 2013, Tropical Storm Maring lingered near northeast Batanes from Aug. 17 to 21, resulting in 1,120.2 millimeters of rainfall at PAGASA’s Sangley Point station.
The 2018 habagat event was boosted by three tropical cyclones—Henry, Inday, and Josie—producing 1,097.2 millimeters of rain at Cubi Point, Subic Bay from July 15 to 23.
In 2021, Typhoon Fabian enhanced the monsoon, with 885.2 millimeters of rain recorded in Baguio City between July 15 and 26.
In 2024, Super Typhoon Carina fueled the habagat that brought 771.6 millimeters of rainfall over Baguio City from July 22 to 26.

Related Tags

PAGASA HABAGAT SOUTHWEST MONSOON HEAVY RAINFALL TORRENTIAL RAINS
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.