Render-Blocking Resources.
CSS/JS that blocks page rendering — defer or inline critical resources
What does this check test?
Render-blocking resources are CSS stylesheets and JavaScript files in the `<head>` that prevent the browser from rendering any content until they are fully downloaded and processed. By default, all `<link rel="stylesheet">` and `<script>` tags (without `async` or `defer`) in the `<head>` are render-blocking. The browser must build the CSSOM (CSS Object Model) from all blocking CSS and execute all blocking JS before it can paint the first pixel. This check identifies resources that delay First Contentful Paint and Largest Contentful Paint.
Why does it matter?
Render-blocking resources are one of the most common causes of slow FCP and LCP. A single large CSS file or synchronous JavaScript bundle in the `<head>` can delay content rendering by seconds, even if the HTML content is already available. Users see a blank white screen while these resources download and process. Eliminating render-blocking resources is often the highest-impact performance optimization available — it can improve FCP by 1-3 seconds on typical sites.
Who is affected?
Nearly every website has some render-blocking resources, but sites using large CSS frameworks (Bootstrap, Tailwind with unused utilities), multiple Google Fonts loaded synchronously, legacy JavaScript libraries loaded in `<head>`, and third-party widgets that inject blocking scripts are most affected. WordPress sites with many plugins that each add their own CSS/JS files are particularly prone to this issue.
Where does this apply?
Render-blocking resources are found in the HTML `<head>` section: `<link rel="stylesheet">` tags for external CSS, `<style>` tags with `@import` rules, and `<script>` tags without `async` or `defer` attributes. Chrome DevTools Performance panel highlights render-blocking resources in the 'Network' section, and Lighthouse specifically flags each blocking resource with its estimated time savings.
How to fix it
<head>
<style>/* critical above-the-fold styles */</style>
<link rel="preload" href="/styles.css" as="style"
onload="this.onload=null;this.rel='stylesheet'" />
<noscript><link rel="stylesheet" href="/styles.css" /></noscript>
</head> <script defer src="/app.js"></script>
<script async src="/analytics.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> References
- Eliminate render-blocking resources — Chrome Developers
- Critical Rendering Path — web.dev
- Extract Critical CSS — web.dev
AppVet checks Render-Blocking Resources automatically
Run a free performance scan and get a full report with actionable fixes, including a Fix with AI prompt you can paste into any coding tool.
Run Audit