Villa Mahabhirom: From 35 to 89

Villa Mahabhirom antique teak villa at dusk, Chiang Mai — 35 to 89 PageSpeed case study
Case Study CWV Passed Boutique Luxury Villa

From 35 to 89 —
Core Web Vitals fixed
for a 5‑Star Teak Villa Resort

One of Chiang Mai’s most extraordinary boutique properties was throttled by a 9.2MB hero image, 214 uncompressed photographs, and a decade-old theme. We fixed every metric in 6 days — zero design changes, zero downtime.

Villa MahabhiromClient
Luxury HospitalityIndustry
Chiang Mai, ThailandLocation
WordPress + LiteSpeedPlatform
6 DaysTimeline
35Before
89After

Mobile PageSpeed  ·  +54 Points

Results at a Glance

Every Metric. Fixed.

Verified via PageSpeed Insights + CrUX
Performance Score
35 / 100
89
+54 Points ↑
Passing
LCP — Largest Contentful Paint
5.8 seconds
1.9s
−67% Faster ↑
Good
TBT — Total Blocking Time
610 ms
140ms
−77% Reduced ↑
Good
CLS — Cumulative Layout Shift
0.412
0.05
−87.9% Stable ↑
Excellent
Speed Index
9.8 seconds
2.8s
−71% Faster ↑
Good
Core Web Vitals
FAILED
PASSED
Google Approved ↑
CWV Pass
6 Days
Timeline
Zero
Design Changes
Zero
Downtime
+54 pts
PageSpeed Gain
5
Property Rating
About the Client

Villa Mahabhirom

A collection of antique Lanna teak houses — some structures more than 200 years old — carefully reassembled into one of Chiang Mai’s most distinctive boutique stays. The property’s 200+ photographs do the selling; the website is the front desk.

Set beside a lily pond near Chiang Mai’s Old City, Villa Mahabhirom attracts a global audience searching for “luxury villa Chiang Mai” from Tokyo, Sydney, Berlin, and London — often on hotel Wi-Fi most resorts would call unusable. Their site runs WordPress on shared LiteSpeed hosting — a capable stack crippled by zero caching and uncompressed assets.

The OTA leak. On a boutique property with limited inventory, every booking handed to an OTA at 18–25% commission directly cuts the margin that keeps 200-year-old teak standing. And a slow site pushes every undecided guest one click closer to an OTA.

Villa Mahabhirom antique teak villa at dusk, Chiang Mai
5-Star Boutique Villa Resort
Client Snapshot
Client
Villa Mahabhirom
Industry
Boutique Luxury Hospitality
Location
Chiang Mai, Thailand
Platform
WordPress + LiteSpeed
Property
14 antique teak villas
Timeline
6 Days
Result
35 → 89 · CWV Pass
The Problem

A 200-Year-Old Property.
A 2005-Grade website.

When we ran an independent PageSpeed audit, the mobile results told the story: a photography-first property was being buried by its own photography — and three third-party embeds finishing its visitors off.

pagespeed.web.dev/analysis — villamahabhirom.com · mobile ASSESSMENT: FAILED
MetricScoreGoogle TargetStatus
Performance Score35 / 10090+ Failing
Largest Contentful Paint5.8 seconds≤ 2.5s Critical
Total Blocking Time610 ms≤ 200ms Critical
Cumulative Layout Shift0.412≤ 0.1 Poor
Speed Index9.8 seconds≤ 3.4s Critical
Core Web VitalsFAILEDPass Failed

Audited with Google PageSpeed Insights · Lighthouse · Chrome UX Report (CrUX)

The Diagnosis

5 Root Causes.
All fixable.

Server + code level only
  • Root Cause of LCP 5.8s
    9.2MB DSLR Hero Image — No Compression, No WebP

    The hero photograph was uploaded straight from the photographer’s export folder — full-resolution JPEG, no compression, no preload, no modern format. On hotel Wi-Fi abroad, guests waited nearly six seconds for the first pixel of the property to appear.

    LCP 5.8s · limit ≤ 2.5s
  • Root Cause of CLS 0.412
    Masonry Gallery Grid Without Image Dimensions

    The teak villa gallery loaded as a pure masonry grid with no width or height attributes anywhere. As photographs arrived in random order, the layout reflowed visibly — the page literally jumped under visitors’ thumbs as they tapped the booking button.

    CLS 0.412 · limit ≤ 0.1
  • Root Cause of TBT 610ms
    Google Maps, TripAdvisor & Booking Iframes Blocking Load

    Three heavyweight third-party embeds executed synchronously on every page view: a full interactive Google Map (2.4MB, loaded even by guests who never scrolled to Location), a TripAdvisor badge widget, and the booking engine iframe — together monopolising the main thread for over half a second.

    TBT 610ms · limit ≤ 200ms
  • Root Cause of FCP 3.1s
    7 Google Font Weights + Legacy Theme CSS Render-Blocking

    The theme requested seven font weights (only three were ever rendered) plus its full legacy stylesheet before any text could paint. No font-display: swap, no critical CSS — guests on slow connections stared at a blank white screen for three seconds.

    FCP 3.1s · limit ≤ 1.8s
  • Root Cause of Speed Index 9.8s
    No Caching Layer — PHP Rendering Every Request Live

    The site ran PHP 7.4 with no page cache, no OPcache, no object cache: every hit rebuilt the HTML from scratch. Time To First Byte alone averaged 2.2 seconds for international visitors — before a single asset even began downloading.

    SI 9.8s · limit ≤ 3.4s
