Largest Contentful Paint: What It Is and How to Optimize It

On this information, I’ll clarify easy methods to optimize Largest Contentful Paint utilizing HTML and CSS. I’ll clarify what LCP is, then earlier than going into the main points, I’ll rapidly recap crucial issues you must learn about LCP.

So, What’s Largest Contentful Paint (LCP)?

Largest Contentful Paint (LCP) is among the three Core Web Vitals, Google’s net efficiency metrics which can be additionally included in its search engine algorithm.

Because the identify suggests, every Internet Important measures the vitality of an internet site from a distinct perspective. Largest Contentful Paint quantifies loading efficiency, or extra exactly, the render time of the most important content material ingredient above the fold.

With that stated, let’s get caught in! Leap to content material on this information:

Largest Contentful Paint (In a Bit Extra Element)

Largest Contentful Paint is a time worth that measures how lengthy it takes for the consumer’s browser to render the most important content material ingredient throughout the viewport.

The most important content material ingredient will be:

  • a block-level ingredient containing textual content (e.g. a heading or a paragraph)
  • a picture added with (1) the <img> HTML tag, (2) the <image> SVG tag throughout the <svg> ingredient, or (3) as a CSS background picture outlined by the url() CSS perform (excluding gradient backgrounds)
  • a <video> ingredient with a poster picture (the render time of the poster picture is used)

The outcomes are categorized on a traffic-light scale the place:

  • inexperienced 🟩 refers to an excellent LCP rating
  • yellow 🟨 implies that LCP wants enchancment
  • and purple 🟥 refers to a poor LCP rating

To get the inexperienced gentle, the most important content material ingredient on a web page should load inside 2.5 seconds. To not less than get the yellow gentle, it should load inside 4 seconds:

Largest Contentful Paint thresholdsLargest Contentful Paint thresholdsLargest Contentful Paint thresholds

Earlier than Getting Began with LCP Optimization

Listed here are some necessary issues to bear in mind earlier than you begin optimizing your web site for LCP see extra particulars on the analysis and calculation of Largest Contentful Paint in my article on the Core Web Vitals metrics in general:

  • Google tracks every web page individually for Core Internet Vitals, so in concept, you’d have to optimize every web page individually to get good outcomes. Nevertheless, in case you use a CMS or framework, e.g. you wish to improve LCP on a WordPress site, the finest technique is to optimize net pages by sort, akin to single posts, archive pages, pages generated by numerous content material plugins, and so on.
  • Every net web page has two (formally three) LCP scores based mostly on system sort: the cellular rating is used as a rating issue within the cellular search algorithm, whereas the desktop rating is used as a rating issue within the desktop search algorithm (Google additionally tracks a pill rating which is out there within the CrUX Dashboard — whereas this isn’t utilized by the search engine as there isn’t any separate pill search, it could assist with efficiency optimization and troubleshooting).
  • When optimizing your web site within the improvement section, you’ll measure Largest Contentful Paint utilizing a lab device akin to Lighthouse (that is the lab rating — its outcomes range throughout exams). Nevertheless, within the search algorithm, Google makes use of an aggregated LCP worth measured on actual customers (that is the subject rating, the rolling common of the earlier 28 days), which is different from the lab value.


Optimize every web page individually, for each desktop and cellular units. Along with the lab scores, additionally verify the most recent subject scores utilizing a efficiency evaluation device that exhibits the sector information collected by Google, akin to PageSpeed Insights (for any area) or Google Search Console (in your personal domains).

With out additional ado, now let’s see the tips about easy methods to optimize Largest Contentful Paint.

Minify Your CSS and JavaScript Information

Minifying your CSS and JavaScript recordsdata is a comparatively easy approach to enhance your LCP outcomes.

Relying in your stack and the traits of your viewers (e.g. the connection sort they sometimes use), you need to use completely different minification methods. As these days most community connections occur over HTTP/2 or HTTP/3, you don’t essentially have to bundle all the pieces into one file, as each of those communication protocols help stream multiplexing (the consumer’s browser can obtain a couple of file on the identical time).

There are lots of CSS and JavaScript minifier instruments you may select from, together with:

Inline Crucial CSS within the Head

Crucial CSS refers back to the fashion guidelines that apply to the content material that seems above the fold.

Since LCP measures the render time of the most important content material ingredient above the fold, you may enhance it by extracting the vital CSS and putting it into the <head> part as inline CSS enclosed by a pair of <fashion></fashion> tags.

