19 Easy Ways to Speed Up Your WordPress Site

We will give you 9 Easy Ways to Speed Up Your WordPress Site. If you have been part of the virtual world for some time, it’s least likely that you haven’t heard of WordPress, but did you know?

When you visit a site and it takes a few seconds longer to load, what do you do? Leave the site or wait patiently for it to load completely? Of course, you will leave the site and it’s not just you.

Most web users expect a site to load in 2 seconds or less, and if it takes more than that, they tend to leave the site. And a 1-second delay in page response time will result in a 7% reduction in conversion rate.

The fact of the matter is that WordPress serves amazingly well as an efficient CMS platform, but it can slow down as well if it’s not optimized correctly. And trust me, you don’t want this. Why? Because a study by akamai.com shows that:

  • 47% of people showing up on a website expect the page to load in less than two seconds.
  • 40% are likely to move elsewhere from a web page that takes over three seconds to load.
  • 52% of online shoppers confessed to showing loyalty to a site whose web pages load quickly.

In this WordPress tutorial, you will see the most effective and tested tips for WordPress speed optimization. These are personally tested ways to optimize a WordPress blog for speed and these simple tips have a huge impact on the load time of WordPress blogs and will help you with the optimization of your WordPress blog performance.

Speed Up Your WordPress

So, here I am with these 9 tips to help you get the best of WordPress in speed.

1. Start with a fast and reliable web hosting company

The first step to improving your website speed is to see if you are hosting your site with a good and reliable web host.

I recommend not going for cheap shared hosting solutions, as they are really overcrowded and you might end up sharing your hosting resources with hundreds of other users.

So many hosting companies impose various limitations on their shared hosting plans, hosting (read hording!) hundreds of sites on just one server to slash hosting fees, which chokes the resources. The better alternative is to go for a VPS or managed WordPress hosting depending upon your site visitors, business niche and financial viability.

Nowadays, almost all web hosting companies provide you with unlimited storage space and unlimited bandwidth, which is not completely true, because nothing is unlimited. If you are on shared hosting, then storage space and bandwidth, though limited, will be enough to run a low-traffic site.

But as your traffic increases, the servers will experience more load and shared hosting won’t be able to handle all the traffic. At such a moment, switching over to VPS or Dedicated Hosting might be the best idea.

However, if your site is not getting very high traffic and still as slow as a tortoise, then it’s time to switch your hosting provider. The most popular ones might be Bluehost (aff.) and HostGator, but I would recommend you to go with A2Hosting.

I switched over from Bluehost to A2Hosting a few months back, and I haven’t witnessed a single downtime since. And the best part is the customer support, because when I submitted a support ticket, it was solved in less than an hour!

2. Choose an efficient framework/theme

Just like choosing a proper web host is important to ensure a low page load time, a good WordPress theme also plays a very important role in the overall page load of your blog.

This is where sometimes, even people having years of experience can make a mistake, i.e. choosing an inefficient and heavy framework/theme. Many people trade the speed and efficiency of a WordPress framework/theme for unnecessary features, which can seriously affect them.

It’s better to keep away from bloated frameworks loaded with fancy features (which a serious web contender seldom needs) that can delay the process of crawling your blog or site. Similarly, too many plugins also take a toll on your site speed. So, make sure you equip your website with only what it needs to keep up with its functionality seamlessly.

I use the Genesis Framework on most of my sites because it is fast, it comes with built-in SEO features, and the customization options are also present.

3. Resort to helpful caching plugins

A caching plugin can help you a lot in reducing the response time of your website.

Speaking of plugins, instead of falling for some fancy plugins that might choke the speed of your site, go for caching plugins, which are designed to help improve page loading time significantly. The best thing is that you can get all of them on WP.org free of cost and they are not complicated to use at all.

In order to check what difference a cache plugin can make on a WordPress website, we tested a WordPress based website with and without a plugin. The result is shown below. As you can see, there isn’t much difference in size or request, but the load time has decreased, significantly improving the speed of the WordPress blog.

