At a Glance
| Mobile Performance Score | 57 | → | 92 | +61% |
| Mobile LCP | 14.1s | → | 2.1s | 85% faster |
| Desktop Performance Score | 84 | → | 100 | Perfect |
| Time to First Byte | 591ms | → | 28ms* | 95% faster |
| Frontend Size | 2,274 KB | → | 694 KB | 69% smaller |
| Total Assets | 138 files | → | 8 files | 94% fewer |
*Metrics in this article came from a local mirror copy of the website used for development, so this value is a little faster than a live site would be.
The Challenge
This was a WordPress website for a nonprofit retreat that was struggling under its own weight. On a slow mobile connection, pages took over 14 seconds to display meaningful content — well beyond the point where most visitors give up and leave.
The root causes were familiar but compounding. The site’s frontend was loading over 2 MB of JavaScript and CSS across 138 separate files. A feature-rich calendar plugin alone contributed roughly 800 KB to every page load. There was no page caching, no image optimization, and the theme’s CSS had accumulated significant dead weight over time.
The desktop experience was better but still sluggish, with a performance score of 84 and a 2.5-second Largest Contentful Paint. Server response times averaged nearly 600 milliseconds before a single byte of content reached the browser.
For an organization that depends on its website to connect with visitors, this kind of performance gap translates directly into missed connections and lost engagement.
The Approach
Rather than a ground-up rebuild, we took a systematic, iterative approach — making targeted changes and measuring the impact of each one. We started with an AI-based measurement of the impact of all plugins and themes across the site.
1. Theme CSS Optimization
We started with the theme itself, switching to a streamlined version with dead CSS removed. This single change cut CSS weight by 66% and immediately improved rendering speed.
2. Calendar Plugin Migration
The existing calendar plugins (The Event Calendar and The Event Calendar Pro) were the single largest contributor to page weight and server processing time. We migrated to a lighter alternative that could import the event data. This improved server response time by 54%, bringing Time to First Byte (TTFB) down to 306ms.
3. Homepage Content Cleanup
The homepage had accumulated hidden mobile-only blocks and a JavaScript-heavy testimonial carousel. We removed the hidden elements and replaced the heavy interactive blocks with simpler, more performant alternatives.
4. Responsive Image Optimization
The hero image — the single largest visual element on the page — was being served as a single large file regardless of device. We converted it to modern formats (AVIF and WebP) and configured the server to deliver appropriately sized versions for different viewport widths. Desktop LCP dropped 61% after this change.
5. Caching, Minification, and SEO Cleanup
We replaced the existing Yoast SEO plugin with a more efficient alternative (the migration was seamless as it imported all existing settings), then added a caching plugin and CSS/JS minification. The combined effect: TTFB dropped below 100ms and frontend size decreased another 35%, from 1.3 MB to 834 KB.
6. Lazy Loading
We then implemented native lazy loading for all below-the-fold images, which simultaneously tells the browser to prioritize the above-the-fold hero image. Desktop performance hit 99; mobile performance improved 20%.
7. AI-Assisted Mobile Optimization
For the final push, we used an AI-powered optimization tool to specifically target mobile LCP. This automated step analyzed the page structure and made surgical adjustments to resource loading priorities. The result: mobile LCP dropped 76% in this step alone, and the mobile performance score reached 92 — passing Google’s Core Web Vitals benchmarks.
The Results
The numbers speak for themselves:
| Metric | Before | After | Change |
|---|---|---|---|
| Mobile Performance | 57 | 92 | +61% |
| Mobile LCP | 14.1s | 2.1s | 85% faster |
| Desktop Performance | 84 | 100 | Perfect score |
| Desktop LCP | 2.5s | 0.6s | 77% faster |
| TTFB | 591ms | 28ms | 95% faster |
| Frontend Size | 2,274 KB | 694 KB | 69% smaller |
| Total Assets | 138 | 8 | 94% fewer |
| PHP Execution Time | 514ms | 196ms | 62% faster |
| Database Queries | 200 | 104 | 48% fewer |
Desktop achieved a perfect Lighthouse performance score of 100. Mobile passed all Core Web Vitals thresholds. The site went from loading 138 separate frontend files totaling 2.2 MB to just 8 files at 694 KB — a 94% reduction in HTTP requests and a 69% reduction in total transfer size.
Key Takeaway
WordPress performance problems are rarely mysterious. They’re the accumulation of individually reasonable choices — a feature-rich plugin here, an unoptimized image there, caching left for later — that compound into a genuinely poor experience. The fix isn’t a rebuild. It’s a methodical audit and a series of targeted interventions, each one measurable.
For any organization with meaningful website traffic, the return on this kind of work is immediate, with better rankings, lower bounce rates, and a visitor experience that reflects the quality of what they actually offer.
