Home » Asia » Thailand » Pai » Pai Canyon
Pai Canyon

Pai Canyon

Pai Canyon, located in northern Thailands Mae Hong Son province, offers stunning landscapes and a unique hiking experience. Known for its narrow, winding trails and steep drop-offs, it provides adventure for those who enjoy exploring nature.

Pai
Share to Friends
Natural Landmark

About This Attraction

Pai Canyon, located in northern Thailands Mae Hong Son province, offers stunning landscapes and a unique hiking experience. Known for its narrow, winding trails and steep drop-offs, it provides adventure for those who enjoy exploring nature. The best time to visit is during the cooler months from November to February, when the temperatures are more comfortable for outdoor activities.

The canyon is easily accessible by a short drive from Pai town, making it a popular destination for both tourists and locals. Visitors should wear sturdy shoes and bring plenty of water, as the trails can be challenging. For those interested in capturing the perfect photo, sunset views from Pai Canyon are particularly spectacular. Remember to check local weather conditions before your visit to ensure a safe and enjoyable experience.

Location Details

Address Thung Yao, Pai District, Mae Hong Son 58130, Thailand

Visitor Information

Pricing & Ratings

Ticket Prices

Adult Free
Child Free
Student Free
Senior Free

Ratings

Overall Rating
8.5/10
Crowd Level
5.0/10

Opening Hours & Booking

Open

Days Everyday
Hours 24 hours
Seasonality All year round

Booking

Booking Required? No

Nearby Attractions

Showing 10 of 100 attractions
Miles Kilometers

Pai Hot Springs

Natural Hot Springs

Pai Hot Springs is a popular destination located near the town of Pai in northern…

8.5/10
Learn More

Namtok Mae Yen

Waterfall

A serene waterfall accessible via a scenic jungle trek.

8.5/10

The Land Split

Natural Phenomenon

Natural geological split with farm and refreshments.

8.5/10

Memorial Bridge

Historical Bridge

Historic WWII-era bridge over Pai River.

8.5/10

The World War II Memorial Bridge

Historical Landmark

Historic bridge built during WWII, offering scenic views.

8.5/10

Bamboo Bridge (Boon Ko Ku So)

Scenic Walkway

A scenic bamboo bridge over rice fields.

8.5/10

Mae Yen Waterfall

Waterfall

A scenic waterfall reached by a 3-hour jungle trek.

8.5/10

Love Strawberry Pai

Tourist Attraction

A strawberry-themed farm and cafe with scenic views.

7.5/10

Pai Land Split

Natural Attraction

Natural gorge formed by seismic activity, offering scenic views and local snacks.

8.5/10

Pam Bok Waterfall

Waterfall

A serene waterfall surrounded by cliffs, ideal for swimming.

8.5/10
"; } // Initialize modal controls const initModalControls = function() { console.log('Initializing modal controls'); const modal = document.getElementById('attraction-modal'); const closeBtn = document.querySelector('.attraction-modal-close'); if (closeBtn) { closeBtn.addEventListener('click', function() { modal.style.display = 'none'; document.body.style.overflow = ''; }); } window.addEventListener('click', function(event) { if (event.target === modal) { modal.style.display = 'none'; document.body.style.overflow = ''; } }); // Make attraction cards clickable const attractionCards = document.querySelectorAll('.attraction-card'); console.log('Found ' + attractionCards.length + ' attraction cards'); attractionCards.forEach(card => { card.addEventListener('click', function(e) { openModalWithCardData(this); }); }); }; // Function to open modal with card data const openModalWithCardData = function(card) { // Get data from hidden div const data = card.querySelector('.attraction-full-data'); if (!data) { console.error('No attraction data found in card'); return; } const modal = document.getElementById('attraction-modal'); if (!modal) { console.error('Modal element still not found after creation attempt'); return; } // Helper function to safely get element text function getElementText(selector) { const element = data.querySelector(selector); return element ? element.textContent : ''; } try { // Basic Info document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name'); document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full'); document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full'); // Reset all containers to hidden ['attraction-modal-hours-container', 'attraction-modal-price-container', 'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => { const container = document.getElementById(id); if (container) container.style.display = 'none'; }); // Rating const ratingText = getElementText('.attraction-rating-full'); if (ratingText) { const ratingValue = parseFloat(ratingText); if (!isNaN(ratingValue)) { const ratingValueEl = document.getElementById('attraction-modal-rating-value'); const ratingFillEl = document.getElementById('attraction-modal-rating-fill'); if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10'; if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%'; } } // Show the modal modal.style.display = 'block'; document.body.style.overflow = 'hidden'; // Prevent background scrolling console.log('Modal opened successfully'); } catch (error) { console.error('Error opening modal:', error); } }; // Try to create the modal const created = createModal(); console.log('Modal created:', created); // If not created (already exists), initialize the controls if (!created) { initModalControls(); } // Also initialize distance toggle const distanceToggle = document.getElementById('distance-unit-toggle'); if (distanceToggle) { distanceToggle.addEventListener('change', function() { const showKm = this.checked; // Update toggle labels const labels = document.querySelectorAll('.toggle-label'); if (labels.length >= 2) { labels[0].style.opacity = showKm ? '0.5' : '1'; labels[1].style.opacity = showKm ? '1' : '0.5'; } // Update all distance displays document.querySelectorAll('.nearby-attraction-card').forEach(card => { const kmEl = card.querySelector('.distance-km'); const miEl = card.querySelector('.distance-mi'); if (kmEl && miEl) { kmEl.style.display = showKm ? 'inline' : 'none'; miEl.style.display = showKm ? 'none' : 'inline'; } }); }); } });
Scroll to Top