Based on my personal experiences, I would recommend W3 Total Cache rather than trying anything else. It is loaded with all the features that can help you improve your site speed.

I have always used this caching plugin on all my sites because it has all the features that you will need to improve the page load time and speed up your WordPress blog. You can easily cache your pages with the plugin and also compress CSS and JavaScript as well.

4. Make use of a CDN (Content Delivery Network)

A Content Delivery Network basically takes all the static files on your site and allows the visitors to download them by serving those files on servers that are closest to them.

What it does is collects all the static files present on your website (images, CSS, javascript, etc), places them strategically on a collection of serves across the globe. Now whenever a visitor wants to download them, he is routed to the server located closest to him geographically, saving much of his time doing so.

There is also another aspect to this. Since the content of your site is being loaded from multiple servers in different locations, any traffic spike is least likely to bother visitors.

The best CDN service currently available is MaxCDN

You can check out the pricing for the plan that suits your monthly needs by heading over to the MaxCDN’s homepage.

There is another free alternative that you can use on any number of sites, CloudFlare.

Currently I am not using any CDN network on my blog because I am still working on improving my blog’s traffic and the day my blog is not able to load properly due to high traffic, will be the happiest day in my life!

5. Leverage image optimization

Images comprise more than 50% of the size of any website. They are an essential part of any website, but at the same time, they are responsible for the large size of the website. Therefore, it’s important that the images you are using on your blog are optimized properly.

Compress Images: Compress the images you are using on your WordPress blog. You can automate this whole process using WordPress plugins.

Scale Images Properly: You have to display an image of size 500*400, but you are loading an image of size 1240*820 and then displaying it at the size of 500*400. Obviously, this is a wastage of resources. You could have loaded the image in the required form, which would result in decreased image size and will ultimately improve the load time of the website.

Therefore, scale your images properly. You can define the size of images you want to use from settings > media.

Many of you must have used or at least heard of Smush.it, a wonderful image optimizer used by Yahoo. It helps you reduce image file size drastically, more importantly, without affecting the quality of the image.

The good news is that you can do the same on WordPress with a plugin called WP-SmushIt for free. In fact, if you have it installed, it will optimize all images that you choose to add to your site by itself, automatically, leaving not much on you to worry about.

Image Formats: When optimizing your images, it is important to choose the correct image format. JPEG (jpg) images are suitable for photographs or true color images. These images don’t allow for transparency, so the image will be just like a photograph, with squared edges.

The GIF format is used for flat-color images, its best use is for logos and buttons. This format supports up to 256 colors. Gif images allow transparency if you need those rounded corners, or see through portions of the image. These images would be good for cartoon type graphics.

PNG is the latest and greatest format that allows transparency similar to Gif images, but the file is larger because it supports more colors. If you are looking for a much cleaner image that allows transparency, the png format is the way to go.

Use the Height and Width Attribute: Many people that add their images, forget to add the attributes of height and width to their image codes. If the image is defined with the width and height tags, your browser can move on with the loading of the text (otherwise the page has to wait and load the image before the text).

Since these tags allow the browser to know the size of the image prior to loading it, the results will be a reserved spot for the image, reducing the loading time.

6. Don’t forget about WordPress database optimization

The fact of the matter is that you can not expect a database-driven website (all CMS-based sites, including WordPress) to work well without optimizing your database.

By properly configuring the MySQL databases, you can make a huge difference in the page load time and you can do it either manually using phpMyAdmin or do it using a simple plugin.

There are a few things you have to consider in this regard, starting from monitoring code for slow queries. For sites on VPS or dedicated servers, enabling query caching and optimizing database server configuration does the trick.

Or, you can resort to a wondrous tool like WP-Optimize plugin, which will take care of all such concerns without even letting you know when and how it’s done.

Plus, using this plugin, I can easily remove useless post revisions, spam comments, pingbacks and trackbacks as well.