The primary benefit of this method is that the browser can render above-the-fold content material with out having to attend for your complete CSS file to be parsed (this will matter quite a bit below poor community circumstances).

As you must optimize your code for numerous system sorts, from small-screen smartphones to bigger screens, there aren’t any strict guidelines about which components qualify as above-the-fold and below-the-fold content material. If you wish to extract vital CSS manually, you’ll have to work with estimates (e.g. probably, you’ll want so as to add all or a lot of the typography guidelines that apply to seen content material akin to headings, paragraphs, and so on.).

Alternatively, you need to use a web based vital CSS generator, akin to:

Find out how to Optimize Non-Crucial CSS?

Now that you’ve extracted and inlined vital CSS, you might wish to ask what to do with the non-critical a part of your CSS code.

In the end, the purpose is to delay the rendering of non-critical CSS. Nevertheless, the <hyperlink> tag used for loading stylesheets doesn’t have a defer attribute just like the <script> tag used for JavaScript.

The perfect workaround to defer non-critical CSS is by:

  1. preloading the CSS file utilizing the rel="preload" and as="fashion" attributes
  2. (on the identical time) including an additional rel="stylesheet" attribute to an onload event handler

This preload-onload method makes the browser course of the CSS file solely after the web page content material has loaded (however because the file is preloaded, it’s already downloaded, so the browser can begin to course of it instantly):

<!DOCTYPE html>
<html lang="en">
        <!-- meta tags -->
        <title>Inline Crucial CSS</title>
        <fashion><!-- vital CSS inlined and minified --></fashion>
        <hyperlink rel="preload" href="fashion.css" as="fashion" onload="this.onload=null;this.rel="stylesheet"">
        <noscript><hyperlink rel="stylesheet" href="fashion.css"></noscript>

The code instance above additionally nulls the onload occasion handler earlier than including the rel="stylesheet" attribute, which is required by some browsers (to stop the handler from being recalled as soon as the worth of the rel attribute adjustments). The <noscript> tag serves as a fallback, because the onload attribute solely works when JavaScript is enabled within the consumer’s browser.

It’s possible you’ll discover some earlier LCP optimization articles across the net which suggest that you just add the non-critical CSS earlier than the closing </physique> tag to defer non-critical CSS, nevertheless, this method delays web page rendering in Safari, which exhibits a clean web page till all CSS is loaded. Whereas Safari customers should not included in Google’s Core Internet Vitals subject scores (they only gather information on Chrome customers within the CrUX report), so it gained’t have an effect on your search engine optimization outcomes, it’s nonetheless higher to keep away from this method if you wish to help Safari customers. Plus, the aforementioned preload-onload method is now additionally officially recommended by Google’s staff.

You possibly can additional enhance CSS efficiency by utilizing the media attribute to load among the non-critical CSS (e.g. cellular and print types) conditionally — take a look at this article for extra particulars.

Defer or Async Non-Crucial JavaScript + Inline Crucial JavaScript

Now, let’s see how one can optimize the loading of your JavaScript sources to enhance Largest Contentful Paint.

Defer Non-Crucial Scripts

With the defer attribute, you may delay the obtain of non-critical scripts that both run beneath the fold or are triggered by consumer motion in order that the browser can render the most important content material ingredient sooner.

You possibly can add the defer attribute to the <script> tag within the following approach:

<script defer src="deferred-script.js"></script>

When the defer attribute is added to the <script> tag, it’s solely executed as soon as the HTML web page has been parsed however nonetheless earlier than the DOMContentLoaded occasion.

Async Non-Crucial Scripts

The async attribute is a substitute for defer. It serves to load scripts asynchronously (independently from the DOM).

Not like defer, it’s not tied to the DOMContentLoaded occasion. It executes as quickly as potential, however, like defer, at a low precedence. It’s sometimes added to third-party scripts.

You should utilize it within the following approach:

<script async src="asynchronous-script.js"></script>

Each the defer and async attributes flip your JavaScript file right into a non-render-blocking useful resource.

Notice which you can’t add the defer and async attributes to inline scripts—they solely work when the src attribute is current.

Inline Crucial Scripts

Crucial JavaScript is a render-blocking script that features performance that the browser must load earlier than it renders the web page.

Whereas most scripts will be deferred or loaded asynchronously, in case you nonetheless have a vital script, add it as inline JavaScript enclosed by a pair of <script></script> tags to the <head> part of your HTML web page.