The Solution

6 Days. Zero Design Changes.
Zero downtime.

Every fix was implemented at the server and code level. The century-old aesthetic — the fonts, the photography, the layout — stayed exactly as the owners intended.

Day 1 – 2
Audit, Staging & the Image Pipeline
  • Full technical audit — Lighthouse, WebPageTest (Mumbai + Frankfurt + Tokyo nodes)
  • Staging environment configured (zero risk to live site)
  • 214 images batch-converted to WebP, resized to display dimensions — hero 9.2MB → 380KB
  • Explicit width & height added to every gallery image (CLS fix)
  • LCP hero preloaded with <link rel="preload"> on key templates
Day 3 – 4
Render Path, Fonts & Caching Stack
    • Critical CSS generated for header, hero and above-fold layout
    • Google Fonts subset: 7 weights → 3, self-hosted with font-display: swap
    • PHP upgraded 7.4 → 8.2 with OPcache enabled
    • LiteSpeed Cache configured — full-page cache with booking/availability exclusions
    • Object cache enabled; autoloaded wp_options trimmed from 11MB to 1.4MB
Day 5
Third-Party Embeds — Facades & Deferral
  • Click-to-load facade for Google Maps — 40KB static preview replaces the 2.4MB embed
  • TripAdvisor widget deferred to browser idle time
  • Booking engine iframe lazy-loaded and connected asynchronously
  • GA4 and Meta Pixel loaded only after first interaction
  • 2 unused plugin scripts loading globally on every page removed
Day 6 — Complete
Validation, Deployment & Handover
  • All fixes validated on staging — mobile throttling + real-device testing
  • Core Web Vitals pass confirmed via PageSpeed Insights + CrUX field data
  • Deployed to live with zero downtime
  • Full before/after report with PageSpeed screenshots delivered
  • Cache-warm automation configured so every visitor hits a cached page
The Results

Before vs. After — full comparison.

Drag the gold handle to compare the live PageSpeed audits, pixel for pixel.

PageSpeed Insights Mobile CWV Passed
89 Score
  • Largest Contentful Paint 1.9 s
  • Total Blocking Time 140 ms
  • Cumulative Layout Shift 0.05
  • Speed Index 2.8 s
  • First Contentful Paint 0.8 s

Core Web Vitals Assessment: Passed — all metrics in the good range

PageSpeed Insights Mobile CWV Failed
35 Score
  • Largest Contentful Paint 5.8 s
  • Total Blocking Time 610 ms
  • Cumulative Layout Shift 0.412
  • Speed Index 9.8 s
  • First Contentful Paint 3.1 s

Core Web Vitals Assessment: Failed — multiple URLs need improvement

Metric Before After Improvement
Performance Score 35 / 100 89 / 100 +54 Points
Largest Contentful Paint 5.8 seconds 1.9 seconds −67% Faster
Total Blocking Time 610 ms 140 ms −77% Reduced
Cumulative Layout Shift 0.412 0.05 −87.9% Stable
Speed Index 9.8 seconds 2.8 seconds −71% Faster
Core Web Vitals FAILED PASSED Google Approved
Business Impact

What This Means in
Real Booking Terms

Direct Booking Rankings Strengthened

With CWV passing, Villa Mahabhirom competes for “luxury villa Chiang Mai” on merit again — queries with enormous booking intent and, crucially, zero OTA commission attached to them.

CWV = ranking signal
The Gallery Now Sells on Mobile

214 photographs are this property’s entire sales team. At 1.9s LCP, the candlelit teak pool villa appears in under two seconds — on a train in Tokyo or a sofa in Sydney, on middle-of-nowhere hotel Wi-Fi.

+20% Δ conversion / second
First Impression as Calm as the Courtyard

CLS of 0.05 means no more jumping text or shifting booking buttons under guests’ thumbs. The digital stillness finally matches the property at dusk — and premium conversion lives in exactly those details.

0.05 CLS — pixel-stable
OTA Commission Reclaimed

A fast, trustworthy direct site converts more bookings in-house. Every 10% shift from OTA to direct keeps 18–25% per night in the property’s pocket — compounding, forever, with no additional ad spend.

18–25% commission saved
Client Testimonial

In Their Own Words

Requested: personal experience at delivery
“Hafiz and team has helped me get my site back to loading quickly. We went massive pagespeed score also from a score of an F to an A on the GTMetrix scale that measures a website’s loading time and quality. This helps tremendously to keep our clients coming back! We appreciate that Hafiz and his team are always ready and available to help with all of our needs, including fixing bugs and site attacks as they come up. Hafiz has been communicative and professional and has delivered on every account. We recommend Hafiz for all of your site-based needs.”
MM LinkedIn Client – Thai Media Manager @  ·  Villa Mahabhirom
What Was Included

Services Used in This Project

10 Deliverables
WordPress Core Web Vitals Optimization
LCP (Largest Contentful Paint) Fix
CLS (Cumulative Layout Shift) Fix
TBT / INP Reduction
Google Font Subsetting & Optimization
Critical CSS Implementation
Embed Facades — Maps, TripAdvisor & Booking Engine
WebP Conversion — 214 Images Batch Optimized
LiteSpeed Caching Stack + PHP 8.2 Upgrade
Full Before/After Performance Report
Get Started

Is Your WordPress Site
Costing You Business?

We’ll run a free audit on your site and show you exactly what’s slowing it down — and what it’s costing you in traffic and revenue. No pitch. Just data.

Results in 5–7 Days Zero Design Changes Zero Downtime Full Before/After Report