7. Homepage needs optimization too

The homepage is the most important part of your blog and if it loads slowly, it will leave a bad impression on your visitors.

Though the whole of your site should be fast enough, the homepage remains the most important part of your site, as the majority of people will land there more than anywhere else on a website. Some of the things you can do to optimize the homepage of your website include:

  • Keep fewer posts on the homepage. Anywhere between 5-8 is good.
  • Display a brief excerpt as an intro to your posts rather than showing the full post. Show excerpts of your posts on the homepage and not complete posts.
  • Use a smaller number of widgets on the homepage.
  • Cut down on the number of social sharing widgets on the homepage

In short, these are just a few things to help you make your homepage load quickly; ultimately, do everything possible to keep it this way.

8. Add Lazy Load

Images are a very important part of an article and you just can’t stop using them altogether just to improve the page load time. But you can surely optimize it!

Well, this is another great way of serving your visitors with a quickly loading webpage. It involves loading only those images on a webpage that are above the fold (the images which visitors can see in their browser windows). The next set of images is loaded as soon as a visitor scrolls down, minimizing loading time ingeniously.

This not only results in your page loading quickly, but it also helps to save your bandwidth, as less data is loaded for users who don’t scroll down through the end.

Whenever a visitor lands on a post on your blog, all the images on that page will be loaded at the same time and thus increasing the server response time. So by adding a plugin called jQuery Image Lazy Load, you can prevent all the images from loading at the same time.

Instead, it will load as the visitor scrolls down and the image appears on the screen thus decrease the response time and improving the speed of your blog.

9. Avoid Pingbacks and Tracbaks

When some other site links to your content, you will receive a notification and it will then update your posts with the trackbacks, putting a load on your site.

WordPress is designed to respond to requests from other blogs featuring pingbacks and trackbacks by default, which ends up harming more than helping when it comes to site speed. Turning this intrinsic feature off in your WordPress settings will not affect the backlinks strengthening the position of your website; it will just reduce extra labor.

So you just have to go to the settings area and disable the trackbacks and pingbacks. This will not remove your backlinks on the other sites, but it will just prevent WordPress from updating your post.

10. Enable Gzip compression

There are many plugins that will add Gzip to your blog easily, but that would mean adding yet another plugin that is completely useless because adding Gzip manually to your website is very simple.

You can add the following code to your .htaccess file (found in the root directory of your server):

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/javascript

AddOutputFilterByType DEFLATE application/x-javascript

Once you have added it and saved the file, you can test the compression by running your website in the Check Gzip Compression tool.

11. Leverage Browser Caching (Add Expires Header)

The reason you should use browser caching is that whenever you visit a website, all the media files will be loaded and stored in a local folder, and the next time you visit the same site, all these files will be loaded from the local folder instead of making HTTP requests.

You just have to add the following code to your site’s .htaccess file:


ExpiresActive On

ExpiresByType image/jpg “access plus 1 year”

ExpiresByType image/jpeg “access plus 1 year”

ExpiresByType image/gif “access plus 1 year”

ExpiresByType image/png “access plus 1 year”

ExpiresByType text/css “access plus 1 month”

ExpiresByType application/pdf “access plus 1 month”

ExpiresByType text/x-javascript “access plus 1 month”

ExpiresByType application/x-shockwave-flash “access plus 1 month”

ExpiresByType image/x-icon “access plus 1 year”

ExpiresDefault “access plus 2 days”


The above code will tell a browser to cache the media files for a certain span of time. (Source – WPSquare)

12. Check Which Plugins are Slowing Down Your site

When you are using a lot of plugins on your site, it is possible that some of them might be responsible for the slow page load of your blog.

To identify the impact of the plugins on your page load time, you can use a WordPress plugin called P3 Profiler.

This plugin scans your pages and shows you which plugins have the maximum impact on the speed of your WordPress blog. But one thing you have to note here is that, after a scan, it will show you a message about certain plugins that show artificially high results. So don’t start removing the plugins if they are very important.

