Have a slow WordPress site on Bluehost?
You can check if Bluehost is the problem by testing your TTFB in PageSpeed Insights or KeyCDN which tests it in 10 global locations. TTFB is part of core web vitals and directly related by your server. Google flags it if it’s over 600ms (in which case, you know the issue).
Besides moving away from Bluehost or upgrading plans, you can speed up your website using latest PHP versions, Cloudflare, and performant cache plugins. And of course, improving core web vitals. This tutorial should speed up your Bluehost site and core web vitals (LCP, CLS, TBT).
While there are many ways to speed up your website on Bluehost, their hosting is notoriously slow which is well-known in Facebook groups. You can search the WP Speed Matters Facebook Group to get unbiased hosting feedback. Cloudways Vultr High Frequency (cloud hosting) and NameHero’s Turbo Cloud (LiteSpeed) are both solid choices. I use Vultr HF and you can check my GTmetrix report. Even if you don’t take these recommendations, you should leave Bluehost.
If you need help, leave a comment with your GTmetrix report and I’ll send you a few pointers.
- Check for a slow TTFB
- Use Bluehost’s server caching
- Use latest PHP versions (PHP 8.0)
- Take advantage of Cloudflare
- Keep email + web hosting separate
- Invest in a premium cache plugin
- Remove slow loading plugins
- Remove database junk
- Don’t use slow page builders on shared hosting
- Optimize for core web vitals
- Preload, prefetch, preconnect
- Eliminate render-blocking resources
- Optimize images
- Optimize Google Fonts
- Optimize third-party code
- Remove WordPress + WooCommerce bloat
- Leave Bluehost for Vultr HF or LiteSpeed hosting
1. Check For A Slow TTFB
Run your website through PageSpeed Insights to see if “reduce server response times” is in your report. Google flags this if your TTFB is over 600ms, but under 200ms is ideal. The main ways to fix it are by reducing CPU usage (i.e. removing high CPU plugins and background tasks). Or upgrade your hosting plan which adds server resources (either with Bluehost or elsewhere).
Indicators Bluehost’s Servers Are Slow
- Slow TTFB in GTmetrix
- Slow server response time in PageSpeed Insights
- Your WordPress admin is slow (or even unreachable)
- 503 errors which means the server is being overloaded
- You’re using Elementor, Divi, or WooCommerce on cheap hosting
You may also want to read Bluehost’s resource usage section. Even though Bluehost claims things are “unlimited” or “unmetered,” they put limits on inodes, database usage, and file transfers. In other words, there’s no such thing as unlimited and they will throttle bandwidth if your site consumes too many resources. Many people complain about this in Bluehost forums.
2. Use Bluehost’s Server Caching
You can find Bluehost’s server caching under My Sites → Performance.
Alternatively, you can use Bluehost’s plugin if you have it installed. Caching at a sever level is almost always faster than the file-based caching done by cache plugins. It has different options for blogs, eCommerce, and portfolio sites (read the descriptions). Then you can clear the cache.
3. Use Latest PHP Versions (PHP 8.0)
Bluehost currently supports up to PHP 8.1 (but 8.0 is more stable). Most WordPress users are running outdated PHP versions. As Bluehost releases newer versions, make sure you upgrade.
How To Update PHP Versions On Bluehost
- Login to your Bluehost cPanel.
- Select the MultiPHP Manager.
- Select PHP 8.0 and save changes.
- Check your website for visible errors.
4. Take Advantage Of Cloudflare
Bluehost activates Cloudflare on all domains by default, but this only gives you access to the basic settings, so you’ll want to disable Cloudflare in Bluehost then set Cloudflare up manually.
Start by disabling Cloudflare in Bluehost. Next, add Cloudflare manually by signing up on their website, adding your website, and changing nameservers. Cloudflare gives you 2 nameservers. Login to your Bluehost account and change your nameservers from Bluehost’s to Cloudflare’s.
Once you change nameservers, consider the following optimizations in Cloudflare’s dashboard:
- Activate Cloudflare’s CDN in the DNS settings (screenshot below).
- Enable HTTP/3, Brotli, bot fight mode, early hints, and hotlink protection.
- Consider using their APO for $5/month if your cache plugin is compatible.
- Minify HTML/CSS/JS from Cloudflare and disable these in your cache plugin.
- Add pages rules to protect the wp-admin area and improve your site security.
Even if you don’t use Cloudflare for anything else, you should at least use their DNS (by changing nameservers) since their DNS is faster and more reliable compared to most other DNS providers. Bluehost isn’t listed on dnsperf.com, but you can assume it’s not the fastest.
5. Keep Email + Web Hosting Separate
Your email takes up storage, files (inodes), and server resources.
By keeping email and web hosting separate, you’re dedicating more resources to your website. This means an extra cost since you’ll need to use a third-party provider like Google Workspace. But it’s also good since if you eventually decide to switch hosts, you don’t have to transfer email.
6. Invest In A Premium Cache Plugin
Otherwise, I recommend Gijo Varghese’s FlyingPress plugin (what I’m currently using) or WP Rocket. FlyingPress actually has more aggressive caching than WP Rocket and I noticed a big difference when clicking through posts. Most free cache plugins don’t do a good job at fixing core web vitals, in which case you’ll need to install few extra plugins to get these optimizations.
- Database cleanup – WP-Optimize
- CSS/JS optimization – Autoptimize
- Host Google Analytics locally – Flying Analytics
- Lazy load videos – Optimole / WP YouTube Lyte
- CDN URL integration – BunnyCDN / CDN Enabler
- Heartbeat control – Heartbeat Control / manual code
- Preload links / instant page – Perfmatters or Flying Pages
- Prefetch/preload – Pre* Party Resource Hints / manual code
- Font-display:swap – Swap Google Fonts Display / manual code
You can get 10% off WP Rocket by signing up for their email list on the coupons page.
7. Remove Slow Loading Plugins
There are several ways to find slow plugins:
- Query Monitor
- GTmetrix Waterfall chart
- Chrome Dev Tools Coverage report
- See my list of common slow plugins (shown below)
- Check for plugins causing database bloat with WP-Optimize
- WP Hive Chrome Extension (when browsing WP plugin repository)
8. Remove Database Junk
Many cache plugins have an option to clean your database.
However, they don’t let you go through your actual database tables and delete tables left behind by old plugins (which you probably installed then deleted). That’s why I recommend installing WP-Optimize especially since Bluehost has strict database limits. Not only should you delete the “general” junk (as well as schedule ongoing database cleanups), but whenever you install/delete a plugin, remove it’s tables from your database so it doesn’t leave anything behind.
9. Don’t Use Slow Page Builders On Shared Hosting
Sure, you can optimize them by unloading unused assets and using Elementor’s experimental features like Optimized DOM Output and Improved Asset Unloading. But the bottom line is they add lots of extra CSS, JS, and div wrappers to your website which slows everything down.
I made the mistake of using Elementor but moved since:
Combine heavy page builders with Bluehost’s hosting and it’s a recipe for a slow website. Many people in Facebook Groups are moving from Divi/Elementor to Gutenberg, GeneratePress, and Oxygen Builder. I moved my site from Elementor to Gutenberg and saw massive improvements.
10. Optimize For Core Web Vitals
There are 3 parts to core web vitals: LCP (largest contentful paint, CLS (cumulative layout shift) and TBT (total blocking time) which can be tested in PageSpeed Insights.
Largest contentful paint (LCP) is 25% of Lighthouse scores.
Check your PageSpeed Insights report and it will show your largest contentful paint element. It’s usually an image, background image, video, animation, or block-level element (i.e. H1 tag).
Usually though, it’s an image. In which case you should optimize that image as best you can. Below are a few ways to optimize your LCP element if it’s either an image or background image.
- Preload the LCP image
- Compress the LCP image
- Use a faster format (i.e. WebP)
- Exclude the LCP image from lazy load
- Serve images from a CDN (try Flying Images)
- Make sure the LCP image uses proper dimensions
Layout shifts are 15% of scores and happen when things shift while the page loads.
You can find them using Google’s layout shift debugger. It creates a GIF so you can visibly see shifting elements. Alternatively, look at the “avoid large layout shifts” PageSpeed Insights item.
Layout shifts happen for many reasons, but here are some common solutions:
- Fix ensure text remains visible during webfont load by adding font-display: swap to your font’s CSS to prevent FOIT (flash of invisible text). You can add the code to your font’s CSS file or use Swap Google Font Display, LiteSpeed Cache, SG Optimizer, or Asset CleanUp.
Without Font-Display Swap:
With Font-Display Swap:
- Specify dimensions of images, iframes, videos, and div code for advertisements. By reserving space, this prevents it from shifting other elements. WP Rocket also has an option to “add missing image dimensions.” Otherwise, common examples are below.
<img src="example.png" width="680" height="680" />
<iframe src="https://www.youtube.com/embed/QlkzOoLRm6w" width="680" height="340" ></iframe>
<div class="ads" style="min-width: 300px; min-height: 250px;"></div>
Other ways to improve CLS:
- Hont fonts locally and preload them
- Set critical CSS (you can use a free generator)
- Disable “optimize CSS delivery” in WP Rocket
- Use CSS transform/translate properties in animations
- Add width and height attributes to images, iframes, ads
Total blocking time is when long tasks block the main-thread.
I use Perfmatters since the UI/UX is better, but it also costs money. The pro version of Asset CleanUp lets you unload custom CSS while Perfmatters (and Asset CleanUp free version) don’t.
Choose a plugin. If using Perfmatters, enable the script manager in settings. If using Asset CleanUp, enable test mode if you want to test unloading assets without breaking your live site.
- Disable slider plugin on pages that don’t use sliders
- Disable contact form plugin everywhere but contact page
- Disable rich snippets plugin on pages that don’t use rich snippets
- Disable social sharing plugin on all pages (since it’s usually for blog posts)
12. Preload, Prefetch, Preconnect
Check your PageSpeed insights report for these recommendations.
Some caching + speed plugins already support these, so check those first. Otherwise, you can add these manually to your header.php file – or use Pre* Party Resource Hints or Perfmatters.
Preload – instructs browsers to download something ASAP. Often used with the LCP element (i.e logo and background image) but can also be used for fonts, scripts, and styles. Google says to preload key requests, so test each preloaded link (in GTmetrix Waterfall) to make sure it has a positive impact. Check your GTmetrix Waterfall to find your font files and try preloading those.
<link rel='preload' href='/image.png' as='image'> <link rel='preload' href='/style.css' as='style'> <link rel='preload' href='/script.js' as='script'> <link rel='preload' href='/font.woff2' as='font' crossorigin>
Prefetch – helps browsers anticipate third-party domains. Find which ones are loading on your site in the “reduce impact of third-party code” tab of PageSpeed Insights. Then prefetch them.
<link rel="prefetch" href="https://cdn.domain.com"> <link rel="prefetch" href="https://fonts.gstatic.com"> <link rel="prefetch" href="https://connect.facebook.net"> <link rel="prefetch" href="https://www.google-analytics.com"> <link rel="prefetch" href="https://www.googletagservices.com">
Preconnect – similar to prefetch but instead of just the DNS lookup (what prefetch does), it also includes TLS negotiations and TCP handshakes. It should be used sparingly (that’s why Google says to preconnect to required domains). It’s mostly only done with CDNs and third-party fonts.
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://cdn.yourdomain.com" crossorigin>
13. Eliminate Render-Blocking Resources
14. Optimize Images
There are a few primary ways to optimize your images; some are found in GTmetrix, others are found in Google PageSpeed Insights. All of them will contribute to better scores and load times.
Properly Size Images – means images are too large and need to be resized. When expanded, GTmetrix tells you which images have errors and their correct dimensions. Your logo, sliders, blog, and any image on your website usually calls for specific dimensions which you should be resizing them too. Start with images that appear on multiple pages (eg. logo + sidebar images). It’s a good idea to create a cheat sheet of your image dimensions so you can resize images accordingly (content body width, widget width, sliders, featured images, carousel images, etc). This way, you or your designer can crop/resize images before uploading them to WordPress.
Losslessly Compress Images – this is “efficiently encode images” in PSI. It means you need to compress images using a plugin like ShortPixel (what I use), Imagify, or Smush. Set your compression level in the plugin settings and test a few images before bulk optimizing them, since you may see a slight reduction in quality. Most are free until you reach the monthly quota.
Lazy Load Images – same thing as “defer offscreen images” and can be done in most cache or image optimization plugins. You can also try the native lazy load built-in to WordPress 5.5. Remember to exclude all your above the fold images from lazy load since it’s counterintuitive.
Serve Images In Next-Gen Format – use a plugin like ShortPixel or WebP Converter For Media to convert your images to the faster WebP format. It can easily reduce image file sizes by 25%.
15. Optimize Google Fonts
Check your font files in your GTmetrix Waterfall chart.
There are many ways to optimize fonts:
- Avoid .ttf (use woff instead)
- Preload font files (test impact of each file)
- Be minimal with font families, weights, icons
- Fix font-related 4xx and 5xx errors in GTmetrix
- Host fonts locally (try OMGF or Elementor has an option)
- Add font-display: swap to ensure text remains visible during webfont load
16. Optimize Third-Party Code
Third-party code is anything loading on your site from another website.
It can be anything from embedded videos to Google Fonts, Analytics, AdSense, Tag Manager, Maps, or even social sharing buttons on your blog. These generate extra requests from outside websites and will slow down yours. While some third-party code can be optimized, others can’t.
- Google Analytics – host locally using a plugin like CAOS, WP Rocket, Perfmatters, or Flying Analytics. CAOS and Perfmatters also let you use analytics-minimal.js which is 1.5 KB instead of roughly 51.5 KB from gtag.js v4 or gtag.js. It slightly reduces page weight.
- Google Maps – lazy load iframes and only use a Google Map on the contact or locally optimized pages. Try taking a screenshot of the map and linking it to driving directions.
- Google Tag Manager – using CAOS to host GTM locally, reduce tags, and avoid hard coding tags in the headers. Usually only benefits load times for large, unoptimized sites.
- CDNs – preconnect your CDN and if using Cloudflare, try disable Rocket Loader and apps.
- Videos – lazy load + replace iframe with preview image in WP Rocket / WP YouTube Lyte.
- Gravatars – host locally using a local avatar plugin, delay Gravatars, and try caching them.
- Social Media – disable social sharing buttons where they don’t load using an asset unloading plugin (like Asset CleanUp), take a screenshot of social media posts and use that instead of embeds, limit number of posts in feeds, and use browser resource hints.
17. Remove WordPress + WooCommerce Bloat
By default, WordPress consumes resources with autosaves, post revisions, pingbacks, trackbacks, heartbeat API, jQuery migrate, and many other things you probably don’t need.
Plugins To Remove Bloat:
18. Leave Bluehost For Vultr HF Or LiteSpeed Hosting
If you want a faster website/TTFB, leave Bluehost and join the WP Speed Matters Facebook Group (run by Gijo Varghese) to get unbiased feedback on WordPress hosting and site speed.
I moved from SiteGround (who is faster than Bluehost) to Cloudways which cut load times in half and fixed CPU issues. Vultr HF is cloud hosting with faster CPU clock speeds and NVMe compared to shared hosting + slower SSDs on Bluehost. They also have a Redis add-on which reduces CPU with efficient memory usage. It’s monthly pricing with 22 Vultr data centers. Main cons are no file manager or email hosting, and the Breeze plugin + CloudwaysCDN aren’t great. I suggest WP Rocket or FlyingPress, Cloudflare or BunnyCDN, and Google Workspace. They do 3-day trials, a free migration, and a promo code for 30% off 3 months. Some people say they’re techie since you have to launch a Vultr server and connect your domain name, but it’s not hard:
Then request a free migration, activate the Redis add-on, and watch the magic happen:
Spend 5 minutes looking at recent Facebook polls on “the best hosting,” migration results of people who switched, and unbiased feedback in Facebook groups (click thumbnails to enlarge).
Cloudways Vultr High Frequency starts at $13/mo and is cloud hosting with faster NVMe SSD storage (compared to Bluehost’s shared hosting with slower SATA SSDs).
I’m not sure why people use other LiteSpeed hosts like Hostinger/A2 when you get more CPU cores + RAM with NVMe on NameHero. You can use the LiteSpeed Cache plugin with server-side caching, QUIC.cloud, HTTP/3, and Redis. This is arguably the fastest setup you’ll find on a budget. I don’t know anywhere else you get 3 CPU cores, 3GB RAM, and NVMe on LiteSpeed for $8/mo. WP Johnny and I both have solid guides on configuring LiteSpeed Cache with QUIC. The main con is they only have data centers in US + Netherlands. Otherwise they have higher uptimes with less ‘frequent maintenance’ compared to Hostinger/A2’s uptime status page with US-based support. Ryan (the founder) is a down to earth guy if you watch his YouTube channel.
Frequently Asked Questions
Is Bluehost slow?
Bluehost uses Apache servers with slower SSDs and is infamous for overcrowding servers which can results in a slower website and TTFB. Yes, Bluehost is slow compared to many other hosts especially if you're on their cheap shared hosting which lacks server resources.
Why is my website slow on Bluehost?
You may be running outdated PHP versions, slow plugins, or have unoptimized images, fonts, and third-party code. While it's obviously best to optimize these, your website could very well be slow because of Bluehost's servers.
Why is my server response time slow on Bluehost?
Servers are controlled by your hosting, so this would be a problem directly related Bluehost. You may need to upgrade plans to include more server resources or move away.
Is Bluehost's DNS slow?
Bluehost doesn't have the fastest DNS and you're better off switching it to Cloudflare's free DNS which has reliable performance and uptimes which you can see on dnsperf.com.
Why is my Bluehost email slow?
When you combine web/email hosting together, the server is responsible for both which can slow these down. This is why using a third-party email hosting service is a good idea.
Did this tutorial work?
Let me know in the comments and feel free to share your new load time! If you still have a slow WordPress site on Bluehost let me know about that too… I will gladly look into your GTmetrix + PageSpeed report and send you a few suggestions (just please do what you can from this guide).
- Why I Use Cloudways Vultr HF (Getting Started + Optimizations)
- Why I Recommend NameHero For LiteSpeed (Getting Started + Optimizations)
- My Ultimate WordPress Speed Optimization Guide (25 Detailed Tips)