ADVERTISEMENT

Excitement grows louder for '26 Tour of Luzon

Published Mar 27, 2026 12:05 am  |  Updated Mar 26, 2026 06:24 pm
EDITORS DESK
It must be the April heat, the burning sensation of the summer fever that keeps the tired legs going. Or perhaps the adrenaline — and oh boy, these gentlemen pack an extra dose to thread through the melting asphalt road, for 14 punishing stages.
It could be the prize, now exceeding ₱12 million, with the champion bringing home a paycheck worth seven figures, that pushes them further, not minding the toll, of pure blood and sweat, for a one-time bonanza.
Or the joy and fulfillment, of finishing a lap on the crescendo of livid fans tucked neatly on the borders of a two-way lane that flushes through the checkered flag.
What awaits is a rostrum for victors, and for the unlucky ones merely a brief rest wrapped as a reward after a hellish ride on the corridors of Luzon.
Reasons are aplenty — justified or bland — but these cyclists could never be bothered by whatever we say about the ridiculous things they do, and they endure, for 14 days. Some in awe, others baffled, but we are plainly spectators of human strength pushing the boundaries on a race that equally thrills and tortures the riders themselves.
Welcome to the 2026 Tour of Luzon.
Upping the ante from the eight stages last year, this edition offers 14 laps that stretch almost 2,000 kilometers across 13 provinces and five regions from April 29 to May 13.
Serving as a rather torrid appetizer is the Calatagan-Tagaytay Stage 1 carrying a total of 150.1 kms. From there, participants will travel north for the team time trial Stage 2 in Clark (43.4 kms), then a 145.4-kms sprinters' delight from New Clark City to Palayan City.
Stage 4 takes them from Palayan to Bayombong (165.8 kms); Stage 5 from Santiago City to Tuguegarao (130.6 kms); then the longest lap from Tuguegarao to Pagudpud for 228.8 kms of beating on rolling terrains.
Stage 7 is an individual time trial (22.9 kms) along the Pagudpud coastal roads highlighted by the scenic route on Patapat Bridge; Stage 8 is a 157.4-km ride from Pagudpud to Paoay, home of the famous St. Augustine Church; and the Laoag City to Candon Stage 9 (142.6 kms) which passes through the historic Vigan.
Stage 10 (131.2 kms) snakes through Candon up to the twisties on Bessang Pass; then Candon to the surfing town of San Juan, La Union Stage 11 (158.7 kms).
The last stages take the survivors from Agoo to Mangatarem (146.4 kms); a Lingayen-Lingayen ITT (20 kms); and the mountain finale from Lingayen to Baguio City via Kennon Road (177.8 kms).
Again, this two-week tournament will open our senses and satisfy our cravings for action in an arena that spans thousands of kilometers.
I cannot think of other sports that truly define fortitude magnified by vigor and raw power than cycling.
It is where the whiff of air and the splash of dust make us admire the speed of the peloton, the creases on the calves forcing us to wonder the pounding their legs have suffered, and the skin burned to the edges giving us, mere normal human beings, an unassailable badge of years of sacrifice built on determination.
For them, Tour of Luzon is more than a race. It is a finish line.
(Ramon Rafael Bonilla is the editor of Manila Bulletin's Sports section.)

Related Tags

Tour of Luzon SPORTS cycling
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.