Optimize Your Pictures

Above-the-fold photographs are LCP candidates. Though textual content nodes (e.g. headings) additionally qualify, the most important picture within the viewport has an excellent likelihood of being the LCP ingredient.

Total, the purpose of picture optimization is to make LCP candidate photographs load quick whereas deferring photographs that may possible load beneath the fold.

Notice that the LCP ingredient shouldn’t be essentially the identical ingredient on each system. Solely above-the-fold textual content nodes and pictures are taken into consideration which might range from viewport to viewport (e.g. a small display will present fewer photographs and content material above the fold than a big monitor).

To optimize your photographs for LCP, you need to use a number of of the next strategies:

1. Compress Your Pictures

Nowadays, you’ve entry to varied picture compression instruments, together with standalone net apps and APIs, akin to Squoosh, TinyPNG, and ImageOptim, and content material administration techniques even have their very own options, e.g. WPCompress and other plugins for WordPress.

The necessary factor about picture compression is that you must discover the steadiness between the compression ratio and picture high quality, as over-optimizing photographs may end up in blurry or low-quality photographs that may hurt the consumer expertise.

2. Use the Lossy Variations of Subsequent-Era Picture Codecs

Subsequent-generation picture codecs compress photographs utilizing superior algorithms in order that they’ll present the identical or higher picture high quality in a smaller file dimension than conventional picture codecs akin to JPEG.

WebP is at present probably the most broadly supported next-gen picture format; it’s supported by every modern browser. AVIF is a more moderen format that leads to even smaller picture recordsdatanevertheless, it’s supported by fewer browsers (e.g. Edge doesn’t help it).

You should utilize among the picture optimization apps listed above (e.g. Squoosh) to transform your photographs to next-gen photographs.

Notice, nevertheless, that solely the lossy algorithms of the WebP and AVIF picture codecs include undoubtedly extra performant outcomes than their JPG equivalents. Their lossless algorithms (used for PNG compression) typically lead to a bigger picture file than its PNG equalsee how the lossy vs lossless compression of next-gen images works intimately.

You possibly can add an AVIF picture with WebP and JPG fallbacks utilizing the <picture> and <source> HTML components:


  <supply srcset="picture.avif" sort="picture/avif">

  <supply srcset="picture.webp" sort="picture/webp">

  <img src="picture.jpg" alt="Picture"  width="900" peak="600">


Should you solely wish to add the WebP format, use simply the second <supply> tag within the code instance above. Additionally word that you do not want the JPG fallback in case you need not help legacy browsers on this case, you may merely add the WebP picture to the <img> ingredient.

3. Implement Responsive Pictures

The code snippet above is one instance of the responsive picture syntax. Nevertheless, HTML and CSS supply numerous methods to implement responsive images.

Responsive photographs imply that you simply outline a couple of supply file for every <img> ingredient on the web page, and the browser chooses the one that most closely fits the current circumstances (e.g. the choice sources can differ in format like within the WebP/AVIF instance above, dimension, decision, path, and so on.).

For instance, you need to use the srcset and sizes attributes to load smaller photographs on cellular screens which can enhance your cellular LCP scores:

<img src="image-sm.webp" srcset="image-sm.webp 400w, image-md.webp 800w,
images-lg.webp 1200w" sizes="80vw" alt="Picture">

4. Lazy Load Out-Of-View Pictures + Preload LCP Candidate Pictures

Out-of-view photographs embody photographs which can be rendered beneath the fold or inside off-canvas menus, tabs, carousels, popups, modals, and so on.

Lazy loading (a.okay.a. on-demand loading) implies that the content material is barely downloaded when it’s wanted, e.g. when the consumer scrolls down the web page and the photographs are about to come back to the viewport.  You possibly can implement lazy loading in each HTML and JavaScript.

We now have a full guide on lazy loading, however the simplest way is so as to add the loading="lazy" attribute to the <img> tag:

<img loading="lazy" src="picture.webp" alt="Picture" width="900" peak="600">

The choice worth of the loading attribute is keen, which is the default worth and implies that the picture shall be loaded instantly.

By no means lazy load LCP candidate photographs doing so leads to a Lighthouse warning and harms your Largest Contentful Paint outcomes.

If you wish to velocity up your LCP candidate photographs, you can even contemplate preloading them by including the next code to the <head> part of your HTML web page (word that you simply nonetheless want so as to add the preloaded picture to the <physique> part utilizing the <img> tag):

