Have a slow WordPress site on Bluehost?
To speed up a slow Bluehost website, activate Cloudflare’s CDN and use PHP 7.4 in the Bluehost cPanel. Install a cache plugin, avoid high CPU plugins, and optimize your images, database, and fonts. Most importantly, optimize for core web vitals (a ranking factor in May, 2021). Many of my recommendations will improve web vitals and PageSpeed Insights scores.
However, Bluehost is notoriously slow. They overcrowd servers and use outdated speed technology. It’s well-known in the WordPress Facebook Hosting Group which I suggest joining. It’s a great place to get unbiased hosting feedback from knowledgeable people in this industry.
There’s an easy way to tell if Bluehost is slow: run your website through PageSpeed Insights to see if reduce server response time is in your report (Google flags your TTFB if it’s over 600ms). If you have a high server response time or TTFB, you can conclude that Bluehost is the problem. I suggest migrating to someone like Cloudways (DigitalOcean or Vultr HF) who was the #1 host in 18 Facebook polls, does free migrations, and is who most people use in that Facebook Group.
If you need help, leave your GTmetrix or PageSpeed Insights report in the comments and I’ll hit you up with a few suggestions. But if your TTFB is slow, do yourself a favor and get off Bluehost.
- Check For Slow Server Response Times
- Upgrade To PHP 8.0 In Bluehost’s cPanel
- Activate Cloudflare’s CDN
- Optimize Your LCP Element
- Use Preload, Prefetch, Preconnect
- Eliminate Render-Blocking Resources
- Fix Layout Shifts
- Configure A Solid Cache Plugin
- Find And Fix Slow Loading Plugins
- Remove Junk From Your Database
- Optimize Images
- Optimize Google Fonts
- Optimize Third-Party Code
- Remove WordPress And WooCommerce Bloat
- Avoid Using Slow Page Builders On Shared Hosting
- Reduce TTFB By Moving To Faster Hosting (Cloudways)
1. Check For Slow Server Response Times
Run your website through PageSpeed Insights to see if “reduce server response times” is in your report. If yes, this means your server is slow. A high number of WordPress sites on Bluehost have a slow server especially since Google recommends it should be under 600ms.
The only way to fix this is by lowering the amount of CPU consumed by your website (i.e. deleting high resource plugins and heavy page builders). Or upgrade your hosting to include more server resources (either with Bluehost or someone else) – but this is a top speed factor.
Indicators Bluehost Is Slow
- High server response time in PageSpeed Insights
- High TTFB (time to first byte) in GTmetrix Timings tab
- High PageSpeed and YSlow scores in GTmetrix, but a slow load time
- 503 service unavailable errors which means the server is being overloaded
You may also want to read Bluehost’s resource usage section on their user agreement page. It says “Accounts with a large number of files (inode count in excess of 200,000) can have an adverse effect on server performance.” This means if your site is consuming lots of resources (from more traffic, slow plugins, etc), they throttle your bandwidth and slow down your site. Bluehost customers constantly complain about slow servers on Twitter and Bluehost forums.
2. Upgrade To PHP 8.0 In Bluehost’s cPanel
Bluehost now supports PHP 7.4.
Most WordPress users are running outdated PHP versions when upgrading can easily make your site 2-3x faster. Bluehost will not upgrade you automatically (because they don’t want to risk breaking your site) so you need to do this yourself as Bluehost releases new PHP versions.
How To Update PHP Version On Bluehost
- Login to your Bluehost cPanel
- Select the PHP Config option
- Select PHP 7.4 and save changes
3. Activate Cloudflare’s CDN
To add Cloudflare, login to Bluehost and go to Domains → Cloudflare → Activate.
This activates Cloudflare’s CDN (content delivery network) which hosts your website on 200+ data centers around the world, reducing the distance between your server and visitors. It also helps offload resources to their data centers (lightening the load on your server) while improving security. Registering your site on the actual Cloudflare website, logging into your Cloudflare dashboard, and configuring the speed tab and page rules can further improve speed.
The next 5 suggestions are from PageSpeed Insights and can improve core web vitals.
4. Optimize Your LCP Element
Largest contentful paint (LCP) is one of three metrics in core web vitals.
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)
- Serve the LCP image from your CDN
- Exclude the LCP image from lazy load
- Make sure the LCP image uses proper dimensions
5. Use Preload, Prefetch, Preconnect
Preload and preconnect are recommended in PageSpeed Insights. Prefetch can also be used to speed up third-party code. You can add these manually to your header.php file or use Pre* Party or Perfmatters. Some plugins only support these partially such as WP Rocket, Asset CleanUp, Autoptimize, and SG Optimizer. Check if your speed plugin(s) support browser resource hints.
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. Test to make sure preload links have a positive impact on speed – since Google says to preload key requests.
<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>
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 with 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 affiliate link management plugin on pages that don’t use aff links
- Disable social sharing plugin on all pages (since it’s usually for blog posts)
7. Eliminate Render-Blocking Resources
8. Fix Layout Shifts
Layout shifts happen when elements on your site shift, literally.
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
- Use CSS transform properly in animations
- Fix issues with WP Rocket’s optimize CSS delivery
- Use transform: translate() to move elements instead of up, down, left right
9. Configure A Solid Cache Plugin
WP Rocket was rated #1 in numerous Facebook polls. That’s because it comes with more features than nearly any cache plugin (especially free ones like WP Fastest Cache or W3 Total Cache). I have tutorials for most cache plugins, but I personally use WP Rocket. Nitropack has gained popularity but it’s expensive, cheats scores, and doesn’t always improve actual load time. If you don’t use WP Rocket, you may need to install a few extra plugins for these optimizations.
- Database cleanup – WP-Optimize
- CSS/JS optimization – Autoptimize
- Host Google Analytics locally – Flying Analytics
- CDN URL integration – BunnyCDN / CDN Enabler
- Heartbeat control – Heartbeat Control / manual code
- Lazy load images/videos – Optimole / WP YouTube Lyte
- Preload links / instant page – Perfmatters or Flying Pages
- Host Facebook Pixel locally – no plugin does this that I know
- Prefetch/preload – Pre* Party Resource Hints / manual code
- Font-display:swap – Swap Google Fonts Display / manual code
Get 10% off WP Rocket by signing up for their email list on their coupons page.
WP Rocket is #1 in most Facebook polls (click thumbnails to enlarge):
10. Find And Fix Slow Loading Plugins
Find Your Slowest Plugins – look through your GTmetrix report (especially the Waterfall chart) to find which plugins are causing issues with your load times. Delete or replace them if possible. Query Monitor and the WP Hive Chrome Extension can also be useful for finding slow plugins.
Avoid Slow Plugins – avoid these 70+ infamously slow plugins.
- AdSense Click Fraud Monitoring
- All-In-One Event Calendar
- Backup Buddy
- Beaver Builder
- Better WordPress Google XML Sitemaps
- Broken Link Checker
- Constant Contact for WordPress
- Contact Form 7
- Contextual Related Posts
- Digi Auto Links
- Disqus Comment System
- Divi Builder
- View Full List Of 73 Slow Plugins
Minimize Plugins – deactivate and delete any plugins you don’t absolutely need.
Consolidate Plugins – use 1 plugin for multiple features, for example, use WP Rocket for nearly all speed optimizations instead of individual plugins like WP-Optimize or Heartbeat Control.
11. Remove Junk From Your Database
If you’re using WP Rocket for your cache plugin, you can skip this step since there’s an option to do this in the WP Rocket “database” settings. Otherwise WP-Optimize does the same thing… it cleans your database like your spam and trash folder, pingbacks, trackbacks, and potentially thousands of post revisions. Schedule a database cleanup every 2 weeks or so to keep it clean.
WP-Optimize lets you delete tables left behind by old plugins which aren’t installed anymore.
12. 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 files sizes by 25%.
13. Optimize Google Fonts
Have you checked your font’s load times in GTmetrix Waterfall?
There are many ways to optimize fonts:
- Try preloading fonts
- Add font-display: swap
- Avoid .ttf (use woff instead)
- Host fonts locally (try OMGF)
- Be minimal with font families, weights, icons
- Fix any font-related 4xx and 5xx errors in GTmetrix
14. 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.
- Google Fonts – host locally, add font-display: swap, reduce number of fonts/weights, test preloading them, and use woff. If they’re serving from fonts.gstatic.com, preconnect them.
- 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 WP User Avatar, delay Gravatars, and try caching them.
- Social Media – disable social sharing buttons where they don’t load using an asset unloading plugin (such as 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.
15. Remove WordPress And 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.
16. Avoid Using Slow Page Builders On Shared Hosting
Sure, you can optimize them by unloading unused assets and using Elementor 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.
See how many times Elementor is in the source code?
And how many extra files it loads?
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.
Page builder migrations and polls on the fastest themes (click thumbnails to enlarge):
17. Consider Moving To Cloudways
I use Cloudways is who is #1 in most recent Facebook polls and my TTFB is consistently <200ms. I’m currently on their Vultr High Frequency plan, but DigitalOcean is good too. It’s $10-$13/month, but we’re talking about fast cloud hosting, not cheap hosting with slow TTFBs.
Instead of reading biased reviews, I encourage you to do your own research. Join Facebook Groups and look at polls, migration results, and conversations on “the best hosting” (shown below). Check out Backlinko’s PageSpeed Test where he found SiteGround had a slow TTFB. You already know GoDaddy and EIG brands (Bluehost + HostGator) are not good choices. WP Engine went downhill, Hostinger writes fake reviews, and NameCheap is mainly for domains.
People who moved to Cloudways and posted their results (click thumbnails to enlarge):
Why I use Cloudways:
- My TTFB is consistently <200ms
- The WordPress admin loads instantly
- Easier to pass web vitals on cloud hosting
- Monthly pricing and free 3-day trials are nice
- Server-level caching (Redis makes a big difference)
- They do a free migration and have a migrator plugin
- Support is fast/helpful as reflected in Trustpilot reviews
- Choice of 5 cloud hosts: DO, Vultr, AWS, Google Cloud, Linode
- They have a Cloudways Users Facebook Group to ask questions
- Only major con is no email hosting, but there’s an option for Rackspace
Affiliate Disclaimer – if you sign up for Cloudways with my affiliate link, thank you! Most affiliates recommend things only for commissions but I take mine seriously and support them with evidence. I also donate to GoFundMe campaigns and everything helps. They do free migrations but if you have questions about launching a server or anything else, you can reach out to me by leaving a comment. Cheers to a faster TTFB.
Frequently Asked Questions
Why is my website slow on Bluehost?
Bluehost is shared hosting and lacks server resources. These are needed to accomodate high CPU tasks like WooCommerce, AdSense, and even Elementor. Configuring a cache plugin with a CDN is one of the most effective ways to fix a slow website on Bluehost.
How to fix a slow server response time on Bluehost?
You can fix a slow server response time on Bluehost by upgrading to the latest PHP version, configuring a cache plugin with a CDN, and cleaning up your database. If these don't work, consider moving away from shared hosting.
Will upgrading plans improve load times?
Yes, but you should optimize your website first and consider alternative hosts. Bluehost's Optimized WordPress Hosting or VPS plans aren't nearly as fast as semi-dedicated or cloud hosting from other providers. Join some Facebook Groups and do your research.
Which WordPress speed plugins should I use?
WP Rocket, TinyPNG, and Perfmatters are 3 key WordPress speed plugins. If you're not using WP Rocket, you will need to install additional plugins to take care of Heartbeat Control, database cleanup, lazy loading, and hosting Google Fonts and Analytics locally.
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 + Pingdom report and send you a few suggestions (just please do what you can from this guide).
It’s a 44 minute video but definitely worth it!
See Also: Why I Use Cloudways Hosting