13. Minimize the number of HTTP requests

The number of http requests has a huge impact on the load time of your WordPress website. By reducing the number of http requests, you can improve the speed of your WordPress website.

Browsers have a specific limited number of http requests they can handle simultaneously for a domain. For example, if there are 10 images, 1 CSS, and 2 Javascript files to be downloaded, a total of 13 files have to be downloaded and the browser can handle only 6 http requests at a time. That means the browser will first download 6 files, then another 6 files, and after that, the remaining 1 file, which will obviously take time. Therefore, by reducing the number of these files, we can speed up our website.

Factors responsible for the number of http requests

  • Number of CSS files (Themes and plugins can both have CSS files)
  • Number of Javascript files (themes and plugins can have Javascript files)
  • Number of Images (Most of the images are used in your posts.)

How can you reduce the number of http requests?

  • See if you can combine the CSS files. You can try plugins or use a caching plugin.
  • You can try combining the Javascript files.
  • You can try merging two images into one, as each image makes one http request.

You can use the plugin WP Asset Clean up, it gives you more control on javascript and CSS files.

14. Minify CSS and Javascript

WordPress websites do have at least one CSS file and a few Javascript files.

By minifying Javascript and CSS, we simply refer to decreasing the size of these files. There are numerous ways to reduce the size of these files. However, I’ll not recommend editing anything in these files until you know what you are doing.

When you use a lot of plugins on your website, there will be a number of JavaScript and CSS files that will load individually on every page load. So it is a better idea to put all the JavaScript files into one JavaScript file and all the CSS files into one file.

You can do that by using the Minify section in the W3 Total Cache plugin and you can also place them in the footer section to reduce HTTP requests.

But if you want to use another plugin, then the best options are WP-Minify and Better WP Minify, that will combine all your JavaScripts and CSS files into one,reducing the number of requests and improving the speed of your blog.

Optimize your CSS (cascading style sheets):

Most websites today, including blogs created by WordPress, are designed with cascading style sheets. You can clean up your CSS using an online tool called CleanCSS that will merge selectors, remove unnecessary properties, and remove whitespace from your code.

To access your style.css page on your WordPress-based site, navigate to your Dashboard > Appearance > Editor, then scroll down until you see style.css. If, for some reason, you don’t see this file named this way, look for another file with the extension of css.

Before you use the CleanCSS site, make sure you back up your CSS script by copying and pasting it into a text editor like notepad. Once you replace the CSS script with the optimized code from CleanCSS, test your site thoroughly for appearance.

If, for some reason, things don’t look right, you will need to replace the code back to its original state. I used it without any issues or errors!

Improving WordPress performance with changes to.htaccess

The solution proposed by jdmorgan involves optimizing the Mod_Rewrite code that WordPress places in your website’s root folder.htaccess file by default. When you install WordPress, the following directives get added to the.htaccess file located in your web site’s root folder:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

The suggested optimization from jdmorgan was to replace the above code with the following:

# BEGIN WordPress
RewriteEngine on
# Unless you have set a different RewriteBase preceding this
# point, you may delete or comment-out the following
# RewriteBase directive:
RewriteBase /
# if this request is for "/" or has already been rewritten to WP
RewriteCond $1 ^(index\.php)?$ [OR]
# or if request is for image, css, or js file
RewriteCond $1 \.(gif|jpg|css|js|ico)$ [NC,OR]
# or if URL resolves to existing file
RewriteCond %{REQUEST_FILENAME} -f [OR]
# or if URL resolves to existing directory
RewriteCond %{REQUEST_FILENAME} -d
# then skip the rewrite to WP
RewriteRule ^(.*)$ - [S=1]
# else rewrite the request to WP
RewriteRule . /index.php [L]
# END wordpress

How does this improve WordPress performance?

