How I Optimized My Slow WordPress Site [2019]


Slow WordPress site?

I’ll show you how to take your GTmetrixPingdom, and PageSpeed Insights report and use them to make WordPress-specific optimizations that improve grades/load times. I’ve already written one of the most popular WP Rocket tutorials including one on W3 Total Cache and WP Fastest Cache which combined have 800+ comments and used by 250k people. Let’s do yours!

1. GTmetrix vs. Pingdom vs. Google PageSpeed Insights

GTmetrix has the most robust recommendations, like which images need to be optimized in the Page Speed tab (steps 14-16) and using a CDN in the YSlow tab (step 11). It’s also good for finding slow loading plugins if they take a long time to load in the Waterfall tab, or they appear multiple times in your main report. You can also view your time to first byte in the Timings tab.

Google PageSpeed Insights is really only good for 1 thing – checking server response timeswhich Google recommends should be <200ms. Otherwise it’s pretty useless and there are many articles that explain why. You can either fix this by upgrading plans with your current host to include more server resources, or switch to a host who uses faster speed technology.


2. Avoid EIG Hosting

The same company (EIG) owns Bluehost, HostGator, iPage, Site5, Unified Layer, and over 60 different hosting companiesThey are known for cutting costs by packing too many people on the same server (stressing it out) and have horrible reviews because of it. Many websites hosted by EIG have high response times, and I would avoid using these companies at all costs.


This is well-known in Facebook Groups…


How To Tell If Your Hosting Is Slow
Run your site through and check your TTFB (time to first byte). It should ideally be <200ms. This and reduce server response time in PageSpeed Insights are good indicators.


You can also check TTFB in the GTmetrix Timings tab…


3. Why I Use SiteGround

Join the WordPress Hosting and WordPress Speed Up Facebook Group to see what real, unbiased people are saying, since hosting is the #1 factor in the WordPress optimization guide.

I use SiteGround and have 200ms response times with 100% GTmetrix scores and .4s Pingdom load times. Do a hosting check, run your own tests, or click through my fast loading pages. They were rated the #1 host in 26 Facebook polls and are worlds better than EIG (BluehostHostGator), Godaddy, and other hosts who pack too many people on the same server. There have been plenty of people who migrated and posted results on Facebook and TwitterTweet after tweetpost after postpoll after poll after poll, faster hosting will fix slow response times. They’re recommended by WordPress, do free migrations, and I use their semi-dedicated plan.

View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
Bluehost vs HostGator vs SiteGround
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
View Poll or Screenshot
Bluehost vs SiteGround
WordPress Web Host Poll
View Poll or Screenshot

People usually migrate because their speed technology can improve server response times by multiple seconds. Here are a few people who migrated to SiteGround and posted their results.

Switching To SiteGround
SiteGround Load Time Migration
Bluehost to SiteGround GTmetrix
HostGator To SiteGround
SiteGround GTmetrix
SiteGround Google PageSpeed Insights
100 Perfect Score On SiteGround
SiteGround Genesis
Speed Delivered By SiteGround
SiteGround GTmetrix Report
Reduced Load Times With SiteGround
New SiteGround Response Times
HostGator To SiteGround Migration
SiteGround Response Times On Joomla
Switched To SiteGround Hosting
SiteGround Rocket Imagify Combo
Joomla GTmetrix On SiteGround
SiteGround PageSpeed Insights
SiteGround On Joomla
SiteGround Reduced Load Times
SiteGround Speedy Hosting
New Pingdom Results On SiteGround
New SiteGround Response Time
SiteGround Response Time Improvement

My GTmetrix report on their semi-dedicated GoGeek plan:


I use SiteGround because…

  1. My GTmetrix + Pingdom report speak for themselves
  2. They use PHP 7.3, NGINX, HTTP/2, Cloudflare, fast speed technology
  3. Average load time is 1.3s, giving most people instant speed improvements
  4. They’re recommended by WordPress and Ivica from WordPress Speed Up
  5. Free Let’s Encrypt SSL, easy to use cPanel, and features for eCommerce
  6. Renewal prices are a price jump, but you can get 3 years of the promo price
  7. Always been known for great support (tickets usually answered in <10 min)
  8. I always get 100% uptimes but 99.99% is guaranteed (includes daily backups)
  9. They do free migrations, have a migrator plugin, and 30-day money back policy
  10. They’re based in Chicago and have 4 data centers to choose

