The fastest wins come from three areas: caching, image optimization, and resource loading. Start with a quality caching plugin like WP Rocket (premium) or LiteSpeed Cache (free if your host supports it). These handle page caching, minification, and defer non-critical JavaScript automatically. Expect LCP improvements of 30-50% from proper caching alone. Images kill WordPress performance. Install ShortPixel or Imagify to convert existing images to WebP and compress them. Enable native lazy loading or use a plugin that adds it properly. For hero images that affect LCP, preload them and ensure they're sized correctly for viewport—a 3000px wide image scaled down in CSS still transfers 3000px of data. Render-blocking resources are the next priority. Most themes load entire CSS frameworks when pages use 15% of the code. Use a plugin like Asset CleanUp or Perfmatters to disable unused scripts per page type. Generate critical CSS (the above-the-fold styles) and inline it while deferring the rest. WP Rocket does this semi-automatically, but you'll need to test because it breaks some themes. Hosting matters more than people admit. Shared hosting with 512MB RAM and PHP 7.4 will struggle regardless of optimization. We typically see 200-400ms server response times on quality managed WordPress hosting (Kinsta, Cloudways, WP Engine) versus 800-1500ms on budget shared plans. Upgrade to PHP 8.1 minimum—it's 20-30% faster than 7.4. Database bloat slows everything down after a site runs for months. Use WP-Optimize to clean revisions, spam comments, and transients monthly. Limit post revisions to 3-5 in wp-config.php. For CLS issues, set explicit width and height attributes on all images and reserve space for ad slots or dynamic content. Many themes inject layout-shifting elements through plugins—audit with Chrome DevTools to find the culprits. Ottawa SEO runs most client sites on LiteSpeed hosting with WP Rocket, WebP images, and per-page asset control, which typically achieves 85-95 mobile scores without custom theme development.