WordPress powers 39.6% of all websites on the internet, and 64.1% of all the websites that use content management systems (CMS). With those statistics in mind, it’s pertinent to understand this means there are thousands of WordPress themes, plugins, and other technologies that are all housed in one place.
If you’re new to WordPress, you may be tempted to install a lot of plugins and have a combination of things that don’t necessarily work together. This can cause your website to bottleneck and in turn, slow your website down. Many people may not even realise these issues exist, living with a poor performing website and having no idea how to resolve it.
Today we’re going to talk about how to improve the speed of your WordPress website so that you can boost your SEO and provide a user experience that’s enjoyable for your website visitors.
1. Hosting to Speed Up WordPress
When considering how to speed up WordPress, it’s vital that you start with the first piece of the puzzle, and that’s your website hosting company. When you sign up for website hosting, you’re asking a company to use a server to store all of your website’s data including images, videos, content, databases, etc.
Delving deeper, you’ll also have a choice of the type of website hosting you opt for, e.g. shared hosting, WordPress hosting, cloud hosting, and so on. Each type of website hosting has its own pros and cons so you’ll want to choose the right hosting for your needs.
Shared Hosting
Shared hosting is the most common type of website hosting and is often the cheapest. With prices starting from as little as $0.99 per month by signing up to Hostinger, many are tempted by the affordable cost point and features that come with it.
However, you may find that shared hosting doesn’t suit your needs because of the nature of this type of hosting. As the name suggests, shared hosting means that you’re sharing a server with lots of other customers, therefore the space and resources on the server are shared. If one or more customers start to exceed their resource limits, this could cause other customers to experience poor website speeds on their own site.
In most cases, shared web hosting companies offer some kind of uptime guarantee. In this area, I’d expect no less than 99.9% to ensure that your website is online and accessible the majority of the time. However, this isn’t always the case and even when hosts make guarantees, they can’t always stick to them. If this does happen, you’ll likely be compensated with some free hosting or a discount, but you’d need to check your web host’s terms and conditions before signing up.
Managed WordPress Hosting
Managed WordPress hosting is the ultimate VIP experience when it comes to hosting your WordPress website. If you’re new to WordPress hosting or simply don’t have the time to manage your website in terms of back-end tasks and security, this type of hosting may suit your needs.
Managed WordPress hosting usually means that your web host will ensure your WordPress website is updated, offer automatic backups, one-click staging environments, and in most cases the support staff will be experts in the WordPress realm.
With this type of hosting, your website will be looked after and speeds are generally very good for you and your customers, however, it does mean you have little control of your website on your web server. On the other hand, you won’t have to do anything to keep your website secure, knowing that the experts have it all in hand. Managed WordPress hosting, as you might expect, is more costly, with plans starting from around $20 per month
VPS Hosting
VPS hosting, also known as Virtual Private Server hosting, tends to offer the best of both worlds and is kind of the middle man in WordPress hosting. VPS hosting is more expensive than shared WordPress hosting, but not as expensive as managed WordPress hosting.
With VPS hosting, you’re still sharing some server resources with other customers, but you have much more control over your web hosting and website, and it often means you will experience better speeds, performance, and overall optimization.
2. Consider Website Caching
Caching is one of the easiest and most effective ways to speed up your WordPress website. However, before showing you how to implement and use caching, it’s worth understanding what it is and how it works.
What is Caching?
When someone visits your WordPress website, a request is sent to the server. The server processes the request and sends the results back to the user’s browser to display your website. It displays your website’s content, files likes images, databases for login details, etc.
Because websites can contain a lot of data, the server requests can take a long time meaning your user’s are waiting even longer to view your website. If your website takes too long to load, your user’s may abandon your website and never return – gulp!
WordPress website caching tells your website’s server to store certain static files that are unlikely to change, e.g. page headers, logos, etc. It will therefore remember this data so that when a user returns to your website, the server doesn’t have to work as hard to generate a page view, meaning your website loads a lot faster.
By using less resources to display content to your website visitors, your server has less strain and can deliver faster speeds, thus resulting in a faster WordPress website.
Types of Caching
In terms of WordPress websites, there’s only really two types of caching which are:
- Server-level caching (e.g. CDN)
- Caching Plugins
Server-Level Caching
You may notice that when you sign up for your web hosting, one of the included features is “CloudFlare CDN“. This is caching software that is handled by your web hosting provider and is extremely easy to use. You won’t have to worry about which caching plugin to install, updating it, etc.
Caching Plugins
If your web host doesn’t provide caching software or you don’t fancy signing up for this type of software, you can use a WordPress caching plugin. There are free and premium plugins and they tend to be very simple to install, update, and manage.
W3 Total Cache is one of my personal favorites and is free to use with over 1+ million active installations.
3. Image Optimization
Images are one of the main causes of a slow loading WordPress website. Thankfully, image optimization is very easy to implement, making a difference to your WordPress website speeds.
Not only should you be doing this to increase the speed of your WordPress website, everyone should be implementing image optimization to ensure your website ranks well on search engines like Google. If your images aren’t optimized, you will be penalized.
Large images can cause your web pages to slow down which doesn’t create a good user experience. Optimizing images decreases their file sizes without losing visual quality. Image optimization software like TinyJPG and TinyPNG is free to use and you can upload multiple images at once.
Image Compression Plugins
Whilst software like TinyJPG is great to use, it can be very time consuming, especially if you’re trying to speed up your WordPress website.
There are some great WordPress plugins you can use instead, where in most cases they will automatically optimize any images you upload to your WordPress media library:
When selecting the best image optimization plugin, you’ll want to take a few things into consideration. Firstly, choose a plugin that compresses and optimizes your images externally. This will reduce the load on your server and will ensure your website isn’t slowing down.
Secondly, and we’ll talk more on this point later on, you’ll want to make sure you’re using responsive images. Responsive images will automatically display different image sizes depending on the type of device a user is using. As of Q4 2020, mobile devices accounted for 50.81% of all internet traffic.
4. Choose the Right Theme
A new WordPress theme can be very tempting, especially when there are so many to choose from. Whilst WordPress offers plenty of free and premium themes on their own website, there are loads of WordPress themes available on external websites like ThemeForest, so your search could go on and on.
However, before diving into buying or installing a shiny new theme, you’ll want to consider how the theme will effect your website’s performance:
- Features: These are nice to have, and a feature-rich template could lure you into a false sense of security. Why? Because you don’t want your website to be too feature-heavy, especially if you’re not going to use many features. Whilst you’re more than welcome to choose a feature-rich WordPress theme, it would be wise to disable the features that aren’t in use, e.g. Google Fonts, sliders, galleries, etc.
- Compatibility: Make sure your theme is compatible with the latest version of WordPress (currently 5.6 as of January 2021). If you’re planning on creating an online store or want to sell products or services online, your theme should be WooCommerce ready. Similarly, if you want to build a forum website, you’ll need to find a theme compatible with the likes of BuddyPress and bbPress.
4. Assess Your Plugins
WordPress plugins can transform your website from a basic website with limited functionality to a full blow online store, forum, membership website, etc. Plugins are really useful and they are just one of the reasons people flock to WordPress to build their websites.
However, too many plugins can cause your website to slow down. This isn’t due to the number of plugins per se, but more down to how well (or not) the plugins are managed. Again, just like choosing the right theme, choosing the right WordPress plugins is critical to maintaining your WordPress website’s speed.
One of the biggest issues people face with WordPress plugins is the uninstall process. No, I don’t mean clicking the uninstall button, I mean the things that go on behind the scenes of your website in the database. When you delete a WordPress plugin, you are often left with data in your database and over time, with the more plugins you have, this can cause your website to slow down.
Kinsta, shown below, display a great example of how uninstalling the Wordfence security plugin can leave behind over 20+ table in their WordPress database.
Whilst you can manually clean up your database tables, if you’re not familiar with this, I recommend using the Advanced Database Cleaner. Yes, it is another plugin, but it has a very good purpose. This premium plugin will scan your WordPress website and give you the option to delete orphaned tables that are associated with plugins that are no longer installed.
5. Store your Media Elsewhere
If your website requires you to host lots of large images, videos, or other files, it may be worth considering storing your files elsewhere. Offloading your server will take the strain off, much like a CDN, but it isn’t the same thing.
Storing your media files elsewhere requires you to physically move your files to a new location that isn’t your server. Your website will still display the files but they’ll reduce your disk space and reduce the number of queries back to your host.
Amazon S3 is object storage that allows you to store and retrieve an unlimited amount of data from anywhere. Pricing starts from $0.023 per GB for the first 50 TB / month. For smaller sites and blogs, this is not cost effective, however, for large websites you can rely on amazon to provide low cost storage solutions. The first year is free, up to 5 GB, which can often be cheaper than storing additional data and files through your web host.
6. Enable Hotlink Protection
Enabling hotlink protection can ensure that a large drain on resources is not put upon your server if others are directly linking to your images.
What is Hotlinking?
Hotlinking is when someone locates an image on a website or on the internet (e.g. Google Images) and links directly to the URL of the image, rather than saving it and uploading it to their website’s server. The image will be displayed wherever you paste the URL but it will be served from the original location where it’s stored (someone else’s web server).
It’s an extremely convenient way of placing an image on your website, however, it’s very lazy, uses someone else’s resources, and is essentially theft. It is not something that we condone and I’m sure you wouldn’t want that happening to your own website resources.
How do you prevent Hotlinking?
There are several ways in which you can prevent hotlinking and protect your website from being a victim of hotlinking. Remember when we spoke about CDNs to serve your website’s content faster to your website visitors? Many CDN providers like CloudFlare actually have hotlink protection built in for free. CDNs are one of the best ways to enable hotlink protection, and you’ll be hitting two birds with one stone in an effort to speed up your WordPress website.
Of course, with the fact that you’re using WordPress, you can install a hotlink protection plugin which are extremely easy to install and activate. However, I recommend researching the plugins carefully to ensure they are provided by trusted developers.
7. Run a Speed Test
In order to speed up WordPress, you should get a baseline of your WordPress website’s speed, it’s important to run a front-end speed test using a variety of tools and software available.
There are lots of speed test tools you can use, however, it’s worth picking one tool and sticking to it. Most of the tools will provide similar information, but if you start running tests and mixing and matching tools, you may end up getting yourself and your website into a muddle. For the purpose of my own website’s testing, I use GTMetrix to measure my WordPress website performance. If you want to use GTMetrix too, I recommend following my in-depth guide on how to use GTMetrix to speed up your website.
Some other things to consider when running a speed test or using a speed test tool are:
100/100 – Whilst it’s tempting to strive for a perfect score, a few points isn’t going to make much difference. The score is just a gauge as to how well your website is performing, but it’s a rough guide because there will be large websites who won’t get a perfect score, but actually perform very well. Focus on your website’s speed rather than the score itself.
Location, Location, Location: When running a speed test, you’ll notice each tool picks a data center to test from. It’s important to choose a test location that’s nearest to where your server’s data center is, and one that’s the furthest away to gauge exactly how fast your website loads for each audience. You may find that in order to change the location of your speed test you’ll need to sign up for a free account.
8. Minify HTML, CSS, and JavaScript
You may notice that some speed test tools recommend minification of HTML, CSS, and JavaScript. Essentially what that means is that the amount of data a browser has to download from your website is reduced. You can do this by removing unnecessary characters, spacing, and comments from the source code.
For developers, these characters and formatting are useful, however, for a browser to render the page it makes absolutely no difference, aside from causing delays in the amount of data it has to download.
Some useful WordPress plugins to easily minify your files are:
9. Optimize WordPress Comments
A successful WordPress blog or website could results in lots of comments causing performance issues for your website. To display comments on your website, your website’s database has to run a query, new entries are created for each comment, comments have to load when a user accesses your website, and external resources are often requested. That’s a lot of work to display comments which is understandable as to why it could cause your website to slow down.
Here are a few options in order to optimize your WordPress comments to speed up your WordPress website:
- Disable Comments – Disabling comments is quite simple, but you need to decide whether this is right for your website. Whilst disabling comments altogether is an easy option, it also means that high-quality comments won’t be crawled by Google and could impact your SEO score. However, if you are getting inundated with spam comments and don’t have any that add value to your website, it could be better to disable them.
- WordPress Comments System – The native WordPress comments system allows you to reduce the amount of comments that are loaded when your website or web page is initially loaded. You can break comments into pages with a number of top comments displayed on each page.
- Lazy Load Comments – Lazy loading comments will not cause your initial page rendering to slow down, so it’s worth checking out some plugins that can do this for you, e.g. Lazy Load for Comments or Disqus Conditional Load.
10. Mobile-First Optimization
Last and certainly by no means least, you should focus your website’s optimization on a mobile-first basis. Google’s mobile-first index rolled out in 2018 which means the mobile version of your website is what Google uses to index and rank your website. The aim is that website’s will be suitable and improve the mobile experience of users, so this needs to be a top priority when considering how to optimize your website.
In a Think With Google article, Google confirmed that the best practice was to aim for an average speed index of under 3 seconds to display mobile page content. However, in 2018, the average load time for a mobile site was a whopping 15 seconds. There’s no way the majority of users would wait that long for a website to load.
Speed is one of the most important factors; why? Because people will leave your website (bounce rate) if your website doesn’t load fast enough on their mobile device. It also affects usability and your SEO ranking, causing your conversions to plummet.
Case Study
I was recently contacted by a client, who I had worked with to host, build, and maintain their website. The website owner was concerned about a slowing website as she added more content, widgets, and features. I reviewed her website and the latest changes she had implemented, determined the issues via free third party tools, and in a matter of minutes was able to decrease her load time by an average of 30%!
The client wished not to be named, but gladly said I could share the results and WordPress speed up process with you all.
Here are the client’s specs:
Utilizing Pingdom’s free website speed test, I noted that the client’s website had a performance grade of [ D 67 ], but yet averaged a load time of 2.53 seconds. The site had all [ A 90+ ] scores for caching options (WP Engine is great at this!), but where the website lacked was primarily in its combination of external CSS and JavaScript.
I set out to find an automated solution to combine CSS & JS, and after some research happened upon the plugin Autoptimize. Autoptimize speeds up your website and helps you save bandwidth by aggregating and minimizing JS, CSS and HTML, and was developed by Frank Goossens, turl, and Optimizing Matters. It requires WordPress version 2.7 or higher, and is compatible up to WordPress version 4.5.3 as of the latest release of Autoptimize v2.0.2 in May 2016. There are currently over 100,000+ active installs.
Autoptimize makes optimizing your site really easy. It concatenates all scripts and styles, minifies and compresses them, adds expires headers, caches them, and moves styles to the page head and can move scripts to the footer. It also minifies the HTML code itself, making your page really lightweight. There are advanced options and an extensive API available to enable you to tailor Autoptimize to each and every site’s specific needs.
Again, my client was hosted with WPEngine, so she did not need to leverage a WordPress caching plugin, as WPEngine does this for you. In fact, WP Engine actually bans all caching plugins because, and I quote “we do it better, and we do it automatically”. How’s that for confidence!
The benefits of WP Engine’s cashing includes automatic page caching, object caching, and CDN management and URL rewriting. It’s all automatic, and they manage it for you so you don’t have to do anything. If you dig into the technical documentation for WP Engine, you’ll find that their proprietary page-caching system gets through-puts of 9,000 pages per second! Even the fastest WordPress caching plugins such as WP Super Cache and W3 Total Cache are significantly slower, translating to slower websites and barriers to scalibility.
The WordPress Optimization Process
I tried a variety of configurations within the Autoptimize plugin, but found that coupled with WP Engine’s proprietary caching system, the Autoptimize Settings below yielded the best results.*
Optimize HTML Code
Optimize JavaScript Code
Optimize CSS Code
I left the advanced settings as-is, with Force JavaScript in <head> turned on, as well as Save aggregated script/css as static files turned on under Cache Info.
*Note that these settings may need to differ when on a different web host, or when utilizing a caching plugin. I would, however, recommend you start with these three settings, re-run your speed tests, and then adjust from there.
Before WordPress Optimization
After WordPress Optimization
The results were stunning as the site went from a 2.53 second average to a 1.76 average, across the three testing locations provided by Pingdom. In addition, you’ll note in the above results screen shots that the website went from a an [ F ] grade for JavaScript and CSS combination, to a solid [ C ] score. There were still a few issues presented, such as a significant amount of redirects and extra JS strings, but the majority of these were due to third party widgets and features integrated throughout the client’s website. (when not on her server, there isn’t too much she can do about optimizing their code). Nontheless, we were both happy with a new averaged load time with a solid 1 in front of the numbers, as outlined below.
My client was ecstatic about the results as well, as she had been looking for a 1.XX second load time, writing me this reply:
“Within an hour of receiving your email I saw an uptick in web sales on my site. It could be an anomaly after the holiday [4th of July], but we’re trending up nearly 20% on the day! Thank you so much!”
Now this certainly isn’t proof of any direct correlation, as the sample size is less than 24-hours old and isn’t proven yet. But the initial verdict is that a 30% increase in speed may in fact correlate to a 20% increase in eCommerce sales. That’s pretty amazing!
Recommendations to Speed Up Your WordPress Website:
Get Premium WordPress Hosting
Consider a premium WordPress hosting company such as WP Engine that is built for speed, with automatic and integrated server-side caching.- If You Can’t Go Premium, Leverage Caching Plugins
If your budget doesn’t allow for a premium host like WP Engine, consider someone like SiteGround or Bluehost, and leverage a caching-plugin such as WP Super Cache, W3 Total Cache or HyperCache.
- Compress All Images & Graphics
When building your website, pay attention to image size, and compress JPG and PNG accordingly. (always try to shoot for 100kb or less in your image sizes!)
- Minify HTML, CSS, & JavaScriptAfter your caching is configured, images and larger graphics are optimized, install Autoptimize to combine and minify JS, CSS, and HTML.
- Keep Adjusting Your Plugin Settings
Keep adjusting your caching and Autoptimize plugins until you see a 1.XX in front of your load times!
I hope this tutorial was helpful. After years of working with WordPress, countless web hosts and caching plugins (both proprietary and open source), and manually optimizing CSS & JS from bulky WordPress themes, Autoptimize comes as a very welcomed free and highly effective plugin. I’ve installed it on many of my own websites, and encourage you to do the same.
Above all else, remember that speed first and foremost comes from choosing a fast web hosting company. You can optimize your code, install the right plugins, setup caching in the most efficient and effective manner, however without a fast host all those efforts will only go so far.
Speed Up WordPress: Making it work for you
If you’ve made some changes to your WordPress website after reading this post, please comment below to let me know how it turned out. Did you switch to WP Engine and see a drastic bump in your site’s speed? Did you install a caching plugin for the first time? Did you try Autoptimize?