Websites and Tech

Render-Blocking Resources

Also called Blocking CSS, blocking JavaScript, critical rendering path

Files, usually CSS or JavaScript, that a browser must download and process before it can show anything on screen.

Quick facts: Render-Blocking Resources

Category
Websites and Tech
Also called
Blocking CSS, blocking JavaScript, critical rendering path
Level
Advanced
Affects
How soon a page appears, Core Web Vitals, paid traffic conversion
Where to see it
PageSpeed Insights, Chrome DevTools coverage and network tabs, Google Tag Manager
In this article4
  1. How render-blocking resources work
  2. Why render-blocking resources matter
  3. Where it goes wrong
  4. How to act on it

How render-blocking resources work

A browser builds a page in order. It reads the HTML, and whenever it meets a stylesheet or a script it may have to stop and deal with that file before carrying on. Stylesheets block on purpose: showing text before the styling arrives would flash unstyled content, so the browser waits. Scripts loaded the ordinary way block too, because a script is allowed to rewrite the page it appears in, and the browser cannot know whether this one will.

The result is a queue in front of the first pixel. Each blocking file must be requested, downloaded and processed before anything appears, and each one may pull in others. This is why a page can be blank for an uncomfortable stretch even though the server responded quickly — the wait is happening in the browser, after delivery, not on the way there.

Why render-blocking resources matter

They set the floor on how fast a page can possibly feel. You can compress every image and still watch visitors stare at white space, because none of the content is allowed to paint until the queue clears. On a mid-range phone the effect is amplified, since processing the files takes noticeably longer than it does on the machine the site was built on.

They also accumulate quietly. A theme adds its stylesheet, each plugin adds another, a font service adds one more, and marketing adds tags through a tag manager. Nobody removes anything, so the queue grows with the site’s age rather than with its complexity, and the pages you most want to be fast — landing pages behind paid clicks — carry the same weight as everything else.

Where it goes wrong

The most common error is deferring scripts indiscriminately because a speed tool suggested it. Menus stop opening, sliders break, forms silently fail to validate, and nobody notices until enquiries dry up. Deferring is safe for scripts that do not have to run before the page is usable, and unsafe for those that do.

Stacking optimisation plugins causes the same class of problem. Two tools each combining, minifying and deferring the same files produce conflicts neither one anticipated. Meanwhile the real cause often sits outside the site entirely: third-party tags for chat, heat mapping, ads and analytics, loaded early, from servers you do not control. A related trap is optimising for the score rather than the visitor — hiding work behind a delay until the first interaction can flatter a test while the page still feels slow to use.

How to act on it

Measure before touching anything, using both a lab tool such as PageSpeed Insights and the field data from real visitors, then work in the order of what is actually blocking. Removing beats deferring: unused stylesheets from a plugin you no longer run, a font weight nobody uses, a script left over from a campaign that ended.

For what remains, load non-essential scripts with defer or async, inline the small amount of styling needed for the top of the page and let the rest arrive afterwards, and self-host fonts rather than waiting on another domain. Audit tags in Google Tag Manager as ruthlessly as plugins, because each one is a request in the queue. Test the site properly afterwards — menus, forms, checkout — on a real phone, and keep the fix inside a broader page speed effort that also covers caching and lighter images, since these problems compound each other.

Do and do not

Do

  • Measure what is blocking before changing anything
  • Remove unused stylesheets and scripts before deferring them
  • Test menus, forms and checkout after every change

Do not

  • Defer every script because a tool suggested it
  • Run two optimisation plugins over the same files
  • Chase a lab score while ignoring real visitor data

Questions people ask about this

Is it safe to defer all JavaScript?

No, and doing it blindly is how sites break. Scripts that build the navigation, run a slider or validate a form need to be available when the visitor first interacts, while analytics, chat widgets and anything cosmetic can wait. Defer in stages, and test menus, forms and checkout after each change rather than trusting the score alone.

Why is my page blank for a moment even on fast hosting?

Because the delay is happening in the browser rather than on the server. Once the HTML arrives, the browser still has to fetch and process every blocking stylesheet and script before it may paint anything. Fast hosting shortens the delivery; it does not shorten that queue. Reducing and deferring those files is what removes the blank period.

Do third-party tags count as render-blocking?

They can, and they are often the worst offenders because they load from servers you do not control. A chat widget, a heat mapping script or an ad tag placed early in the page makes your visitors wait on someone else's infrastructure. Load them asynchronously, remove any you are not actively using, and review your tag manager regularly.

Related terms

Found this useful?

Share it, or ask an AI to summarise it

Back to the glossary

Knowing the term is the easy part

Applying it to your own site and budget is the work. Book a call and I will tell you what actually applies to you.