Skip to main content

Fix Guides

How to Fix Render-Blocking Resources

Stop CSS and JavaScript delaying the first paint.

Quick fix

To fix render-blocking resources, add defer to non-critical scripts, use async only when order does not matter, inline critical above-the-fold CSS, load full stylesheets asynchronously, defer third-party tags, and preload only essential fonts. Re-run PageSpeed to confirm.

Scripts and styles in the head block rendering until they download and parse. Deferring non-critical assets lets the browser paint sooner — often the quickest win for First Contentful Paint and LCP after images and TTFB.

Check your website

See how your site handles how to fix render-blocking resources — free, no account needed.

Business impact

Render blocking is why users see a white screen even when your server responded quickly. Fixing it makes the site feel alive within a second — a direct improvement to perceived quality and bounce rate.

Why this happens

PageSpeed lists specific blocking URLs. Typical blockers: analytics in head without defer; large CSS files; synchronous jQuery and plugins; font CSS blocking render. Fix: defer/async scripts, critical CSS inline, media="print" onload trick for non-critical CSS, font-display: swap.

How to confirm the issue

Manually: PageSpeed → "Eliminate render-blocking resources" lists URLs and estimated savings.

With Plexa Trust: PageSpeed findings; re-scan after deferring scripts.

Step-by-step fix

  1. List every render-blocking URL from PageSpeed.

  2. Add defer to scripts that do not need to run immediately.

  3. Move non-critical scripts to end of body or load after interaction.

  4. Inline critical CSS; defer the rest.

  5. Audit and remove unused third-party scripts.

  6. Use font-display: swap on web fonts.

  7. Re-test PageSpeed.

Platform-specific fixes

WordPress

  1. Enable "Defer JavaScript" in caching plugin.

  2. Move analytics to footer or use delayed loading.

  3. Reduce plugin count — each may add blocking scripts.

Google Tag Manager

  1. Load GTM with defer/async pattern per Google docs.

  2. Audit tags — remove unused ones.

Custom HTML

  1. Change <script src="..."> to <script src="..." defer>.

  2. Extract above-fold CSS into a small inline style block.

How to verify the fix

  • Default new scripts to defer.

  • Fix the largest blocking URLs first — PageSpeed ranks by savings.

  • Test checkout and forms after deferring — some scripts need order.

Common mistakes

  • Using async on scripts that depend on execution order.

  • Deferring scripts that must run before first paint (rare).

  • Inlining entire large stylesheets instead of just critical CSS.

Frequently asked questions

defer vs async?

defer preserves order and runs after HTML parse. async runs when ready, out of order. Use defer for most scripts.

Will defer break jQuery plugins?

Ensure jQuery loads before dependent scripts — both deferred in order works.

What is critical CSS?

The minimal CSS needed to style above-the-fold content, inlined in head.

Can I defer CSS?

Non-critical CSS can load asynchronously; critical CSS should be inlined.

Do fonts block rendering?

Font CSS can. Use font-display: swap and preload only essential fonts.

What about third-party chat widgets?

Load after idle or first interaction — they are common blockers.

Will this help INP too?

Yes — less main-thread work during load leaves more capacity for interactions.

How do I confirm it worked?

PageSpeed render-blocking audit clears or shrinks; FCP/LCP improve.

Think you've fixed it?

Run a free scan to verify the issue is resolved. Upgrade to Pro on Plexa Trust for the full audit, monitoring alerts, and score history.

Verify with a free scan

Upgrade to Pro for monitoring