How To Speed Up A Slow Website On Bluehost – A Complete Guide To Optimizing Websites On Awful WordPress Hosting (Leave Otherwise)

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.

Slow bluehost website

Omm gtmetrix 2021
Hopefully we can get your GTmetrix report looking more like this

 

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).

Even though Bluehost claims “server issues are the rarest cause for a site to experience slow load times” they are actually the #1 factor in the official WordPress optimization guide by far.

Reduce server response time

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.

Speed-up-slow-bluehost

Bluehost-managed-wordpress-hosting

Bluehost hostgator godaddy feedback

 

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.

Bluehost server caching

 

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.

Bluehost php 8

 

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.

Change bluehost nameservers cloudflare
Setup Cloudlfare manually (by changing nameservers) so you have access to their full dashboard
Bluehost change nameservers
Login to Bluehost and change nameservers 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.
Activate cloudflare cdn
Change your website to “Proxied” in the DNS settings to use their CDN

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.

Dns performance
Cloudflare’s DNS is faster than most DNS providers

 

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

LiteSpeed Cache is the fastest cache plugin since it uses server-side caching (faster than WP Rocket’s file-based caching), but you need to use a LiteSpeed WordPress host like NameHero.

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
  • Delay JavaScript execution – Flying Scripts
  • 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-slow-plugins
Install Query Monitor, view any page, and click Queries → Queries By Component

Some plugins add extra CSS + JavaScript and load slowly the frontend . Other plugins load slowly in the backend from resource-intensive tasks like scans, collecting stats, or backups.

Slow wordpress plugins list

 

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.

Wp-optimize clean database
Remove junk from your database
Wp-optimize-tables
Remove tables left behind by old plugins

 

9. Don’t Use Slow Page Builders On Shared Hosting

I’m mainly talking about Elementor and Divi.

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:

Elementor-souce-code

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.

Elementor/Divi have optimizations in their settings which I would definitely use. Most of these help remove unused CSS, JavaScript, and fonts which are PageSpeed Insight recommendations.

Elementor optimized dom output

 

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

Largest contentful paint wordpress element - background image

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:

Without Font-Display Swap:

https://fonts.googleapis.com/css2?family=Lato:[email protected]

With Font-Display Swap:

https://fonts.googleapis.com/css2?family=Lato:[email protected]&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.

You can try deferring and delaying JavaScript (usually done in your cache plugin), remove unused CSS/JS, and optimize third-party code. Most of these are covered in this guide. Check your PageSpeed Insights report for “long main-thread tasks” and your third-party code report.

Avoid long main-thread tasks wordpress

 

11. Remove Unused CSS + JavaScript

Asset unloading plugins like Asset CleanUp and Perfmatters can remove unused CSS and JavaScript. Both can improve core web vitals and are recommended in PageSpeed Insights.

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.

Next, edit a page/post and view all CSS and JavaScript files that are being loaded. You may notice some individual files (or even entire plugins) are loading in places they don’t need to be.

Examples

  • 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)
Disable plugins perfmatters
Disable plugins or individual scripts/styles on pages where they don’t need to load

 

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

If you have render-blocking resource errors in PageSpeed Insights, Autoptimize and Async JavaScript will usually do the trick. Install Autoptimize with the settings shown below. Next, install Async JavaScript and click “apply defer” found in the settings. That’s all you need to do.

Optimize aggregate javascript css

Render-blocking errors can also be from third-party code, heavy JavaScript, and configuration issues with your cache plugin. You should also try hosting font files locally and preloading them.

 

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.

Gtmetrix image optimizations

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.

Gtmetrix font files

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 AdSense – ads are a speed killer. You can try lazy loading or delaying it’s JavaScript. Remember to specify ad dimensions and avoid showing them above the fold.
  • 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.

Third party usage

Delaying JavaScript is great for optimizing third-party code and can be done in many cache plugins (WP Rocket, FlyingPress or the Flying Scripts plugin). See my list of JavaScript to delay.

Flying scripts

 

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.

Bluehost is the issue

I use Cloudways Vultr HF which is a popular choice in Facebook Groups. You can check my GTmetrix report, TTFB, core web vitals, or click through my site to test the speeds yourself.

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:

Cloudways launch vultr hf server

Then request a free migration, activate the Redis add-on, and watch the magic happen:

Cloudways vs bluehost
Improve speed, TTFB, and core web vitals
Cloudways backend speed
Fix slow admins, CPU issues, and 503 errors
Siteground vs cloudways pricing
Monthly pricing with no high renewals
Cloudways vs bluehost facebook feedback
Better feedback in Facebook Groups

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).

Favorite-cloudways-server

Moving away from siteground

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).

 
LiteSpeed hosting on NameHero is another solid choice (if you haven’t heard of LiteSpeed, go read about it). It’s cheaper than Cloudways because it’s shared hosting – but faster than most.

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.

Namehero plans resources
NameHero has more resources compared to similar LiteSpeed hosts (see specs page)

Web server poll

Web server poll oxygen

Namehero +1

Bluehost vs namehero

Namehero vs bluehost trustpilot review

Siteground vs cloudways vs namehero

Namehero vs siteground feedback

Siteground to namehero

Cloudways trustpilot review

Namehero trustpilot review

Affiliate Disclaimer: I use affiliate links to Cloudways + NameHero and appreciate your support. But what do I know? I’m just a biased affiliate. Do your own research in FB groups.

 

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).

See Also:

Cheers,
Tom

About Tom Dupuis

Tom Dupuis writes WordPress speed and SEO tutorials out of his apartment in Denver, Colorado. In his spare time, he plays Rocket League and watches murder documentaries. Read his bio to learn 50 random and disturbing things about him.

38 thoughts on “How To Speed Up A Slow Website On Bluehost – A Complete Guide To Optimizing Websites On Awful WordPress Hosting (Leave Otherwise)

  1. Amazing article.
    Sadly I’m locked in with Bluehost till mid-2024 but honestly, now I’m thinking of just leaving anyway.
    NameHero is only $8 for the first month though, then it goes up to 20. I guess Cloudways is the way to go then.

    1. Cloudways and NameHero are both good but very different not just in price but “techieness” and built-in services (i.e. NameHero has email hosting and LSC plugin built-in to their service while with Cloudways you would need a third-party email service and probably need to buy a premium cache plugin to get the fastest results). Both are faster than Bluehost but would just consider a few more things than price.

Leave a Reply

Your email address will not be published.