Skip to main content

Confirm

Are you sure?

SEO · Checked on every page

Render-blocking resourcesWhat it checks and how to fix it

What it checks

Counts the resources in <head> that block the first render: stylesheets without a print or conditional media query, external scripts without async, defer or type="module", and inline scripts over 1,000 characters. None passes, one to three is a warning, and four or more fail the check.

Why it matters

The browser cannot paint anything until it has downloaded and processed every blocking resource in the head, so each one adds a round trip before the visitor sees content. That delay shows up directly in First Contentful Paint and Largest Contentful Paint, which are part of Core Web Vitals and affect both rankings and bounce rate, especially on mobile networks.

How to fix it

Load scripts with defer (or async for independent scripts such as analytics), and keep only the CSS needed for the first screen blocking.

<!-- scripts: defer keeps execution order and runs after parsing -->
<script src="/assets/application.js" defer></script>
<script src="https://analytics.example.com/script.js" async></script>

<!-- print styles never block rendering -->
<link rel="stylesheet" href="/assets/print.css" media="print">

<!-- non-critical CSS: load it without blocking, then apply it -->
<link rel="preload" href="/assets/below-the-fold.css" as="style" onload="this.rel='stylesheet'">

In Rails:

<%= javascript_include_tag "application", defer: true %>
<%= javascript_importmap_tags %> <%# importmap modules are already non-blocking %>

Move large inline scripts out of <head> into a deferred file, and inline only a small block of critical CSS for above-the-fold content.

Monitor this automatically

Full Stack Audit runs this check and 126 others on your site on a schedule, and emails you when one that passed starts failing.

More SEO checks