WordPress performance checklist, page speed optimization of a website. Improve website speed in Google Pagespeed Insights, GTmetrix, and Core Web Vitals.
WordPress performance checklist for page speed optimization
We have put together a performance checklist that will help you improve the page speed of your WordPress website and overall performance. Use this checklist when you optimize a website for page speed and performance. You will find useful tips and recommended plugins to improve your website’s performance.
Invest in fast web hosting
Invest in fast-managed WordPress hosting, we recommend our clients Kinsta managed WordPress Hosting. They have 35+ data center locations, choose the one that is closest to your customers. Using the Google Cloud platform, plus, their CDN has 275+ POPs giving your website a global presence and unequaled speed.
Do it yourself VPS
We recommend a Virtual Private Server for ultimate speed and stability for your website. We have good experience with Linode – Akamai, they have affordable cloud services and a Global Network Infrastructure. Currently offering $100 to test their services over 60 days.
Managed VPS
For those who want to have the comfort of a managed server can use Cloudways, which offers Managed Cloud Hosting. You can deploy a server with popular cloud providers like Google Cloud, AWS, and Digitalocean. Offering additional services like Redis, Varnish, and Cloudflare premium ($4,99 / month). Unleash the Power of Managed Cloud Hosting, start for free (3-day trial).
I tested the Cloudflare Enterprise edition from Cloudways and Cloudflare free plan & APO. I found the Cloudflare free plan & APO ($5,- / month) were performing just a little bit better, especially since the TTFB was 2x faster. They will soon support Cloudflare Page rules or full page caching, I don’t know yet how well this performs as the service is not available yet at the moment of writing.
Caching will improve the website speed the most
Website caching will “reduce initial server response time”, it will improve the TTFB (Time To First Byte) and improve the loading of the page. We always use a caching plugin as last, it is the last step in the process of optimizing a website. We will try to improve the performance in general first by reducing the number of scripts that load and optimizing the loading of scripts. Reducing the amount of plugins used or replacing them with a faster plugin or solution, will help reduce bottlenecks.
WordPress performance checklist regarding caching:
- Website caching
- Free caching plugins
- Persistent Object Cache
- Server level caching
Website caching
Caching is one of the last things we will do and will give the most performance. We can use different plugins paid and free. WP Rocket is a paid plugin but the most powerful caching plugin of all. We recommend WP Fastest Cache as is is compatible with Woocommerce and does not break the website.
Some free caching plugins are:
Persistent Object Caching and server-level caching
If your hosting provider supports server-side caching like Varnish or Object caching like Redis or Memcached you can use it by activating it or installing a plugin.
If you have a Virtual Private Server you can install those services or use a server stack or control panel that supports them. We have good experience with Cloudpanel, a free control panel for your server. The new version of Cloudpanel 2.0 supports Redis and Varnish. You only have to install the Redis Object Cache plugin and they also offer the CLP Varnish Cache plugin.
Use a fast WordPress Theme
It is very important to use a fast WordPress theme, many people have tested different Themes for performance. There are many guides on the internet regarding speed-tested fast WordPress themes: 16 Fastest WordPress Themes
GeneratePress scores 100/100 on mobile with Core Web Vitals. The GeneratePress theme is fast & lightweight.
Use a Content Delivery Network
A Content Delivery Network (CDN) helps speed up your WordPress site by storing and delivering your assets and code (HTML, JS, CSS, images) on different servers around the world.
Traditional CDNs use subdomains to store and deliver your assets. This approach caches JS, CSS, and images.
We recommend using Cloudflare
Cloudflare has a free service that includes Edge caching, all you have to do is register for an account and add their nameservers to your domain. You can then manage your DNS settings and records through Cloudflare. They also offer the APO service, Automatic Platform Optimization for WordPress. The service costs $5,- per month, it is not necessary to upgrade to the pro plan. The Pro plan costs around $25,- per month and we don’t think it is worth it, except if you use all their features, it comes with managed firewall rules, Polish for image optimization, and a bunch of other features that will confuse you as a simple user.
Cloudways and KInsta include Cloudflare services by default. Cloudways offers enterprise services as part of their plan.
Best settings for WordPress on Cloudflare
There are many guides on how to configure Cloudflare for Wordpress, we recommend installing their official Cloudflare plugin that will take care of the recommended settings for Wordpress. Turn off Rocket Loader and Email Address Obfuscation.
Image optimization (compress, WebP, lazyload)
Images are the reason some websites load slowly, due to images that are not optimized. Images can be optimized with a plugin like Imagify, Shortpixel, EWWW Image Optimizer.
We like to use the free version of EWWW Image Optimizer. This Plugin also generates and converts images to Webp. Alternatively, you can buy API credits or subscribe to a plan for better image compression. If you only have a few images we recommend buying API credits, if you have many images and add new images regularly a plan may be more economical. This will fix the “Efficiently encode images” warning in Google.
Image resizing & properly encoding images
It will surprise you how many websites use too large images of several MB. We regularly see very big images used for just miniature images (thumbnails) or images that are too big for use on the page. We recommend resizing images to a smaller size to fit the use of that particular image on the web page. This will fix the “Properly size images” warning in Google.
Be sure to have an image compression plugin in place before you upload new images so they can be compressed and converted to WebP.
.webp
files are on average 59% smaller than PNG or JPG files. This will resolve the “serve images in next-gen formats” warning from Google.
Lazyload images
We can use lazy loading to defer offscreen images and get rid of the “Defer offscreen images” warning in Google. We can activate lazy loading in EWWW Image Optimizer or other plugins we use like Perfmatters or by installing a lazy loading plugin like LazyLoad Plugin by WP-Rocket.
Regularly optimize the database
You should regularly clean up revisions, spam comments, transients, and auto-drafts in the database. Repair, check, and optimize tables to reclaim unused space. There are some plugins that can help you with this task like Perfmatters, you can schedule database optimizations on a regular basis. There is also a free plugin that can do this: WP Optimize
Autoload data in wp_options
Sometimes it is needed to check the autoload data in the “wp_options” table, as this can grow over time and slow down the website. We have seen it many times where the site is slow because it has to load all the autoload data each time a page is called. Here is a good guide about cleaning up the autoload data: How to Clean up Your wp_options Table and Autoloaded Data
Web fonts
Many websites use more fonts than they need, and it can add up to the total amount of assets that are loading and slow down the website.
Recommendations regarding fonts:
- Host fonts locally or on CDN
- Preload fonts
- Try to use local Google fonts
- Add
swap
for the font-display (font-display: swap
) - Only use the font icons you need
Host fonts locally or on CDN
External fonts are downloaded each time a web page is called, by hosting them locally they will be cached by the browser and will result in fewer DNS requests.
Preload fonts
To preload a font a link rel
tag is added toward the top of the <head> </head>
section on every page of your site. You can do this in the header.php file of your (child) theme or you can use a plugin like Perfmatters or the free version of Asset Cleanup.
<link rel='preload' href='font.woff2' as='font' type='font/woff2' crossorigin>
This will fix the “Preload key requests” and “Eliminate render-blocking resources” in Google Pagespeed Insights.
Try to use local Google fonts
Chrome moved to HTTP cache partitioning. As a result, Google Fonts are now redownloaded for every website, regardless of it already being cached in a user’s browser.
Read this excellent article regarding local Google fonts: How to host Google Fonts locally in WordPress
Add swap
for the font-display
font-display: swap
tells the browser to use the default font until the font has downloaded, after that swap the current font to a custom font.
Only use the font icons you need
Font Awesome is great for icons, but it loads the entire font icon library across your whole site even if you only use a few icons. Here is an awesome article on how to only use the font icons you need: Host Icon Fonts Locally (Only the Ones You Need)
CSS and JS optimization
Optimize the loading of scripts, by applying some techniques. This is a very important step as it has a huge improvement on the speed and performance if done well. We can code everything in the website theme or as a plugin. However, some awesome plugins can help us optimize the CSS and JS in a very efficient way. There are 2 plugins we use to help us with this task, our favorite is Perfmatters and we can also use the free version of Asset Clean Up, there is also a “pro” version available. Both plugins are a bit different and they are not the same. Each has other features and not all features are available in both plugins. Sometimes I use an additional plugin to achieve the same functionality. However, they both help optimize CSS and JS delivery.
WordPress performance checklist to Optimize the loading of scripts:
- Unload unnecessary scripts
- Defer Javascript
- Host Google Analytics locally
- Defer JavaScript
- Delay JavaScript
- Remove unused CSS
Unload unnecessary scripts
WordPress loads some scripts by default that are not used like Gutenberg blocks and styles, emoji, or embeds. Both of our favorite plugins can help unload them with a few clicks and the speed will improve if we unload a bunch of scripts we don’t use. Both plugins allow us to easily disable scripts and plugins from loading on a per post/page basis or sitewide.
Try to Load CSS & JS from plugins only on pages where it is needed and unload where it is not used. A common example is a contact form plugin, that will load the CSS & JS sitewide, however it is only used on the contact page. We can unload it sitewide and make an exception for the contact page. Another example is social sharing plugins, they are often only used on blog posts and can be unloaded from pages.
Defer Javascript
Defer all non-critical JavaScript by adding a defer attribute on each file, so the script will load after the page is loaded. This can be easily done in both Perfmatters and Asset Clean Up.
Host Google Analytics locally
This will fix the “leverage browser cache” warning reduce a roundtrip to download the Google Analytics file and less DNS lookups. It will make the website load faster and this can be done in Perfmatters, alternatively, we can use a plugin to do this as Asset Clean Up does not support this: CAOS | Host Google Analytics Locally
Delay JavaScript
We use “delay javascript” for third-party scripts like Google Tag Manager, Google AdSense, conversion pixels (FB, Google Ads), etc. This way the scripts will only be loaded on user interaction after the page has been loaded.
It will fix the cart fragments problem in Woocommerce. Asset Cleanup does not support delay javascript, therefore you can download another plugin to do this: Flying scripts
Remove unused CSS
Some plugins can remove unused CSS, you can automatically remove unused CSS in Perfmatters. Unfortunately, Asset Clean Up does not support this. We can use the coverage tool in the Chrome developer to detect unused CSS and JS to unload.
WordPress performance: recommended plugins
I made a list of all the plugins I mentioned in the WordPress performance checklist and some more recommended plugins.
Recommended plugins:
- EWWW Image Optimizer
- LazyLoad Plugin by WP-Rocket
- Async Javascript
- Autoptimize
- Asset clean up
- Perfmatters
- Flying Press
- Flying Scripts
- WP Fastest Cache
- Cache Enabler
- Super Page Cache for Cloudflare
- WP Optimize
- Heart beat control
- Disable Chart Fragments by Optimocha
- Cloudflare
- Simple Cloudflare Turnstile
Recommended Themes & hosting:
- Divi Theme & Visual Builder
- GeneratePress theme
- Siteground cheap & fast hosting
- Kinsta Managed WordPress Hosting
- Sign Up for Linode
- Cloudways
WordPress performance: recommendations
Working with clients daily we see many websites, issues, and bottlenecks. Here I will share some common WordPress performance tips & recommendations.
- The most important is to use fast hosting and choose a provider like Kinsta Managed WordPress Hosting.
- If you’re using Cloudflare, turn off Rocket Loader, Email Address Obfuscation and Bot Fight Mode.
- If you are not using Cloudflare, consider signing up and adding your domain for free.
- Avoid using Google Captcha and use faster alternatives like WP Armour or Simple Cloudflare Turnstile.
- Use the fastest WordPress theme or convert your website to GeneratePress.
- Avoid using live chat plugins, use Facebook Messenger instead as it is faster.
- Use Perfmatters to optimize the loading of scripts and unload scripts that are not needed, plus more performance options.
WordPress Performance Service
Are you ready to start optimizing?
Let us speed up your WordPress website with our page speed optimization services with a free site audit and review performed by one of our team.