At first glance, you might wonder how this could possibly make a difference in how WordPress performs. There is more code there than existed in the previous default solution. But it does improve WordPress performance in several ways.

It should be noted that in the context of.htaccess (not httpd.conf), anytime at least one RewriteRule in a.htaccess file is invoked because all conditions associated with it are met,.htaccess rule processing is restarted (i.e. it triggers another pass through the.htaccess file) regardless of whether the ‘L’ flag is used or not. The ‘L’ flag on a RewriteRule that is successfully invoked simply causes Mod_Rewrite to restart the.htaccess rule processing immediately rather than processing additional rules in the file before restarting. The only time Mod_Rewrite does not restart.htaccess rule processing is if it makes it all the way through the.htaccess file and no RewriteRule in the file gets invoked.

The default WordPress.htaccess code is inefficient, particularly the RewriteCond statements that check to see if the requested filename is NOT an actual file that exists on the file system and if the requested filename is also NOT an actual directory that exists on the file system. Depending on how the web server is configured and the amount of traffic it gets, this information might not be cached by the OS and often leads to physical disk reads to make the determination, especially in shared hosting environments. And using the default.htaccess code installed by WordPress, both the file check and directory check get executed 2 times each (4 disk reads in all) for each WordPress page requested due to the restarting that I mentioned in the previous paragraph. This can be VERY inefficient.

The new code suggested by jdmorgan avoids the unnecessary 2nd check for the existence of a file or directory with the requested URL any time a ‘/’ is requested or the original requested URL has already been rewritten to WordPress’/index.php. This cuts in half the biggest overhead of the original default WordPress.htaccess code – the file and directory checks. This will have a noticeable affect on WordPress performance on most sites.

The Jim Morgans suggested.htaccess code also avoids ANY checking for file or directory existence (i.e. it avoids all 4 checks) when an image, JavaScript, or CSS file is requested, since it shortcircuits the RewriteRule if an image, JavaScript, or CSS file is requested. This is another brilliant optimization IMO, since all requests for these file types only make one pass through the.htaccess file since no RewriteRules will be successfully invoked for them because of the flag [S=1] used.

Jim’s solution even eliminates the unnecessary ifmodule

Check your WordPress performance before and after.

Replace the default WordPress code with Jim’s suggested optimization in your root.htaccess file and see if you notice any performance improvements. My guess is that if your pages are not already rendered in 1-3 seconds, you will notice a significant WordPress performance improvement. My pages, which were loading in 4-8 seconds, appear to be loading in 1-3 seconds now. IMO, this is a huge difference.

Thanks to jdmorgan at Webmaster World for posting a great solution to help ALL webmasters improve their sites’ WordPress performance with practically no effort. He deserves all the credit. I’m just passing on his solution.

15. Remove Post Revisions

Whenever you start working on a new post, you will save your posts as drafts a number of times. WordPress also saves the posts automatically, so that if your PC shuts down for some reason, you won’t have to worry about your posts.

But when you finally publish your post, there will still be some copies of your posts saved as revisions or drafts, which you don’t need at all, since the post is already published.

So you just have to remove this revisions to improve the loading time. You can do it easily by using a plugin called Revision Control. But if you have WP-Optimize plugin already installed, then it will remove these revisions and auto-drafts from your blog.

16. Disable Hotlinking and Leeching of your images

“Hotlinking” is a kind of bandwidth theft that occurs when some other sites link to the images on your blog directly from their articles. This will increase the load on your server drastically.

The load will keep on increasing as more people scrape your content, and if you use custom images on your site, then disabling hotlinking and leeching of your images is a must.

To do that, you just have to add the following code to the.htaccess file on your server:

# disable hotlinking of images with forbidden or custom image option

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?codingace.net [NC]

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?http://feeds2.feedburner.com/codingace [NC]

RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

When adding these codes, replace my domain with your domain name and also add your feed URL so that the feed readers are able to see the images.

You can even make a custom image saying “Stealing is Bad”, which will replace all your images when someone scrapes your content.

