WordPress is a great CMS and blogging platform. One weakness that it suffers from, however, is it can be pretty slow with default settings.
Without making some tweaks and optimizations, you could end up with a sluggish site. That’s not only a hassle for repeat visitors but will cause you to lose subscribers and customers. In this quick guide, I’ll cover all of the best ways that I’ve found to significantly speed up WordPress.
Why does WordPress site speed matter?
You only have a few seconds to capture a visitor’s attention when they land on your site for the first time. Sure, most people understand, but just how high is the bar nowadays?
Get ready to lose sleep at night: according to a report by the Microsoft search team, a 2-second delay in page responsiveness reduced user satisfaction by 3.8%, increased lost revenue per user by 4.3%, and reduced clicks by 4.3%. That’s money lost over poor performance.
If your site takes too long to load, most people are gone and won’t give you a second chance. Not only that, but Google now includes site speed in its ranking algorithm. That means that your site’s speed affects SEO, so if your site is slow, you’re now losing visitors from impatience and reduced rankings in search engines. Let’s make sure that doesn’t happen.
How to speed up WordPress
These steps to speed up WordPress are not ordered by importance or any other criteria. I’ve just collected everything I’ve learned around how to speed up WordPress page loads and listed them all here. I guarantee that applying a few will help speed up your WordPress site.
1. Choose a good host
When starting out, a shared host might seem like a bargain (“Unlimited page views!”). It comes at another cost: incredibly slow site speed and frequent down time during high traffic periods.
If you plan on publishing popular content or running a high-traffic website, you’re hindering yourself by running your WordPress site on shared hosting.The stress of your site going down after getting a big feature is enough to create a few early gray hairs: don’t be a victim, invest in proper hosting.
The one WordPress host I continually recommend is WP Engine managed WordPress hosting.
Note: Above is my personal referral link which provides a small discount (and grants me a small commission) if you use it. I only recommend WP Engine because I’ve used it for nearly a decade.
My sites running WordPress are always fast, never have downtime when I earn links or mentions from big publishers, and the back-end is very easy to use. Last but not least, their customer support is consistently helpful, which is a must when it comes to hosting. The staff is friendly, patient, and well-versed on the ins and outs of WordPress. They’ll be your safety net for any problem that may arise.
Head on over to their homepage for WordPress users and check out their offerings. Or, at the very least, shop around to find another service platform with a great track record for speed, uptime, and customer support.
2. Start with a solid framework/theme
You might be surprised to hear this, but many of the default WordPress themes are lightweight and pretty fast. That’s primarily because they keep the features and functionality dead simple. That’s the opposite of a number of bloated drag-and-drop frameworks which offer lots of features, but come at the cost of slowing your site to a crawl—no matter what their homepage says.
From my experience, one of the fastest loading premium frameworks is still the Thesis Theme Framework, especially the new Focus skin. I’m using a completely bare bones version on this site, but I personally love simplicity. And Thesis surpasses the basic WordPress themes by being far easier to customize.
It’s an incredibly solid framework that won’t slow you down with excess plugins or custom edits. Make the changes right from the theme and avoid bloat while you customize. I’ll take it.
3. Use an effective caching plugin
WordPress plugins are obviously quite useful, but some of the best fall under the caching category, as they drastically improve page load time, and best of all, all of them on WordPress.org are free and easy to use on your site.
By far my favorite is W3 Total Cache, I wouldn’t recommend or use any other caching plugin, it has all of the features you need and is extremely easy to install and use. Simply install and activate, and watch as your pages load faster as various elements are cached.
4. Use a content delivery network (CDN)
A CDN, or content delivery network, takes all the static files on your WordPress website—such as CSS, Javascript, and images—and lets visitors download them as fast by serving the files on servers as close to them as possible.
I personally use the StackPath Content Delivery Network on my WordPress sites, as I’ve found that they have the most reasonable prices and their dashboard is very simple to use and comes with video tutorials for setting it up, which takes only a few minutes.
5. Optimize images
Image optimizers help you reduce the file size of your images without wildly reducing their quality. That’s a good thing, because one of the biggest culprits of slow load times are massive .png files embedded throughout the page—don’t make that rookie mistake.
Squoosh is by far the best free image optimizer on the internet, and was created by the Google Chrome team. The default file Squoosh uses is MozJPEG, which reduces image file sizes by 50-80% with no noticeable loss in quality. However, you can also select other lightweight image types like .webp.
If you’re like me and publish a lot of content, optimizing every image manually can be time consuming.
Fortunately, there’s a great free plugin called Smush which will optimize all of your images automatically as you’re uploading them to WordPress. No reason not to install this plugin, in my opinion.
And if you prefer to manage this on your desktop, I really like Squash for Mac users.
6. Optimize your homepage
There isn’t one single tweak that will optimize your WordPress homepage, but there are a few small steps you can take to speed things up. Your homepage is likely one of the most important parts of your site because new visitors will land there frequently and it starts the customer journey.
Here are a few steps you can take to speed up the homepage of your WordPress site:
- Show excerpts instead of full posts.
- Reduce the number of posts on the page. I like showing between 5-7.
- Remove unnecessary sharing widgets from the home page—include them only in posts.
- Remove inactive plugins and widgets that you don’t need.
- Keep it minimal. Readers are here for content, not 8,000 widgets on the homepage.
Overall, a clean and focused homepage design will not only help your website look good and get readers to where they want to go, but it will also load faster.
7. Optimize your WordPress database
I’m certainly getting a lot of mileage out of the word “optimize” in this post.
Optimizing your WordPress database through a very tedious and extremely boring manual process, or you can simply use the WP-Optimize plugin.
This plugin lets you do just one simple task: optimize your database (eliminating spam comments, post revisions, drafts, tables, etc.) to reduce their overhead. I’d also consider the WP-DB Manager plugin, which can schedule dates for database optimization.
8. Disable hotlinking and leeching of your content
Hotlinking is a form of bandwidth “theft.” It occurs when other sites directly link to the images on your site from their articles making your server load increasingly high.
This can add up as other websites and bloggers scrape your posts or images after they become popular, and it’s a must-do if you create custom images for your site on a regular basis. Place this code in your root .htaccess file:
disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?sparringmind.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?feeds2.feedburner.com/sparringmind [NC] RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
You’ll notice that the code includes my feed and you’ll need to replace it with your feed’s name, otherwise your images won’t appear correctly.
9. Add an expires header to static resources
An Expires header is a way to specify a time far enough in the future so that the clients (browsers) don’t have to re-fetch any static content (such as css file, javascript, images etc). This way can cut your load time significantly for your regular users. You need to copy and paste the following code in your root .htaccess file:
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
The above numbers are set for a month (in seconds), you can change them as you see fit.
10. Adjust Gravatar images
You’ll notice comments on most of my sites feature no Gravatar image. This is not an aesthetic choice, I did it because it improves page loads by simply having no image where there would normally be a silly Gravatar logo.
Some blogs go as far to disable comments throughout their site, which is also an option. You can do either, just know that it will at least benefit your site speed if you set the default image (found in “Discussion,” under the settings tab in the WordPress dashboard) to a blank space rather than a default image.
11. Add LazyLoad to your images
LazyLoad is the process of having only the images above the fold load—or, only the images visible in the visitor’s browser window. Then, when the reader scrolls down, the other images begin to load, just before they come into view.
This will not only speed up your page loads, it can also save bandwidth by loading less data for users who don’t scroll all the way down on your pages. To do this automatically, install the jQuery Image Lazy Load plugin.
12. Control the amount of post revisions stored
I saved this post to draft about fifteen times. WordPress, left to its own devices, would store every single one of these drafts, indefinitely. Now, when this post is done and published, why would I need all of those drafts stored?
That’s why I use the Revision Control plugin to make sure I keep post revisions to a minimum, set it to two or three so you have something to fall back on in case you make a mistake, but not too high that you clutter your backend with unnecessary amounts of drafted posts.
13. Turn off pingbacks and trackbacks
By default, WordPress interacts with other blogs that are equipped with pingbacks and trackbacks. Every time another blog mentions you, it notifies your site, which in turn updates data on the post. Turning this off will not destroy the backlinks to your site, just the setting that generates a lot of work for your site.
For more detail, read this explanation of WordPress Pingbacks, Trackbacks and Linkbacks.
14. Replace PHP with static HTML, when necessary
This one is a little bit advanced, but can drastically cut down your load time if you are desperate to include page load speeds, so I included it.
I’d be doing this great post injustice if I didn’t link to it for this topic, as it taught me how to easily do this myself, in a few minutes. So go there and check it out, it wrote it out in plainer terms than I ever could.
15. Use CloudFlare
This is similar to the section above on using CDN’s, but I’ve become so fond of CloudFlare since I discussed it in my best web analytics post that I’ve decided to include it separately here.
CloudFlare, along with the W3 Total Cache plugin discussed above, are a really potent combination; they integrate with each other and will greatly improve not only the speed, but the security of your site.