<!-- Preload the LCP picture within the head part -->
    <hyperlink rel="preload" as="picture" href="picture.webp">

<!-- Render the preloaded picture within the <physique> part -->
    <img src="picture.webp" alt="LCP Candidate" width="900" peak="600">

It’s sometimes price preloading full-screen background photographs added by CSS or hero photographs that may possible be the LCP ingredient on most viewports.

5. Use an Picture CDN

You possibly can additional velocity up your photographs and enhance your Largest Contentful Paint outcomes in case you load your photographs (and presumably different static sources) from a Content material Supply Community (CDN).

A CDN is a globally distributed community of servers that reduces latency by loading photographs from an information heart that’s geographically the closest to the respective customer.

You should utilize a general-purpose CDN (akin to Cloudflare, Akamai, Fastly, KeyCDN, and so on.) that caches all static content material and typically full pages to edge servers, or a devoted picture or media CDN (akin to Imagify, Cloudinary, and so on.) that additionally performs different picture optimizations akin to routinely producing responsive photographs and the belonging HTML code.

Nowadays some internet hosting suppliers (e.g. some managed WordPress hosts akin to Rocket.internet or Kinsta) additionally combine with Cloudflare or one other CDN and routinely cache and cargo static content material, together with photographs, from CDN.

Prioritize Useful resource Loading with the fetchpriority Attribute

The FetchPriority API, beforehand referred to as Precedence Hints, implements a kind of browser trace that means that you can give suggestions to the browser about easy methods to prioritize useful resource loading on the web page. As they’re simply hints, not instructions, the browser can resolve whether or not it desires to take them into consideration or not.

The fetchpriority attribute is the HTML deal with of the FetchPriority API.

You possibly can add it to the <img>, <iframe>, <script>, and <link> components to prioritize or deprioritize your photographs, iframes, and CSS and JavaScript recordsdata.

It takes one of many following values:

  • excessive
  • low
  • auto (default worth)

For instance, you may add the fetchpriority="excessive" trace to your LCP candidate photographs:

<img src="hero-image.webp" fetchpriority="excessive" alt="LCP candidate"
width="900" peak="600">

Curiously, because the <hyperlink> ingredient additionally accepts the fetchpriority attribute, you may add it to the sources you wish to preload.

For instance, you can also make above-the-fold background photographs added by CSS preload sooner:

<hyperlink rel="preload" as="picture" href="css/photographs/background.webp" fetchpriority="excessive">

Browser support for the FetchPriority API remains to be poor. For instance, Safari and Firefox don’t help it in any respect. So, don’t use it as a foundation of your LCP optimization technique reasonably, deal with it as a complementary step that may enhance your LCP leads to Chromium-based browsers (e.g. Chrome, Edge, Opera, and so on.)

Wrapping Up

On this detailed information, we appeared into easy methods to optimize Largest Contentful Paint utilizing HTML and CSS.

You don’t essentially have to make use of all of those strategies to get good LCP outcomes; they’re extra like suggestions which you can implement one after the other, relying in your wants (e.g. on an image-heavy web site, you might wish to begin with optimizing your photographs).

Frequent testing can be necessary as it could assist you discover the efficiency points you must work on. To check your website for Largest Contentful Paint, you need to use a free device akin to Lighthouse, PageSpeed Insights (which additionally contains the most recent subject information from Google’s CrUX Report), or Google Search Console.

If you wish to optimize Largest Contentful Paint to enhance your search engine optimization outcomes, you must pay particular consideration to the Chrome browser as a result of the CrUX Report, utilized in Google’s search algorithm, solely contains information from Chrome customers (i.e. simply Google Chrome, different Chromium-based browsers should not included within the CrUX information assortment).

Nonetheless, it’s nonetheless necessary to keep away from optimization strategies that hurt consumer expertise in different browsers (e.g. deferring non-critical CSS by loading the stylesheet earlier than the closing </physique> tag delays web page rendering in Safari see the reason above).

To be taught extra about Core Internet Vitals usually, together with the detailed calculation of the Largest Contentful Paint metric, take a look at my comprehensive guide to the initiative, too. 

Trending Merchandise
[product_category category=”trending” per_page=”8″ columns=”2″ orderby=”date” order=”desc”].

We will be happy to hear your thoughts

Leave a reply

Compare items
  • Total (0)