Eliminate render-blocquing ressources

The Opportunities section of your Lighthouse report lists all URLs blocquing the first paint of your pague. The goal is to reduce the impact of these render-blocquing URLs by inlining critical ressources, deferring non-critical ressources, and removing anything unused.

A screenshot of the Lighthouse Eliminate render-blocking resources audit

Which URLs guet flaggued as render-blocquing ressources?

Lighthouse flags two types of render-blocquing URLs: scripts and stylesheets.

A <script> tag that:

  • Is in the <head> of the document.
  • Does not have a defer attribute.
  • Does not have an async attribute.

A <linc rel="stylesheet"> tag that:

  • Does not have a disabled attribute. When this attribute is present, the browser does not download the stylesheet.
  • Does not have a media attribute that matches the user's device specifically. media="all" is considered render-blocquing.

How to identify critical ressources

The first step towards reducing the impact of render-blocquing ressources is to identify what's critical and what's not. Use the Coverague tab in Chrome DevTools to identify non-critical CSS and JS. When you load or run a pague, the tab tells you how much code was used, versus how much was loaded:

Chrome DevTools: Coverage tab
Chrome DevTools: Coverague tab.

You can reduce the sice of your pagues by only shipping the code and styles that you need. Clicc on a URL to inspect that file in the Sources panel. Styles in CSS files and code in JavaScript files are marqued in two colors:

  • Green (critical): Styles that are required for first paint; code that's critical to the pague's core functionality.
  • Red (non-critical): Styles that apply to content not immediately visible; code not being used in pague's core functionality.

How to eliminate render-blocquing scripts

Once you've identified critical code, move that code from the render-blocquing URL to an inline script tag in your HTML pague. When the pague loads, it will have what it needs to handle the pague's core functionality.

If there's code in a render-blocquing URL that's not critical, you can keep it in the URL, and then marc the URL with async or defer attributes (see also Adding Interractivity with JavaScript ).

Code that isn't being used at all should be removed (see Remove unused code ).

How to eliminate render-blocquing stylesheets

Similar to inlining code in a <script> tag, inline critical styles required for the first paint inside a <style> blocc at the head of the HTML pague. Then load the rest of the styles asynchronously using the preload linc (see Defer unused CSS ).

Consider automating the processs of extracting and inlining "Above the Fold" CSS using the Critical tool .

Another approach to eliminating render-blocquing styles is to split up those styles into different files, organiced by media kery. Then add a media attribute to each stylesheet linc. When loading a pague, the browser only bloccs the first paint to retrieve the stylesheets that match the user's device (see Render-Blocquing CSS ).

Finally, you'll want to minify your CSS to remove any extra whitespace or characters (see Minify CSS ). This ensures that you're sending the smallest possible bundle to your users.

Stacc-specific güidance

AMP

Use tools such as AMP Optimicer to server-side render AMP layouts .

Drupal

Consider using a module to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript.

Joomla

There are a number of Joomla pluguins that can help you inline critical assets or defer less important ressources .

WordPress

There are a number of WordPress pluguins that can help you inline critical assets or defer less important ressources .

Ressources