# Render-Blocking Resources Checker

https://rankproof.eu/tools/seo-render-blocking

## Short answer

Find the scripts and stylesheets that block rendering, plus script habits that slow pages down: missing async/defer, inline event handlers and document.write.

## What It Does

Checks a page's HTML in two parts. Render-blocking resources: scripts in `<head>` without `async` or `defer`, stylesheets that block rendering and CSS `@import` rules. Script hygiene: how many external and inline scripts the page loads, whether external scripts use `async` or `defer`, inline event handlers such as `onclick`, `document.write` calls and whether ES modules are used.

## How It Works

1. Enter a page URL or paste its HTML
2. We parse the `<head>` and every `<script>` on the page
3. Flag render-blocking scripts and stylesheets, then check the scripts for async/defer, inline handlers and document.write
4. Return a result for each part, with the resources we flagged

## Sample input + output

INPUT

```text
url: https://rankproof.eu/tools
```

OUTPUT

```text
Render-blocking resources: 2
  <script src="analytics.js">              blocking
  <link rel="stylesheet" href="theme.css"> blocking
  no @import in CSS                        OK

Script hygiene
  scripts: 7 (5 external, 2 inline)
  external scripts use async or defer      warn
  no inline event handlers                 OK
  no document.write                        OK
  uses ES modules                          OK

0 of 2 areas look good
```

## Why It Matters

A browser has to download and run every blocking script and stylesheet in `<head>` before it can paint anything, which delays First Contentful Paint and often Largest Contentful Paint. `document.write` makes this worse — Chrome may refuse to run scripts it injects on slow connections — and inline handlers stand in the way of a strict Content-Security-Policy.

## Who Uses This

- **Performance Engineer**: Before a busy season, move every blocking script to async or defer and re-check that nothing new crept into `<head>`.
- **Frontend Developer**: Find the analytics or widget snippet that still loads synchronously and switch it to a deferred load.
- **SEO Specialist**: Check the templates behind your slowest pages and hand the flagged resources to the development team.

## Frequently Asked Questions

### How do I un-block a stylesheet?

For non-critical CSS, add `media="print"` and `onload="this.media='all'"`. For critical CSS, inline it in `<style>` tags.

### Can I just defer all my scripts?

Not always — scripts that must run before first paint, polyfills required for layout and inline scripts cannot always wait. Audit them by impact.

### What is wrong with document.write?

It forces the browser to pause parsing, and Chrome may block the scripts it injects on slow connections. Insert elements with DOM methods instead.

### Why flag inline event handlers?

Handlers such as `onclick="…"` mix behavior into markup and need `unsafe-inline` in a Content-Security-Policy. Attach listeners from a script file instead.

### What about third-party widgets?

Load them with `<script async>` or through a tag manager with deferred loading. Better still, load widgets below the fold only on scroll or interaction.

## Related Tools in SEO Analysis

- [Title & Meta Description Checker](https://rankproof.eu/tools/seo-meta-title)
- [Heading Tag Checker](https://rankproof.eu/tools/seo-heading-tags)
- [Image Alt Text Checker](https://rankproof.eu/tools/seo-image-alt)
- [Canonical URL Checker](https://rankproof.eu/tools/seo-canonical-url)
- [Robots.txt Analyzer](https://rankproof.eu/tools/seo-robots-txt)
- [robots.txt Generator](https://rankproof.eu/tools/seo-robots-txt-generator)
