Why my WordPress is so slow?

WordPress speed is important factor for Google and other search engines. If you are reading this page it means that you are aware of speed and overall performance problems with your website. For people who don't know whether their website is in good condition I suggest using following tools:

So why my website is slow?

  1. You don't care about CRP (Critical Rendering Path)

    In other words you should minimize number of bytes. The fewer bytes we need to download, the faster browser can get data and start processing to paint the page. You should keep HTML size as low as possible (>14KB would be ideally - read more why it's so magical value here)

    • minify (get rid of inline CSS/JS and HTML comments, remove blank spaces),
    • compress (enable gzip in .htaccess or set in in hosting company panel),
    • cache (use premium plugins like WP Rocket or enable simple file cache like Cache Enabler),
  2. Large CSS files block rendering

    Website won't be painted when CSS files still fetch. There are two ways to get rid of this issue:

    1. HTTP/1.1: divide CSS intro smaller files and load needed only (Gonzales will be super useful here) + move the most important for rendering path to the HTML as inline styles + concatenate & minify rest of CSS
    2. HTTP/2: the same as HTTP/1.1 but without concatenation (see HTTP2 section below)
  3. Small CSS files block rendering

    I believe your website is responsive in terms of RWD pattern (Well, it's 2019 and you have to upgrade if it's not). In this case you use breakpoints.

    • grouping certain rules and move them into separated files like main-sm.css, main-lg.css and so on would be the best option. By adding media attribute browser will use pointed asset depending on dimensions of screen:
      <link href="main-sm.css" rel="stylesheet" media="(max-width: 639px)">
                  <link href="main-lg.css" rel="stylesheet" media="(min-width: 640px)">
    • inline crucial CSS styles for global website appearance
  4. JS files are render blockers too

    To be as simple as possible - if JavaScript wants to modify DOM tree it means that's render blocking asset. Once again, solution is pretty simple. Simply move external scripts before end of body tag or place them inline (in minified form) if they are small. When browser encounter JavaScript link it will break website painting and won't render page until entire asset is downloaded. It's huge performance bottleneck and implementation of mentioned method will be highly noticable in context of overall WordPress performance. Tip: leave JS as is and add async attribute to script tag if it's not blocking request.

  5. You still use HTTP/1.1 instead of HTTP/2

    Results in implementation of faster WordPress tips can be achieved also on server side. "The primary goals for HTTP/2 are to reduce latency by enabling full request and response multiplexing, minimize protocol overhead via efficient compression of HTTP header fields, and add support for request prioritization and server push." says Google experts. In other words it's faster than HTTP/1.1 because it allows for parallel assets loading. It means that there's no need to use assets concatenation. Below you can see why having HTTP/2 on your server is so important.

  6. You don't care about images you uploaded/placed in theme:

    1. choose the right format - beside JPGs and PNGs there is also WebP, right? WebP images are faster to download,
    2. don't place 2000x1000px image if you places img with 100x50px dimensions. Not only wast on space on server but wast of user's bandwidth too,
    3. load critical for rendering images only. Use lazy loading technique thank which images will automatically load once you scroll page,
    4. forced to use JPG? Use Progressive JPG then,
    5. automatically compress images once you upload them into WordPress using tools like TinyPNG.
  7. Your hosting provider doesn't care about PHP versioning

    One of the simplest methods to speed up WordPress. PHP 7.x is faster than 5.x. No additional comment, see tweet below:

    I recommend Kinsta servers.

  8. Server response is low.

    In other words it's TTFB (Time To First Byte). Lower is better. It's great to serve content < 300ms. When timing is higher than 1000ms you should definitely consider optimization.

    TTFB explained on timeline of Google Chrome Dev Tools

    It's a time of idle when content is processing by PHP parser and delivered to browser. In eyes of user it's moment when blank screen is visible. Feel free to verify your TTFB timings across the world here. Common solution to reduce TTFB is cache installation (WP Rocket or similar). You probably discovered that caching can only mask this issue. What if user access non-cached section of your website? WordPress speed is crucial in such a case. There are typical solutions for your problem but I believe you're here because your are looking for help with it.

Select Pricing Plan

License? It's simple. Once you buy Gonzales you will be able to use it as long as you want. Only support and updates are time limited. That's it. It's time to purchase Gonzales and speed up WordPress! Please note that you can extend and renew your licence anytime you want from customer panel.


1 year updates/support for 1 website

economic option to test things out

Buy now


1 year updates/support for 5 websites

good option for owners of up to five sites

Buy now


2 years updates/support for unlimited websites

dedicated to agencies or webdevelopers

Buy now