WordPress LCP Fix: 7 Proven Steps to Improve Largest Contentful Paint (2026)

A WordPress LCP fix means getting your Largest Contentful Paint — the moment the biggest visible image or text block finishes rendering — under Google’s 2.5-second “good” threshold. Most sites miss that mark because of one slow hero image, unnecessary lazy-loading, or render-blocking CSS. Fix those three things and Largest Contentful Paint usually drops fast, which also lifts your Core Web Vitals pass rate in Google Search Console.

What Is LCP and Why Does WordPress LCP Matter for SEO?

LCP (Largest Contentful Paint) measures how long it takes the largest image or text block in the viewport to fully render after a visitor requests the page. Google treats it as one of three Core Web Vitals, alongside Interaction to Next Paint (INP) and Cumulative Layout Shift (CLS). According to Google’s official web.dev performance documentation, a WordPress LCP score of 2.5 seconds or less is “good,” 2.5 to 4.0 seconds “needs improvement,” and anything above 4.0 seconds is “poor” — measured at the 75th percentile of real visitor sessions, not a single lab test.

LCP matters more on WordPress than on a hand-coded site because themes, page builders, and plugins each add their own render-blocking CSS, webfonts, and images before the main content paints. If you’ve already worked through fixing WordPress INP, LCP is the next Core Web Vital worth chasing, because it’s the metric most content-heavy WordPress sites fail first.

There’s a business reason to care beyond the ranking signal. Google’s Core Web Vitals report in Search Console groups URLs by status — “Poor,” “Needs improvement,” or “Good” — and a page sitting in the “Poor” LCP bucket is a page where a meaningful share of real visitors are watching a blank or half-rendered screen for over four seconds before they can read anything. On a monetized blog or an affiliate site, that’s the gap between a visitor who scrolls and one who hits the back button before your content even appears.

How Do You Measure Your Site’s Current LCP Score?

Open Google Search Console and check the Core Web Vitals report under Experience — it shows real-user LCP data gathered from the Chrome UX Report (CrUX) over the previous 28 days, grouped by URL. That field data is what Google actually uses for ranking signals, not a lab score.

For a faster, page-by-page check, run PageSpeed Insights or Chrome DevTools’ Lighthouse panel on the specific URL you’re troubleshooting. Lighthouse will name the exact LCP element — usually a featured image, hero banner, or the first paragraph of text — and break the total time into four phases: Time to First Byte, load delay, load time, and render delay. Whichever phase eats the most time tells you which fix below to prioritize.

Don’t chase the lab score alone. A site can look fast in Lighthouse on a fresh cache and still fail the field data report, because real visitors load pages on slower connections, with cold caches, and with ad or analytics scripts you didn’t test with.

Test more than your homepage. LCP varies by template: a single post with a huge featured image behaves differently from a product page with a gallery, or an archive page with a dozen thumbnails. Run Lighthouse against one URL from each template type — post, page, category archive, and product if you run WooCommerce — because a fix that clears your homepage can leave every blog post still failing.

Keep a simple before-and-after log. Note the LCP figure, the identified element, and the phase breakdown (TTFB, load delay, load time, render delay) before you touch anything. After each fix below, re-run the same URL and compare. Without that baseline, it’s easy to apply five fixes at once, see an improvement, and have no idea which one actually mattered.

WordPress LCP fix Lighthouse report showing page speed score

How Do You Add fetchpriority=”high” to Fix WordPress LCP?

The single highest-leverage WordPress LCP fix is telling the browser which image to fetch first. The fetchpriority="high" attribute does exactly that: it moves your hero image to the front of the browser’s network queue instead of waiting behind stylesheets, fonts, and scripts.

WordPress’s Core Performance Team proposed building this directly into core in May 2023, after HTTP Archive data showed the LCP element was an image on 42.4% of desktop WordPress pages and 38.2% of mobile pages, yet fewer than 0.03% of those images carried a fetchpriority hint. You can read the original proposal on make.wordpress.org. Many modern themes and image-optimization plugins now add the attribute automatically to the featured image; if yours doesn’t, a short function filtering wp_get_attachment_image_attributes to add fetchpriority="high" on singular templates closes the gap without a plugin.

Only apply this to the one image that actually becomes your LCP element. Adding fetchpriority="high" to every image on the page defeats the purpose, because the browser can’t prioritize everything at once.

To check whether it’s already applied, right-click your hero image in the browser, choose Inspect, and look at the <img> tag’s attributes. If you see fetchpriority="high" next to the src attribute, your theme or an image plugin is already handling it and you can skip this fix. If it’s missing, most block themes let you add it through a small code snippet hooked to the featured image filter, and several image-optimization plugins now expose a toggle for “LCP image priority” in their settings rather than requiring custom code at all.