17. Break Comments into Pages

If your blog posts attract a lot of comments, then you must break them down into multiple pages to reduce the page load time.

When you show all your comments on the same page, it will take a long time to load each and every comment on the page. So you just have to go to your blog’s settings area and break down the comments into pages.

18. Split Long Posts into Several Pages

When you are going to write a post about 100+ resources, then the post will also contain 100+ images. So if you just keep the images on the same page, it will put a lot of pressure on the server and increase the page load time.

But you can easily speed up your WordPress blog by splitting your post into multiple pages. You can make 25, 50, or even 100 pages from a single post showing only a few resources per page. This will not only make it easier for the visitor to go through every resource, but the page load time will also improve.

You can do so by just adding the following code to your post whenever you want to split pages:


Check out all the codes that you can use in your posts.

19. Decrease the number of fonts you use

If you are using fancy fonts or too many different types of fonts on your pages, you should remember that this will have a huge impact on your website loading time.

You should use only one type of font on your whole blog.

If you use Google fonts, you can see the impact of fonts on the loading time at the Google fonts website. (An example image is shown below). Choose a font which has a minimum impact on the load time of your website.

Bonus Tip:

Static IP Address to Add Speed and Confidence!

“A dedicated or static IP (Internet Protocol) is a unique Internet address dedicated exclusively to a single hosting account. Normally, several hosting accounts reside on a single server and share that server’s IP address. Dedicated IP addresses are usually used for large SSL-encrypted secure websites and particularly large and/or traffic-heavy websites. “

“Most shared hosting users have little need for a static IP address. However, a dedicated IP address does provide certain advantages. It will ensure faster response times during periods of high traffic load. “

If you are on a shared hosting plan, unless you specified a static IP address when you signed up, then most likely you have a shared IP address too.

According to a GoDaddy.com representative, in many cases, sites with a static IP address are on different servers than ones that are on for shared IP hosting. So, if you have made the decision to make the switch to grid server hosting, make sure you ask about a dedicated IP address.

If you decide to add the static IP address at a later date, you may experience some site downtime to make the switch. Be sure to ask your hosting provider about this scenario, so you can make an educated decision about whether to get the dedicated IP address at the same time you make the server hosting switch.

Before I switched over to the static server IP address, I asked the GoDaddy.com representative named Matt to explain to me the benefits of the static IP address.

Matt mentioned thinking about me staying in a hotel… A mailman is due to deliver a package to me for the seminar that I am giving, but the only address the mailman has is the address of the building itself (shared IP address). Matt said, now that the mailman has made it to the hotel, he needs further directions to find me, requiring a stop at the front desk.

If the mailman had the full address, including the room number (static IP address), then he could have delivered the package directly to me without having to stop and ask for further directions. If the person at the front desk is busy with another person or a line of people, the mailman will have to stand in line also, to find out what room I’m in.

Even though re-routing to the person’s website takes milli-seconds once the HTTP request reaches the server through the shared IP address, if there are many requests or traffic spikes on that server, the process will be slowed down.

There are also cases where a shared IP could hurt your site. If one of the websites sharing your IP address suffers from an issue… let’s say spam, adult content, or another penalty, this could extend to the whole IP address. Your blog could suffer the consequences as well.

This is a rare situation, but it could happen.

Over to you now.

This is where my list of ways to improve WordPress site speed ends for now, but this can’t be all about it, surely. That’s why I am handing it over to you now. Feel free to share your experiences and opinions with us on this in the comment section below.

Add a Comment

Your email address will not be published. Required fields are marked *


My name is Nohman Habib and I am a web developer with over 10 years of experience, programming in Joomla, Wordpress, WHMCS, vTiger and Hybrid Apps. My plan to start codingace.com is to share my experience and expertise with others. Here my basic area of focus is to post tutorials primarily on Joomla development, HTML5, CSS3 and PHP.

Nohman Habib

CEO: codingace.com

Request a Quote