Have you ever finished creating a WordPress website, loved everything about it, and promptly began to hate it after realizing it takes forever to load? Mastering the elimination of render-blocking resources will help diagnose this problem. But how?
Not only are slow loading speeds a nuisance for you and your visitors, but they can also cost you significantly when it comes to SEO. Since 2010, Google algorithms have accounted for loading speed in ranking decisions, so slow pages appear lower on results pages.
You might be familiar with the common culprits of poor page performance — excessive content, uncompressed image files, insufficient hosting, and lack of caching to name a few. But there’s another often-overlooked perpetrator in play: render-blocking resources.
What are render-blocking resources?
Render-blocking resources are portions of code in website files, usually CSS and JavaScript, that prevent a web page from loading quickly. These resources take a relatively long time for the browser to process, but may not be necessary for the immediate user experience. Render-blocking resources can be removed or delayed until the browser needs to process them.
Don’t get me wrong — CSS and JavaScript are great. Without CSS, websites would be walls of plain text. Without Ja=ooovaScript, we wouldn’t be able to add dynamic, interactive, engaging elements to our websites. But, if executed at the wrong time, both CSS and JavaScript can put a dent in your website performance.
Here’s why: When a web browser first loads a web page, it parses all the page’s HTML before displaying it onscreen to a visitor. When the browser encounters a link to a CSS file, a JavaScript file, or an inline script (i.e., JavaScript code in the HTML document itself), it pauses the HTML parsing to fetch and execute the code, which slows everything down.
If you’ve optimized your page performance in WordPress and are still experiencing problems, render-blocking resources may be the culprit. Sometimes this code is important to run on the first load, but much of the time it can be removed or pushed until the very end of the queue.
In this post, we’ll show you how to eliminate this pesky code from your WordPress website and give your performance a boost.
If you’d rather follow along with a video, check out this walkthrough created by WP Casts:
How to Eliminate Render-Blocking Resources in WordPress
- Identify the render-blocking resources.
- Eliminate the render-blocking resources manually or with a plugin.
- Re-run a site scan.
- Check your website for bugs.
1. Identify the render-blocking resources.
Before making any changes, you first need to locate the render-blocking resources. The best way to do this is with a free online speed test like Google’s PageSpeed Insights tool. Paste in your site’s URL and click Analyze.
When the scan is complete, Google assigns your website an aggregate speed score, from 0 (slowest) to 100 (fastest). A score in the 50 to 80 range is average, so you’ll want to land in the upper part of this range or above it.
To identify render-blocking files that are slowing your page, scroll down to Opportunities, then open the Eliminate render-blocking resources accordion.
You’ll see a list of files slowing the “first paint” of your page — these files affect the loading time of all content that appears in the browser window on the initial page load. This is also called “above-the-fold” content.
Take note of any files ending with the extensions .css and .js, as these are the ones you’ll want to focus on.
2. Eliminate the render-blocking resources manually or with a plugin.
Now that you’ve identified the issue, there are two ways to go about fixing it in WordPress: manually, or with a plugin. We’ll cover the plugin solution first.
Several WordPress plugins can reduce the effect of render-blocking resources on WordPress websites. I’ll be covering two popular solutions, Autoptimize and W3 Total Cache.
How To Eliminate Render-Blocking Resources With the Autoptimize Plugin
Autoptimize is a free plugin that modifies your website files to deliver faster pages. Autoptimize works by aggregating files, minifying code (i.e., reducing file size by deleting redundant or unnecessary characters), and delaying the loading of render-blocking resources.
Since you’re modifying the backend of your site, remember to use caution with this plugin or any similar plugin. To eliminate render-blocking resources with Autoptimize:
1. Install and activate the Autoptimize plugin.
2. From your WordPress dashboard, select, Settings > Autoptimize.
3. Under JavaScript Options, check the box next to Optimize JavaScript code?.
4. If the box next to Aggregate JS-files? is checked, uncheck it.
5. Under CSS Options, check the box next to Optimize CSS Code?.
6. If the box next to Aggregate CSS-files? is checked, uncheck it.
7. At the bottom of the page, click Save Changes and Empty Cache.
8. Scan your website with PageSpeed Insights and check for an improvement.
9. If PageSpeed Insights still reports render-blocking JavaScript files, return to Settings > Autoptimize and check the boxes next to Aggregate JS-files? and Aggregate CSS-files?. Then, click Save Changes and Empty Cache and scan again.
How To Eliminate Render-Blocking Resources With the W3 Total Cache Plugin
W3 Total Cache is a widely-used caching plugin that helps address laggy code. To eliminate render-blocking JavaScript with W3 Total Cache:
1. Install and activate the W3 Total Cache plugin.
2. A new Performance option will be added to your WordPress dashboard menu. Select Performance > General Settings.
3. In the Minify section, check the box next to Minify, then set Minify mode to Manual.
4. Click Save all settings at the bottom of the Minify section.
5. In the dashboard menu, select Performance > Minify.
6. In the JS section next to JS minify settings, make sure the Enable box is checked. Then, under Operations in areas, open the first Embed type dropdown and choose Non-blocking using “defer”.
7. Under JS file management, choose your active theme from the Theme dropdown.
8. Refer back to your PageSpeed Insights results from your earlier scan. For each item under Eliminate render-blocking resources ending in .js, click Add a script. Then, copy the full URL of the JavaScript resource from PageSpeed Insights and paste it into the File URI field.
9. Once you’ve pasted in all render-blocking JavaScript resources reported by PageSpeed Insights, click Save Settings & Purge Caches at the bottom of the JS section.
10. In the CSS section next to CSS minify settings, check the box next to CSS minify settings and make sure the Minify method is set to Combine & Minify.
11. Under CSS file management, choose your active theme from the Theme dropdown.
12. For each item under Eliminate render-blocking resources ending in .css in your PageSpeed Insights scan results, click Add a style sheet. Then, copy the full URL of the CSS resource from PageSpeed Insights and paste it into the File URI field.
13. Once you’ve pasted in all render-blocking CSS resources reported by PageSpeed Insights, click Save Settings & Purge Caches at the bottom of the CSS section.
14. Scan your website with PageSpeed Insights and check for an improvement.
How to Eliminate Render-Blocking JavaScript Manually
Plugins can handle the backend work for you. Then again, plugins themselves are just more files added to your web server. If you want to limit these extra files, or if you’d just rather handle the programming yourself, you can address the render-blocking JavaScript manually.
To do this, locate the <script> tags in your website files for the resources identified in your PageSpeed Insights scan. They will look something like this:
<script src="resource.js">
<script> tags tell the browser to load and execute the script identified by the src (source) attribute. The problem with this process is that this loading and executing delays the browser’s parsing of the web page, which impacts the overall load time:
To resolve this, you can add either the async (asynchronous) or the defer attribute to the script tags for render-blocking resources. async and defer are placed like so:
<script src="resource.js" async>
<script src="resource.js" defer>
While they have similar effects on load times, these attributes tell the browser to do different things.
The async attribute signals the browser to load the JavaScript resource while parsing the rest of the page and executes this script immediately after it has been loaded. Executing the script pauses HTML parsing:
Scripts with the defer attribute are also loaded while the page is parsed, but these scripts are delayed from loading until after the first render or until after the more essential portions have loaded:
The defer and async attributes should not be used together on the same resource, but one may be better suited for a particular resource than the other. Generally, if a non-essential script relies on a script to run before it, use defer. The defer attribute ensures that the script will run after the preceding necessary script. Otherwise, use async.
3. Re-run a site scan.
After making your changes, conduct one final scan of your website through PageSpeed Insights and see what impact your changes had on your score.
Hopefully, there’s a noticeable improvement, but don’t worry if not. Many factors can inhibit page performance, and you may have to do some more digging to find the source of poor performance.
4. Check your website for bugs.
In addition to a rescan, check your pages to make sure your site works. Does the page load correctly? Are all elements showing up? If something is broken or fails to load properly, undo your changes and troubleshoot the issue.
If you’ve reached a point where you’ve repeatedly tried various measures with minimal speed gains, it might be best to consider other ways to speed up your pages, rather than risk breaking your site.
Optimizing Your WordPress Site for Performance
Many factors contribute to your users’ experience on your website, but few are more important than load time. Whenever you make big changes to content or appearance on your WordPress site, you should always consider how such changes affect performance.
Now that you’ve eliminated the render-blocking resources, you should continue to optimize your website’s speed by analyzing other features that are known to slow down performance. Try to incorporate regular speed testing into your site maintenance schedule — staying ahead of any potential issues will be critical to your success.