How Do You Stop WordPress From Lazy-Loading Your LCP Image?

Lazy-loading is excellent for images below the fold and actively harmful for the one image above it. Since WordPress 5.9, core already skips the loading="lazy" attribute on the first content image or featured image inside the main query loop, specifically to protect LCP. WordPress 6.3 extended that exemption to images rendered in the header template area before the loop, closing a gap that affected classic themes.

That protection only covers images core can identify automatically. If your hero image comes from a page builder, a custom header template, or a block pattern core doesn’t recognize as “before the loop,” it can still get lazy-loaded by mistake. Check the rendered HTML: if your LCP image has loading="lazy" in its tag, pass 'loading' => false to wp_get_attachment_image() or the equivalent block attribute to remove it.

Why does a 50-200ms decode delay matter so much? Lazy-loaded images use the IntersectionObserver browser API to detect when an element nears the viewport before fetching it, which adds a detection step the browser skips entirely for eagerly-loaded images. On a fast connection that delay is barely noticeable; on the 4G or throttled mobile connections CrUX actually measures, it compounds with every other delay already stacked in front of the image.

How Does Caching Improve WordPress LCP?

Every LCP measurement starts with Time to First Byte (TTFB) — the delay before the browser receives any HTML to start rendering. On shared hosting, PHP has to query the database and rebuild the page on every uncached visit, which can add several hundred milliseconds before a single pixel paints.

A page caching plugin serves a pre-built HTML snapshot instead, cutting that server-side delay dramatically. If you haven’t set one up, our guide to the best WordPress caching plugins compares the options that work well on shared and managed hosting alike. Object caching (Redis or Memcached, where your host supports it) helps further on dynamic, logged-in, or WooCommerce pages that full-page caching can’t serve from a snapshot.

Caching alone rarely fixes LCP completely — it addresses only the TTFB phase — but it’s usually the fastest win available, often implemented in under ten minutes with no code changes.

If your host runs LiteSpeed Web Server, the LiteSpeed Cache plugin caches at the server level rather than through PHP, which typically beats a purely PHP-based caching plugin on TTFB because the cached page never touches the WordPress bootstrap at all. Hosts on Nginx or Apache get the same effect through a reverse-proxy cache like Varnish, or through the caching layer most managed WordPress hosts (WP Engine, Kinsta, Hostinger’s own caching) already run server-side — check your hosting dashboard before installing a second caching plugin on top, since two caching layers fighting each other can serve stale pages instead of faster ones.

Should You Switch to AVIF or WebP to Fix WordPress LCP?

Yes, if your LCP element is an image — which, per the HTTP Archive data cited above, it is on most WordPress pages. AVIF and WebP compress images 25-50% smaller than JPEG at equivalent visual quality, which shortens the download phase of LCP directly. Our detailed AVIF vs WebP for WordPress comparison covers browser support and conversion plugins in depth; for an LCP fix specifically, WebP has slightly broader legacy support while AVIF compresses smaller on photographic images.

Pair the format switch with correctly sized images. Serving a 3000px-wide original into a 600px-wide content column wastes bandwidth the browser has to download before it can even start decoding. Set explicit width and height attributes too, so the browser reserves space before the image arrives — this protects CLS as a side effect, and good image SEO practice already covers sizing and descriptive alt text for the same images.

WordPress’s responsive images feature (the srcset and sizes attributes core has added to every image since WordPress 4.4) already lets a phone download a smaller file than a desktop monitor does, for the same uploaded image. If a theme or plugin disables this feature to apply custom cropping, you lose that benefit automatically, so confirm srcset is still present on your LCP image after installing any image-related plugin.

WordPress LCP fix comparison of AVIF and WebP image file sizes

How Do You Fix WordPress LCP on Mobile Devices?

Google’s Core Web Vitals report scores mobile and desktop separately, and mobile LCP is almost always worse, because CrUX measures real network conditions rather than your office Wi-Fi. A hero image that paints in 1.2 seconds on your desktop over fiber can easily take 3-4 seconds on a mid-range Android phone over a weak 4G signal.

Three mobile-specific checks matter beyond everything above. First, confirm your srcset is actually serving a smaller file to phones rather than scaling a desktop-sized image down in CSS — that wastes the download even though it displays correctly. Second, check your hosting or CDN supports HTTP/2 or HTTP/3, which let a mobile browser fetch your CSS, fonts, and hero image in parallel instead of queueing them one at a time over a slower connection. Third, audit any mobile-only interstitials, cookie banners, or sticky ad units that inject their own render-blocking script tag before your main content; on a fast desktop connection you won’t notice the delay, but it stacks visibly on mobile.

How Do You Monitor WordPress LCP Over Time?

