If your WordPress website is running slow, you could be turning away hordes of potential customers you’re not even aware of. Given the tons of alternatives available, plus the ultra-short attention span of the average website visitor, not many people will just sit back and patiently wait for your website to load.

So, the question is: what's slowing down a WordPress website?

Better: What are the biggest factors affecting the performance of your website?

Let’s have a look at them!

Your website is on slow servers

Hosting a website on a slow server is most often the main reason why it just won’t load fast enough. It’s easy to verify this with free tools, such as GTmetrix or Google PageSpeed Insights. If there’s an issue with the first-time byte (the amount of time it takes the server to respond to a visitor’s initial request), then you can be certain that the server is slow.

WordPress developer and Codeable expert Justin Frydman explains:

A slow server is probably the major problem we see at Codeable. You need to pay more than a cup of coffee a month to have a reliable and optimized hosting experience. Speaking with an expert to get advice is a sound way to save time, money and headaches in the long run.

You're using the wrong plugins

A lot of people assume that having too many plugins is what slows down a WordPress website. But this isn’t quite accurate because some plugins can be huge resource hogs.

Says Justin:

It's not really important how many plugins you have on your website, but how resource-heavy each of those plugins is. If one plugin is using up all the server resources when it's running, it slows down your entire website. Like on your phone when a single App is using 10% of your battery per hour, plugins can affect your website in a similar way.

Something that you should never forget is that not all plugins are created equal.

Your website performs too many server requests

Every image, CSS file, JavaScript file, etc. included in a page is treated as a separate request by the web server. So if your homepage has, say, 100 images, there's obviously going to be a little problem, more so if the images are not optimized. As Justin explains:

If you have 100 images on your homepage... well, we can optimize those. We can even get them as small as possible without losing quality but you still have 100 requests on your homepage that are images. The question is: do you really need 100 images on your homepage? Probably not, but if you really do, then that's something we just have to live with.

Your website isn't properly caching all that it should

A caching plugin can remarkably improve your site’s loading speeding, but only if you choose the right one and configure it properly. As Justin elaborates:

I normally benchmark a number of free, paid/premium plugins on my clients' websites to know precisely which one gives the best performance gains on their unique configuration. Not all websites are created equal and neither are caching plugins. With this data, we are using the best tool for the job.

What's the moral here to learn? Well, since every WordPress website is unique, a caching solution that works for your competitor's website might not work for yours the same way.

Wrapping up

In virtually every speed optimization project, evaluating all plugins, switching to an optimized hosting environment, properly setting up caching plugins, and limiting the use of "heavy" images are the first important steps to take.

However, the optimization process is far from being a one-size-fits-all task because your site is unique in several regards. The widespread idea of just adding a caching plugin as "the ultimate fix" to a slow website is completely nonsense because that won't take into account many of the involved elements affecting performance.

There's no other truth here other than this hard one: your website's speed improvements are directly proportional to your initial discovery phase. The greater and sounder you want your speed improvements to be, the deeper and more detail-oriented you'll need (someone) to look.


Justin Frydman is a top-rated WordPress expert constantly delivering quality projects of all different types for clients on Codeable. A specialist with WordPress site speed optimization, Justin understands the value of what a faster website can do for a business and truly enjoys the work of testing and optimizing to produce the best end result possible.

WordPress Speed Optimization ChecklistQuality: The Codeable Differene

  • Luke Cavanagh

    NGNIX or Varnish for site caching over a WP plugin.

    • Hey Luke,

      In my opinion it’s not really an either or question. You can and should use these in conjunction. Varnish is fantastic for websites where you’re not serving too much logged in dynamic data or where your situation allows for full page caching. Nginx itself can act as a proxy cache as well and of course, if you have full access to either of these tools, you can tailor their configs to better suit your website and its needs. Either way, the goal should be to serve as much cached data as possible, without degrading the user experience.

      That being said, they can’t help too much for front-end optimization on most WordPress sites to help minimize JS/CSS requests etc…although you can do this without a specific caching plugin. Also, many caching plugins have automatic mechanisms for purging Varnish when new content needs to be displayed etc…to help automate stale cache removal. On top of that, they can help manage any object cache (like redis or memcached) that you’re hopefully using to help speed up those pages where Varnish/Nginx microcaching can’t be used.

      Some plugins like Wp Rocket can also do per user page caching, which can be helpful to cache dynamic content unique to each user.

      Really, it’s about looking at the website as a whole and digging into its functionality to determine which combination of tools will benefit it the most.

    • Not to mention Cloudways released Breeze which integrates Varnish support https://www.cloudways.com/blog/announcing-wordpress-cache-plugin-breeze/