Prioritize Critical CSS

PageSpeed Optimization Filters

Benefits

This optimization improves page render times by identifying CSS rules needed to render the page, inlining those critical rules and deferring the load of the full CSS resources.

prioritize_critical_css parses the CSS and replaces it with inlined CSS that contains only the rules used on the page. This avoids any blocking CSS requests needed for the initial render. It also collects all CSS tags and appends them to the HTML in the same order they were found. This will make all style rules available after page load.

Deferring style rules that are not used by the document delays downloading unnecessary bytes and allows the browser to start rendering sooner

Configuration

Enable pagespeed EnableFilters prioritize_critical_css
Disable pagespeed DisableFilters prioritize_critical_css

Requirements

prioritize_critical_css computes critical CSS only if the corresponding CSS file is "public" cacheable.

Limitations

This optimization cannot compute critical CSS for CSS files under IE conditional comments and is disabled if it detects an IE user agent.

Risk Classification

Moderate

prioritize_critical_css optimization is moderate risk. It should be safe for most pages, but it could potentially cause reflow of the page. If different content (with substantially different styles) is served for the same URL based on cookies, IP, user agent, etc., then this optimization could potentially show unstyled content before it loads the page completely, or in certain cases it could break rendering completely.

prioritize_critical_css optimization adds inlined CSS to the HTML, increasing its size. The overhead of the extra inlined CSS can outweigh the benefit if the CSS resources are already in the browser's cache. However it will still benefit from faster processing of the CSS in the browser.

Example

soon available