Affiliate Disclaimer – if you sign up for SiteGround using my affiliate link I would genuinely appreciate it. Each year I donate $3,000 to GoFundMe campaigns (2018 was to feed the homeless, and 2017 was to Hurricane Harvey). Your support helps, and I know there are tons of affiliates out there. I try to make my reviews unbiased and backed by evidence in the form of Facebook pollstweets, and real conversations. If you don’t want to use it, here’s a non-affiliate link to SiteGround. Either way I truly believe they’re the best host and that your site will run faster/smoother… do your research on Google and Facebook groups and you’ll find most people say the same.

They have 3 plans:


Higher plans include more server resources (#1 factor in the WordPress optimization guide). Here’s the full comparison chart, but GrowBig gives you about 2x more server resources than StartUp, and GoGeek is semi-dedicated hosting which gives you even more. GrowBig and up comes with a free migration, staging, advanced caching, and ability to host multiple websites. GoGeek comes with priority support. Their cloud hosting is quite the price jump at $80/month.

You can see this on their features page


You can decide for yourself.


4. Upgrade To PHP 7+

Upgrading PHP versions is literally the easiest thing and can make your site 2-3x faster…


So why do most WordPress users run outdated PHP versions?


It’s because even though most hosts support it…


Your hosting company will NOT automatically upgrade you to the latest version of PHP since your theme/plugins may not be compatible (and they don’t want to break your site). This means you need to do it yourself or request help from your host. It also means if you’ve been on the same host for many years and have never done it, you’re probably still running PHP 5.

Step 1: Install the Display PHP Version plugin to check your current version.

Display PHP Version Plugin

Step 2: Run the PHP Compatibility Checker to make sure your theme/plugins are compatible.


Step 3: Upgrade to PHP 7+ by looking for a “PHP Version Manager” in your hosting account:


*Check your website for visible errors since non-maintained plugins may not be compatible. If you do see errors, you can always revert back to an earlier PHP version.

5. Cache Plugin Settings

There are lots of cache plugins but these polls are accurate. Your cache plugin and hosting are two key factors so try WP Rocket if you have $49/year (there are usually renewal discounts).

2016 best cache plugin poll
2019 cache plugin poll
Swift vs WP Rocket
2016 cache plugin poll
Best cache plugins 2018 poll
wp rocket vs w3 totla cache

With most other cache plugins, you would need to install about 6 extra plugins to get thesefeatures, when WP Rocket has them all built-in, reducing the number of plugins on your site. If you’re like me, you only want to use 1 plugin, otherwise you will need to research which features your cache plugins comes with, then install these plugins if it doesn’t support them.

  • Database cleanup (built-in to WP Rocket, or use WP-Optimize)
  • Heartbeat control (built-in to WP Rocket, or use Heartbeat Control)
  • Lazy load images/videos (built-in to WP Rocket, or use WP YouTube Lyte)
  • Host Google Analytics locally (built-in to WP Rocket, or use CAOS For Analytics)
  • Host Google Fonts locally (built-in to WP Rocket, or use CAOS For Fonts, or SHGF)
  • Integration with Cloudflare + other CDNs (built-in to WP Rocket, or use CDN Enabler)

If you can drop $49 on WP Rocket, buy it then see my WP Rocket tutorial. It’s easy to setup, updated frequently with new features, includes documentation, and support. If not, I have tutorials for Swift, WP Fastest CacheW3 Total CacheWP Super Cache, and Autoptimize. For free plugins, I recommend Swift or WP Fastest Cache (Swift is a tricky to setup but has great reviews in the WordPress Speed Up Facebook Group and comes with most features as WP Rocket, while WP Fastest Cache is easy to setup but lacks features included with WP Rocket).

Some hosts like Godaddy and WP Engine blacklist cache plugins because they have their own built-in caching system. In this case, use Autoptimize to optimize HTML, CSS, and JavaScript. It also has a CDN option. See my Autoptimize tutorial, otherwise if your host doesn’t blacklist cache plugins, I recommend either WP Rocket or Swift.

6. Database Cleanup

Deletes your spam and trash folders, trackbacks, pingbacks, database tables, transients, and the potentially thousands of post revisions and post drafts that have accumulated overtime which WordPress stores automatically. These are garbage files and slow down your site. I recommend scheduling WP Rocket or WP Optimize to delete these every week or so. You should be fine, but take a backup of your site if this is your first time cleaning your database!

If using WP Rocket, run (and schedule) this in the database settings:


If not using WP Rocket, use the free WP-Optimize plugin:

WP Optimize Plugin

7. Heartbeat Control

The WordPress heartbeat API consumes server resources by showing real-time plugin notifications and that other users are editing a post. Since this can generate a request every 15-30 seconds, it’s best you disable this either in WP Rocket, or the Heartbeat Control plugin.

If using WP Rocket, disable this in the Heartbeat settings:


If not using WP Rocket, use the Heartbeat Control plugin:


8. Lazy Load Videos/Iframes

Delays loading of videos until you scroll down the page and they become visible. I was able to reduce the load time of multiple posts by about 6s just by enabling this (since videos are a heavy element). You can do this with photos too but the constant loading can be annoying so I have it disabled. If not using WP Rocket, you can do this using the Lazy Load For Videos plugin.

If using WP Rocket, enable lazy load in the “Media” settings…


Replace YouTube Iframe With Preview Image – this only loads videos once people click the play button, potentially shaving multiple seconds off content with videos. You can do this WP Rocket, or follow this light YouTube embed tutorial. You will basically paste a code into your web template, paste some more code into your CSS, then embed each video using a “div” code.

9. Host Google Fonts Locally

If you’re using Google Fonts, you will probably see errors in GTmetrix:


This means you need to host your fonts locally, using a plugin like CAOS For Webfonts:


Or the Self-Hosted Google Fonts plugin which automatically downloads all Google Fonts you’re using, then adds them to CSS, without having to configure anything… it does it for you.


If you prefer not to use a plugin, download your fonts directly from Google Fonts (only the fonts/weights you need), use Transfonter to convert them to web fonts, then add them to CSS.


10. Host Google Analytics Locally

If you’re using Google Analytics, you need to host that locally too:


If using WP Rocket, enabling Google Tracking in the Add-Ons tab should fix this:


Or use the CAOS for Analytics plugin:


11. Cloudflare Setup

Cloudflare is free and improves speed, security, and spam protection. Their CDN hosts your files on 165+ data centers which helps offload resources to their servers (lightening the load on yours). The data centers also reduce the geographic distance for your content to travel to visitors. Cloudflare is easy to setup with WP Rocket (I also listed alternative methods below).


Step 1: Sign up for Cloudflare, add your website, then it will run a scan. You will go through a set of pages until you reach a dashboard with your 2 Cloudflare name servers (which you will change in your hosting account) and your Global API Key to enter into your caching plugin…


Step 2Change name servers in your hosting account to the ones Cloudflare assigned you…


Step 3: Enter your Global API Key (found in your Cloudflare profile) into your cache plugin…

Cloudflare Global API Key

Some hosts also have the option to activate Cloudflare in the cPanel…


Whitelist Cloudflare IPs In Your Hosting Account – you don’t want your host to block Cloudflare, so make sure they whitelist all Cloudflare IPs (you may need them to make sure).


12. Cloudflare Settings

I have a full guide on configuring Cloudflare for WordPress sites, but these are the key points.

Speed Settings
Go to your speed settings and copy these. Check your site afterwards for errors. Here’s more information on minificationAMP Real URLSG RailgunBrotli, and Rocket Loader if needed.




Scrape Shield
Hotlink protection prevents people from using YOUR images on THEIR website – which sucks up your hosting CPU (bandwidth). Go to Cloudflare’s scrape shield settings and turn this on…


Page Rules
Cloudflare says:

“We recommend that you create a Page Rule to exclude the admin section of your website from Cloudflare’s performance features. Features such as Rocket Loader and Auto Minification may inadvertently break backend functions in your admin section.”

Go to Cloudflare’s page rules settings


This page rule disables Cloudflare performance features in the WordPress admin panel, bypasses the cache, and improves it’s security (just as Cloudflare recommended you do).


This page rule will decrease bandwidth of the WP uploads area. Since items in your WordPress uploads file don’t change frequently, you don’t have to cache them as often, saving bandwidth.


Firewall rules can be used to block bad bots (step 24) and is explained there.

13. CDN (Content Delivery Network)


I use StackPath’s CDN, but why use another CDN if you already have Cloudflare? Because…

  • StackPath has 31 additional data centers (more = faster)
  • StackPath uses faster SSD servers with 10GB connections
  • StackPath has dashboards that provide lots of information about your cached files
  • StackPath’s team helped me configure my CDN and improved my GTmetrix YSlow score by 8%, putting the “cherry on the cake” to make my report a perfect 100%
  • StackPath allows you to protect your account using a two-step authentication process; you can whitelist the IP addresses of people who are permitted to access your account

Step 1: Sign up for StackPath (they have a 30-day trial).

Step 2: In the dashboard, click the CDN tab, then create a StackPath CDN Site


Step 3: Copy your StackPath CDN URL and paste into WP Rocket’s CDN CNAME(s) field:


Step 4: In StackPath go to CDN → Cache Settings, then click Purge Everything


Step 5: Run your site in GTmetrix and “content delivery network” should be green in YSlow.

CDN GTmetrix YSlow

If you expand items in GTmetrix and are related to your CDN, contact StackPath’s support who should be able to help you fix these. They did this for me and have outstanding support.

Cookie Free Domains MaxCDN

GTmetrix YSlow Without StackPath

GTmetrix YSlow Without MaxCDN

GTmetrix YSlow With StackPath

GTmetrix YSlow With MaxCDN

Troubleshooting StackPath

Step 6: Whitelist StackPath’s IPs in your hosting account (you may need to contact your host).


14. Serve Scaled Images

Images can be optimized 20 ways, but these are the main 3. You can run any page through GTmetrix and it will show all unoptimized images for that page. Start with images that appear on multiple pages (logo, widget/footer images) then optimize images on your individual pages.


Serve Scaled Images – resize large images to be smaller. GTmetrix tells you the correct dimensions. Just click the image in GTmetrix, resize it to the new dimensions, and replace it.


Create a cheat sheet so you can use the correct dimensions BEFORE uploading your images…

  • Slider images: 1903(w) x 400(h)
  • Carousel images: 115(h)
  • Widget images: 414(w)
  • Fullwidth blog post images: 680(w)
  • Featured images: 250(w) x 250(h)

Never use the ‘drag to resize’ feature in the visual editor since this only resizes the displayedimage (not the actual image). It’s best to resize to the correct dimensions before uploading it.

15. Specify Image Dimensions

Specify Image Dimensions – means you need to specify a width and height in the image’s HTML or CSS. This usually happens in your widgets, HTML, or CSS sections of your website since the visual editor takes care of this automatically. GTmetrix will again provide you with the correct dimensions, then you need to locate that image and specify the width + height…

Specify Image Dimensions

16. Losslessly Compress Images

Optimize Images – losslessly compress images using Imagify or Kraken (both are free until you reach the monthly limit). There are other completely free plugins with unlimited compressions, but do NOT use these since they have bugs, won’t work, or can break images.

  1. Sign up for Imagify
  2. Install the Imagify Plugin
  3. You will be prompted with the instructions below:
  4. Enter your API key from your Imagify account
  5. Set your compression level (normal, aggressive, ultra)
  6. Imagif’em all (photo below) with bulk optimizes all images on your site
  7. Once you’ve reached your limit, pay $4.99 or wait next month to reset your limit

Once signed up, bulk optimize all images on your site…


17. External Resources

Google Maps are notorious for causing slow load times, and when it’s in your footer it has to load on every single page/post on your website. Probably just use it on your contact page?

Google AdSense and other advertising networks will usually slow down your site (tremendously) since they make requests to other servers to show those ads. And if those servers aren’t optimized to load fast they will ruin your load time and GTmetrix report. I recommend using affiliate links instead since they don’t add to your load time and are more personal – almost always resulting in more $. You can minimize the amount of ads and make sure your advertisers are on fast servers, but you will still probably see the issues in GTmetrix.


Prefetch DNS Requests – this helps browsers anticipate external resources so they load faster. See this list of common domains to prefetch which includes Google Maps, Google Analytics, Google Fonts, Gravatars, social sharing plugins, Disqus, social networks, and others. You should also prefetch your CDN URL if you’re using StackPath, KeyCDN, or another CDN.


Add these to WP Rocket in the Preload settings:


18. WP Disable

WP Disable lets you disable settings in WordPress that consume CPU and slow down your site. It also has options for heartbeat control (if you remember the actual heartbeat control plugin, you can now delete it and just use this)… as well as a few other options that can speed up your website/admin panel. Go through the settings and simply disable what you don’t use…

Tips On Using WP Disable

  • Disable EVERYTHING you don’t use
  • Scheduling spam deletion is a good idea
  • Emojis, Google Maps, and Gravatars take a long time to load
  • Pingbacks and trackbacks aren’t usually worth the extra resources
  • Set post revisions to 3-5 so you have backups, but you don’t need hundreds
  • Miscellaneous options in the “request” tab can further your improve load times

19. Minimize Plugins

Have you deleted the Hello Dolly plugin and WordPress Importer? How about replacing that Twitter plugin with a Twitter widget or that Facebook plugin with a Facebook widget? Instead of using a Google Analytics plugin why not insert the tracking code directly in the footer (or even better, host it locally)? Yoast generates an XML sitemap for you so the Google XML Sitemaps plugin isn’t necessary. Go through your plugins and deactivate/delete the ones you don’t need. You should also avoid using 2 separate plugins if they have duplicate functionality.

20. High CPU Plugins (List)

Most slow plugins include social sharing, gallery, page builders, related post, statistic, live chat, and plugins that run ongoing scans/processes or show multiple times in your GTmetrix report.

  1. AddThis
  2. AdSense Click Fraud Monitoring
  3. Backup Buddy (use UpdraftPlus)
  4. Beaver Builder
  5. Better WordPress Google XML Sitemaps
  6. Broken Link checker (use Dr. Link Check)
  7. Constant Contact for WordPress
  8. Contact Form 7 (load JS + stylesheet only when necessary)
  9. Contextual Related Posts
  10. Digi Auto Links
  11. Disqus Comment System (use Disqus Conditional Load)
  12. Divi Builder
  13. Essential Grid
  14. Fuzzy SEO Booster
  15. Google XML Sitemaps
  16. Jetpack
  17. NextGEN Gallery
  18. NewStatPress
  19. Really Simple Share
  20. Reveal IDs
  21. Revolution Slider
  22. ShareThis
  23. S2 member
  24. SEO Auto Links & Related Posts
  25. Similar Posts
  26. Slimstat Analytics
  27. SumoMe
  28. Talk.To
  29. Ultimate Social Media & Share
  30. VaultPress
  31. Wordfence (disable live traffic reports)
  32. WordPress Facebook
  33. WordPress Related Posts
  34. WordPress Popular Posts
  35. WP Bakey (formerly Visual Composer)
  36. WP Statistics
  37. WP Power Stats
  38. WP-PostViews
  39. WPML (if you use too many extensions)
  40. wpCloaker
  41. WPML
  42. Yet Another Related Post Plugin
  43. Yuzo Related Posts

You can also use the GTmetrix waterfall tab to see slow plugins…


21. Lightweight Plugins

Social Sharing – WP Rocket’s test showed Social Media FeatherMonarchSimple Shared Buttons Adder, and MashShare had the least amount of requests and fastest load times.

Backup – UpdraftPlus.

Sliders – SoliloquyLayerSlider, or Meteor Sliders.

Comments – Disqus Conditional Load.

Portfolio – Envira GalleryFooGallery, or The Grid.

Analytics – Google Analytics and Search Console should be plenty. Just make sure you’re hosting Google Analytics locally (using WP Rocket or WP Disable).

Page Builders – WordPress Page Builder by MotoPress, but no page builder runs faster than the native WordPress Editor. Combine this with the Duplicator plugin and you shouldn’t need a page builder (including page builders built-in to WordPress themes). Unless your team absolutely refuses to learn a little HTML (the easiest coding language), avoid page builders.

StudioPress Plugins – lightweight plugins for the Genesis Framework.

22. Disable Unused Plugin Settings

Go through each of your plugins and decide which settings you can turn off (this will lower CPU). For example, in Yoast under Settings > General > Features I disabled the following…



  • Wordfence’s live traffic reports
  • Broken Link Checker’s ongoing scans
  • Chat and calendar plugins that run constantly
  • Statistical plugins that constantly collect data
  • Related post and popular post plugins that store tons of data
  • Disable ALL settings you don’t use since many will consume CPU

23. Plugin Organizer

Plugin organizer lets you selectively disable plugins on certain pages/posts. The most common example is contact forms (which should load only on pages with contact forms). Social share plugins can usually be disabled on pages. Configure the settings, global plugins, and edit specific pages/posts to selectively disable plugins. You can also read their documentation.



  • Install the plugin
  • Go to Plugin Organizer > Global Plugins to configure
  • Edit any page/post and selectively disable plugins that don’t need to load

Similar Plugins

24. Block Bad Bots

Search engines and bots usually consume the most CPU/bandwidth..


Wordfence has crawl rate limiting rules that block fake Google crawlers, limits crawler page views, limits human’s page views, and other rules that limit CPU usage and blocks spammers.


Googlebot is usually the most resource-hungry bot. In the site settings of Google Search Console you can limit the crawl rate but this is only recommended if it’s causing high CPU.


You can do the same thing in the crawl control settings of Bing Webmaster Tools


This next section shows you how to use Wordfence to find and block spammy bots that hit your site too much (which may consume CPU and put stress on your server.

Step 1: Install Wordfence.

Step 2: View your live traffic report (under Wordfence’s Tools settings) which shows you all bots hitting your site in real-time. Googlebot is obviously OK, but when I did this, I saw making a ridiculous amount of requests every couple seconds. I Googled it and sure enough, this was a bot known for sucking up bandwidth. View your report for a minute or two and see if bots with sketchy names are constantly hitting your site. If you have doubts, Google their hostnames and see if other people are having issues with that bot.


Step 3: Go to Wordfence’s Blocking settings and add the spam bots you wish to block. Asterisks serve as wildcards, so if I block ** it means any hostnames containing (whether it has characters before or after it) would be blocked. I have saved thousands of requests/bandwidth just by blocking these two spammy hostnames:

  • *
  • *

Step 4: Go to your Blocking log and enjoy watching those spam bots get blocked.


The Block Bad Queries plugin also protects your site against known bad bots. It’s a “one click and done” plugin with a perfect 5 star review – an easy way to reduce CPU from spammy bots.


25. AMP (Accelerated Mobile Pages)

AMP is a Google project that makes mobile pages load faster while adding an “AMP” stamp to mobile snippets. While it does improve performance, it also changes the design of your mobile site which can decrease conversions. Kinsta did a case study where mobile leads dropped 59% when they added AMP, so they disabled it (and after reading that article, I disabled mine too).


Caution: AMP can drop your mobile conversions – use carefully!


Cloudflare Accelerated Mobile Links

A common issue is featured images appearing on the top of posts when you might not want them too. There is a work around for this, but it’s not perfect. You can either have no featured image, or you can set a default featured in Yoast under SEO → AMP → Design → Default Image. That default image will show if NO featured image is set, but if one is, that is what will show on the top of the post. You can read Yoast’s AMP guide but I basically just summed it up.

26. Optimize Gravatars

Gravatars take a LONG time to load especially if you have lots of blog comments (try running a post with comments through GTmetrix and you’ll see how bad it gets). You have a few options:

  • Host Gravatars locally using WP User Avatar
  • Disable Gravatars completely
  • Set your default Gravatar to blank
  • Delete comments that don’t add value
  • Set your default Gravatar to a custom image on your server
  • Restrict your Gravatar images to smaller dimensions (e.g. 32px)
  • Paginate comments in WP Disable to only show 20 comments at a time
  • Try caching Gravatars using the FVHarrys, or Optimum Gravatar Cache

27. Check AWStats For High CPU

AWStats is a tool built-in to some hosting cPanels that provides statistics on CPU usage. It tells you whether certain bots, images, downloaded files, and even IP addresses are consuming a lot of CPU. You can also use the WP Server Stats plugin but I think AWStats does an awesome job.

AWStats helps you find:

  • High bandwidth crawlers
  • High bandwidth IP addresses
  • High bandwidth download files
  • High bandwidth files (eg. images)
  • Total bandwidth usage (for monitoring)

28. Defer Parsing Of JavaScript

Backup your functions.php file then add this code to it – then you’re done. Double check your site to make sure everything looks/functions properly. If this still doesn’t fix the item in Pingdom, try the Scripts To Footer Plugin. This step can require testing and using different code variations but I borrowed the code from this article if you want more clarification.

if (!(is_admin() )) {
function defer_parsing_of_js ( $url ) {
if ( FALSE === strpos( $url, '.js' ) ) return $url;
if ( strpos( $url, 'jquery.js' ) ) return $url;
// return "$url' defer ";
return "$url' defer onload='";
add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );

29. Add Expires Headers

Most cache plugins should take care of this automatically when you enable browser caching (like WP Rocket and W3 Total Cache). But if ‘add expires headers’ still appears in your Pingdom report under the YSlow tab, add this code to the top of your .htaccess…

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/css "access plus 60 days"
ExpiresByType text/javascript "access plus 60 days"
ExpiresByType image/ico "access plus 60 days"
ExpiresByType image/jpg "access plus 60 days"
ExpiresByType image/jpeg "access plus 60 days"
ExpiresByType image/gif "access plus 60 days"
ExpiresByType image/png "access plus 60 days"
ExpiresByType text/css "access plus 60 days"
ExpiresByType text/html "access plus 60 days"

30. Remove Query Strings From Static Resources

This item has been a pain in the ass for a lot of people (including me). Thankfully, a few recent updates have been made by the most popular cache plugins that allow you to easily fix the ‘remove query strings from static resources‘ item in your GTmetrix and other speed reports. However, most query strings are generated by plugins (which you can see in your GTmetrix report), so it is absolutely critical to only use lightweight plugins and to test them immediately.

WP Rocket has an option in the “file optimization” tab:


W3 Total Cache has an option for this under Performance → Browser Cache:

Remove Query Strings From Static Resources

WP Disable has an option in the “requests” tab:


Remove Query Strings From Static Resources Plugin – you can also try this free plugin.

31. Minimize Redirects

Usually means you changed the www or http version of your website but didn’t change your links/images to reflect this. Try using the Better Search & Replace plugin to fix them in bulk.

minimize redirects

32. Use a Lightweight Theme

If your WordPress site has been slow since the beginning, it’s probably either your hosting or theme. I remember developing a website using the Law Business theme and it was SO SLOW I had to scratch the entire website and start over using the Executive Pro theme by StudioPress. This is due to poor coding by the theme developer or too many unnecessary built-in features.

StudioPress themes are lightweight (they load fast), responsive, HTML5, secure, and reliable (they won’t crap out or get discontinued like some ThemeForest themes). They are used by over 200,000 people, their themes are built in the Genesis Framework (recommended by Yoast and WordPress founder Matt Mullenweg), plus they have lightweight Genesis plugins.

I know you don’t want to change your theme. But if your design sucks anyway, a StudioPress theme can be a game changer. I wrote a review on StudioPress if decide to look into them.


33. Monitor Server Resources

You only have a limited amount of server resources on your hosting account. Hosting too many websites on one account, resource-hungry plugins, and many other factors can slow down your server. Make sure your plan has enough resources to properly accommodate your needs.


If you’re getting bandwidth/CPU overages, you need to fix it (this guide should have helped) or upgrade your plan to include more resources. On many cloud plans, you can add resources as needed to make sure you’re not coming close to exceeding them, which stresses on the server.


34. Keep WordPress Updated

Update WordPress core, theme, plugins, and framework if you use one (eg. Genesis).

WordPress Updates

Check your hosting cPanel to see if there’s an option for automatic updates…

SiteGround WordPress Autoupdates

Genesis Framework also has an option for this…

Genesis Automatic Updates

35. Find Slowest Loading Pages

You can use Google Analytics to find the load times (and recommendations) for your top viewed pages and slowest loading pages. Login to Google Analytics and on the left, go to Behavior → Site Speed → Speed Suggestions. Click the ‘Page Speed Suggestions’ to see recommendations, though I would say GTmetrix recommendations are usually better.


36. Hire My WordPress Speed Optimizer

Still need help with your GTmetrix/Pingdom report? I’ve been working with Pronaya for 7 years (he’s the one who helped me get a <1s load time in Pingdom). You can hire him by creating a profile on and searching for username bdkamol. Here is his full WordPress speed portfolio. He’s $40/hour from Bangladesh (so there is a time change) and you can email him at [email protected]. He also has a perfect 5 star review on his profile. Serious inquiries only, and please don’t expect 100% scores if you’re using slow hosting, a bloated theme, and tons of heavy plugins. Please follow this WordPress speed guide first.


Some reviews on his profile:


Hope this helped! Drop your new GTmetrix scores + load times in the comments 🙂


About the author


Add comment

Recent Posts