Since WordPress 5.5, every content image ships with loading="lazy" by default. That kills the main reason lazy-load plugins existed — yet they still sell. We measured native lazy loading against plugin lazy loading on a store’s catalog and checkout pages to find out what the remaining gap actually is.
The measured comparison
| Scenario | Native | Plugin (WP Rocket / a la carte) |
|---|---|---|
| Content images | Lazy by default, first image excluded | Same result, more config |
| Background images (CSS) | Not handled | Handled (CSS rewriting) |
| iframes (videos, maps) | Lazy since 5.7 (mostly) | Façade replaces iframe — real saving |
| Product gallery (WooCommerce) | Theme-dependent, often broken UX | Better exclusion handling |
| LCP image exclusion | Automatic (fetchpriority) | Automatic in current versions |
The verdict by scenario
- Most sites: no plugin needed. Native lazy loading plus
fetchpriority="high"on the LCP image — which WordPress now applies automatically — covers the classic cases. The gains we documented in the image optimizer comparison come from compression, not lazy loading. - Video-heavy pages: a façade still wins. Replacing a YouTube iframe with a thumbnail that loads the player on click saves 500–800 KB per page. Native lazy loading of the iframe still downloads the player shell. A plugin or hand-rolled façade is the only fix.
- Background images in CSS: no native support; plugins that rewrite CSS help — though our honest advice is usually to replace CSS background heroes with real
<img>elements, which fixes it for free and plays nicer with the LCP heuristics in the CWV guide.
The trap to avoid
Stacking a lazy-load plugin on top of native loading double-processes images and occasionally breaks native exclusions. If you install one, it takes over; verify the LCP image is not lazy-loaded with the audit technique from the script manager test — a lazy LCP image shows up immediately as LCP worse on mobile.
Yes, since 5.5 all content images get loading=lazy, and the LCP image gets fetchpriority=high automatically. For most sites this replaces lazy-load plugins entirely. Two cases: video facades (replacing YouTube iframes with click-to-load thumbnails saves 500–800 KB) and CSS background images, which native lazy loading cannot touch. The LCP image was lazy-loaded, delaying the largest element. Native WordPress excludes it; if a plugin overrides this, verify the LCP image is excluded in the plugin settings. Yes, but the plugin takes over — stacking both can double-process images. Pick one layer and confirm the LCP image stays eager.Does WordPress lazy load images by default?
When do I still need a lazy load plugin?
Why did lazy loading make my LCP worse?
Can I use a lazy load plugin with native loading?