Site speed is where technical SEO and user experience intersect most directly. A page that loads in 1.2 seconds converts visitors differently than one that loads in 4 seconds — and Google has spent years building ranking systems that reward the former. In 2026, Core Web Vitals are an established ranking signal, page experience factors are baked into quality scoring, and the performance bar keeps rising as users’ expectations (shaped by fast-loading apps) increase. This guide covers the full technical stack of speed optimization, from server configuration to JavaScript execution.
Core Web Vitals: The 2026 Targets
The Three Core Metrics
| Metric | What It Measures | Good | Needs Improvement | Poor |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | Loading performance — time until main content visible | Under 2.5s | 2.5-4s | Over 4s |
| INP (Interaction to Next Paint) | Interactivity — response time to user inputs | Under 200ms | 200-500ms | Over 500ms |
| CLS (Cumulative Layout Shift) | Visual stability — unexpected layout movement | Under 0.1 | 0.1-0.25 | Over 0.25 |
Google’s ranking signal uses the 75th percentile of field data from real users, not lab data from PageSpeed Insights. A page that scores well in a lab test may still fail CWV thresholds if a significant portion of real users experience slow loads due to geography, device variability, or network conditions.
LCP Optimization Deep Dive
LCP is the most impactful CWV for most sites. The LCP element is whatever takes longest to render as the largest visible content — typically a hero image, featured image, or large text block. Optimize LCP by:
- Preload the LCP resource: Add a preload link tag to your HTML head. This tells the browser to fetch this resource immediately, before the full page parse
- Never lazy-load the LCP element: Adding loading=”lazy” to your hero image is one of the most common LCP mistakes
- Optimize LCP image dimensions: Serve images at the exact size they’ll be displayed; don’t serve a 3000px image in a 800px container
- Use modern formats: AVIF images are 50% smaller than JPEG at equivalent quality; WebP is 25-35% smaller
- Eliminate render-blocking resources: CSS and JavaScript that block the initial render delay when LCP can appear
Server Performance Optimization
Time to First Byte (TTFB)
TTFB is the foundation everything else builds on. If your server takes 800ms to respond, you’ve already consumed a third of your LCP budget before the browser downloads a single byte. Targets:
- Excellent: Under 100ms (edge hosting, aggressive caching)
- Good: 100-200ms (quality hosting, server-side caching enabled)
- Needs work: 200-500ms (typical shared hosting)
- Poor: 500ms+ (unoptimized hosting, no caching, heavy database queries)
Server-Side Caching
For WordPress and dynamic CMS sites, server-side page caching is the single highest-impact optimization. When caching is enabled, your server returns a static HTML file instead of running PHP + database queries for every request:
| Caching Solution | Type | Typical TTFB Reduction | Setup Complexity |
|---|---|---|---|
| WP Rocket | WordPress plugin | 60-80% | Low |
| W3 Total Cache | WordPress plugin | 50-70% | Medium |
| Nginx FastCGI Cache | Server-level | 70-90% | High |
| Redis Object Cache | Database cache | 40-60% | Medium |
| Varnish Cache | Reverse proxy | 80-95% | High |
Web Server Configuration
Ensure your web server has these performance configurations enabled:
- Brotli/GZIP compression: Reduces text file transfer sizes by 70-90%. Brotli achieves 15-20% better compression than GZIP at similar speeds
- HTTP/2 or HTTP/3: Allows multiple parallel requests over a single connection; essential for modern sites with multiple resources
- Keep-Alive connections: Reuses TCP connections instead of creating new ones for each request
- Browser caching headers: Set long cache TTLs for static assets (images, CSS, JS) with cache-busting via file versioning
Content Delivery Network (CDN) Implementation
Why CDNs Transform Performance
A CDN stores copies of your static assets (and in some cases full pages) on servers distributed globally. When a user in Singapore requests your US-hosted site, instead of a 200ms round trip to your origin server, they get assets from a CDN node 5ms away. For global sites, CDN implementation typically reduces LCP by 0.5-1.5 seconds.
CDN Selection by Use Case
| CDN | Best For | Price | Notable Feature |
|---|---|---|---|
| Cloudflare | Most sites; DDoS protection too | Free-$200/mo | Edge Workers, free SSL |
| Fastly | High-traffic publishers | Usage-based | Instant purge, ESI support |
| AWS CloudFront | AWS-hosted applications | Usage-based | Deep AWS integration |
| BunnyCDN | Budget-conscious sites | $0.01/GB | Best price/performance |
| KeyCDN | Video-heavy sites | $0.04/GB | HTTP/2 push support |
Image Optimization
Format Selection
Image format choice is one of the highest-impact, lowest-effort optimizations:
- AVIF: Best compression (40-50% smaller than JPEG), good quality, growing browser support
- WebP: 25-35% smaller than JPEG, universal browser support. The safe default for most sites today
- JPEG: Use for photographs where WebP/AVIF aren’t supported
- PNG: Only for images requiring transparency; consider WebP instead
- SVG: Always for logos, icons, and simple graphics — infinitely scalable, tiny file sizes
Responsive Images
Serving oversized images is one of the most common performance mistakes. Use srcset and sizes attributes to serve appropriately-sized images to each device. Always include explicit width and height attributes — this reserves space before the image loads, preventing CLS from layout shifts when images load.
JavaScript Performance
Reducing JavaScript Execution Time
JavaScript is the most common cause of poor INP scores and slow TTI (Time to Interactive). Audit your JS with Chrome DevTools Performance panel and focus on:
- Remove unused JavaScript: Tools like webpack-bundle-analyzer or Chrome Coverage tool identify JS code that’s never executed; eliminate dead code
- Code splitting: Load only the JS needed for the current page; defer loading of JS for features users haven’t interacted with yet
- async and defer attributes: Add async to scripts that don’t depend on DOM parsing; defer to scripts that do. Both prevent render blocking
- Third-party script management: Marketing tags, chat widgets, and analytics scripts are often the biggest JS performance culprits. Use Google Tag Manager with triggers to load tags only when needed
Critical CSS Inlining
Render-blocking CSS delays when the browser can first paint. Extract the CSS needed for above-the-fold content and inline it in your HTML head, loading the full stylesheet asynchronously. Tools like Critical CSS generator automate this extraction.
WordPress-Specific Optimizations
WordPress powers 43% of the web, so specific optimizations apply:
- Plugin audit: Every active plugin adds HTTP requests and potentially JavaScript. Disable and delete unused plugins; audit active plugins for performance impact using Query Monitor
- Database optimization: Run regular database cleanup (delete post revisions, spam comments, transients) using WP-Optimize or similar
- WooCommerce: E-commerce plugins add significant overhead; use dedicated WooCommerce hosting with object caching and ensure the cart page isn’t cached
- Theme selection: Page builders (Divi, Elementor) add substantial overhead; lightweight themes like GeneratePress or Astra with Gutenberg are significantly faster
Performance Monitoring and Maintenance
Speed optimization isn’t a one-time task — performance degrades as content is added, plugins are updated, and traffic patterns change. Implement ongoing monitoring:
- Google Search Console CWV report: Shows real-user Core Web Vitals data segmented by page type and URL group
- PageSpeed Insights: Combines lab data (Lighthouse) with field data (CrUX) for individual URLs
- GTmetrix or WebPageTest: Detailed waterfall analysis for diagnosing specific bottlenecks
- Synthetic monitoring: Tools like Pingdom or StatusCake test performance on a schedule and alert you to regressions
Our technical SEO team audits your full performance stack — from server configuration to JavaScript execution — and implements the fixes that move your CWV scores into the Good range. Get your performance audit