ADVERTISEMENT

Local factory ends 2025 with slight gains despite export weakness

Published Jan 2, 2026 11:01 am  |  Updated Jan 2, 2026 03:31 pm
Philippine manufacturing activity eked out a marginal expansion in December as domestic demand recovered, providing reprieve for the sector battered by a months-long downturn and an escalating corruption probe into infrastructure projects.
The S&P Global manufacturing purchasing managers’ index rose to 50.2 in the final month of last year from 47.4 in November, according to a report released on Friday, January 2.
While the reading sits just above the 50-point threshold that separates growth from contraction, it marks the first improvement in operating conditions since August. The rebound follows November’s reading, which represented the sharpest deterioration in the sector’s health in more than four years.
The recovery was driven primarily by a renewed intake of new work, ending a three-month streak of declining orders.
S&P Global noted that while the pace of growth was modest, it was the most pronounced since April. This domestic resilience helped offset a continued slump in foreign appetite for Philippine goods. The seasonally adjusted export orders index fell further into contraction territory, posting its steepest decline in 15 months as global demand softened.
Despite the uptick in orders, the manufacturing heartland continues to face structural bottlenecks. Factory output remained in contraction for a fourth consecutive month—the longest such losing streak since 2021—as firms struggled to ramp up production lines fast enough to match the new flow of requests.
Logistics hurdles also persisted, with manufacturers reporting longer lead times for raw materials due to year-end port congestion and disruptive weather patterns.
The mismatch between rising orders and stagnant production led to a buildup in backlogs, prompting some firms to resume purchasing activity for the first time in a quarter.
While the labor market remained under pressure, the rate of job losses slowed significantly from November. Recent data from the Philippine Statistics Authority showed the national unemployment rate stood at five percent in October, with 2.54 million Filipinos out of work.
Price pressures showed signs of firming, though they remain within manageable levels. Manufacturers reported higher raw material costs and sought to pass those expenses on to consumers, leading to a pickup in output price inflation.
Even so, the rise in selling prices remains below long-term averages. This aligns with broader cooling in the economy; headline inflation averaged 1.6 percent through the first 11 months of 2025, comfortably below the central bank’s target range of two percent to four percent.
Business confidence for the year ahead remains positive, supported by expectations of new product launches and the commencement of delayed projects. However, the degree of optimism dipped slightly from a one-year high reached in November. Economists warned that the recovery remains fragile and heavily dependent on the domestic market.
“The improvement was tepid across the sector, and its sustainability will largely depend on whether demand can be maintained and further bolstered,” said Maryam Baluch, an economist at S&P Global.
With export markets showing persistent weakness, the Philippine industrial outlook is increasingly tethered to the government's ability to navigate political uncertainty and maintain internal spending momentum.
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.