A single fix day isn’t enough, because LCP regresses quietly. A new plugin, a theme update, a redesigned header, or simply uploading a larger featured image than usual can push your score back into “needs improvement” without any obvious error or warning.

Check the Core Web Vitals report in Google Search Console roughly every two to four weeks — it updates on a rolling 28-day window, so checking more often than that mostly shows noise rather than a real trend. For faster feedback on a specific change, use PageSpeed Insights immediately after publishing or updating a page; its lab score won’t match the field data exactly, but a sudden regression usually shows up in both.

If your site gets meaningful traffic, consider a real-user-monitoring (RUM) script, which some performance plugins and CDN dashboards include, to see LCP trends broken down by page template, device type, and country rather than waiting on Search Console’s site-wide averages.

How Do Render-Blocking CSS and Fonts Hurt WordPress LCP?

Even a perfectly optimized hero image can’t paint until the browser finishes downloading and parsing every stylesheet and font the page requests before it. Page builders and multipurpose themes often load several CSS files and two or three webfont weights on every page, including ones that only affect content far below the fold.

Preloading the font file your hero heading actually uses, with a <link rel="preload"> tag, removes the “discover the font inside the CSS, then fetch it” round trip. Deferring or inlining non-critical CSS — the styles that only apply to your footer or comments section, say — lets the browser paint the visible content sooner. Most reputable caching and performance plugins include a “critical CSS” or “remove unused CSS” feature that automates this; test carefully after enabling it, since aggressive CSS removal can occasionally strip styles a page builder needs.

Count your render-blocking requests directly in Chrome DevTools’ Network panel: filter by CSS and font files, sort by start time, and look at how many finish loading before your hero image even begins its own download. Each one sitting fully in front of the image is a candidate to defer, inline, or remove. A theme with eight separate stylesheet files and three font weights is a common, fixable cause of a slow render-delay phase — consolidating or removing the ones you don’t actually use on that template often buys more LCP improvement than any single plugin setting.

Which WordPress LCP Fix Should You Try First?

Start with whichever phase Lighthouse flagged as largest in your own report, not the list order below. For most shared-hosting WordPress sites, caching and the fetchpriority hint deliver the biggest improvement for the least effort, while render-blocking CSS cleanup takes longer but matters more on heavily designed, builder-driven pages.

TechniqueTypical LCP ImpactDifficultyBest For
fetchpriority=”high” on hero imageSaves ~100-400ms on image fetch startEasyStatic hero images and featured images
Skip lazy-loading on LCP imageRemoves a 50-200ms decode delayEasyCustom headers and page-builder heroes
Page caching pluginCuts TTFB by 200ms-1s+Easy-ModerateAny shared or managed hosting site
AVIF or WebP imagesReduces image payload 25-50%ModerateImage-heavy posts and galleries
CDN for static assetsCuts network latency 50-300msModerateSites with a global audience
Preload fonts / defer unused CSSRemoves 200ms-1s of render delayAdvancedBuilder-heavy, multi-plugin sites

Frequently Asked Questions About WordPress LCP

What is a good LCP score for WordPress in 2026?

2.5 seconds or less, measured as real-user field data at the 75th percentile, per Google’s web.dev Core Web Vitals documentation. Scores from 2.5 to 4.0 seconds are rated “needs improvement,” and anything above 4.0 seconds is “poor.”

Does LCP affect WordPress SEO rankings?

Core Web Vitals, including LCP, are a confirmed Google ranking signal, though a relatively minor one compared with content relevance. The more consistent effect is on conversion and bounce rate: slower LCP correlates with more visitors leaving before the page finishes loading.

Will a caching plugin alone fix my WordPress LCP?

Usually not completely. Caching fixes the Time to First Byte phase, but if your LCP element is a large, unoptimized, lazy-loaded image behind render-blocking CSS, you’ll still need the image and CSS fixes covered above.

How do I find which element is my LCP element?

Run the page through PageSpeed Insights or Chrome DevTools’ Lighthouse panel. Both tools name the specific DOM element Lighthouse identified as the Largest Contentful Paint element, usually by highlighting it directly in a screenshot.

Can a page builder like Elementor or Divi hurt LCP?

Yes. Page builders often load extra CSS and font files and wrap hero images in nested divs the core lazy-loading exemption doesn’t recognize, so manually removing loading="lazy" from the hero image and preloading its font are especially important on builder-driven pages.

Does switching to AVIF images guarantee a better LCP score?

No. A smaller file only helps if the browser can also fetch it early and decode it without waiting on blocking CSS or fonts. Combine the format switch with fetchpriority and lazy-load fixes for the full effect.

Subscribe for Newsletter

Chat Channel
F in WA @