A slow website loses visitors before they read a single word, and Google uses page experience as one of its ranking signals. The good news: WordPress itself is not slow. In almost every slow WordPress site we look at, the cause is one (or several) of the ten problems below, and most of them can be fixed.
First, measure properly
Before changing anything, find out where you stand. Open Google PageSpeed Insights, enter your address and look at the mobile results first: most visitors are on phones, and phones show problems that a fast office computer hides.
Pay attention to the three Core Web Vitals. Google considers a page good when:
- Largest Contentful Paint (LCP) is 2.5 seconds or less: how long until the main content is visible
- Interaction to Next Paint (INP) is 200 milliseconds or less: how quickly the page reacts to taps and clicks
- Cumulative Layout Shift (CLS) is 0.1 or less: how much the layout jumps around while loading
Test more than the homepage. A blog post, a service page and (if you have one) a product page often have completely different problems.
The 10 most common causes
1. A heavy page builder or multipurpose theme
Page builders and “do everything” themes load code for hundreds of features on every page, whether you use them or not. That means more CSS, more JavaScript and deeply nested HTML. Settings can soften the impact, but when the builder itself is the bottleneck, no plugin can fully fix it. The lasting solution is a lean, custom theme built for your content.
2. Plugins that load everywhere
The number of plugins matters less than what they do. A single plugin that adds its scripts and styles to every page (a slider, a form, a social feed) can cost more than ten small ones. Check which plugins load files on pages where they aren’t needed, and remove the ones you no longer use.
3. Images that are too big
A photo straight from a camera or stock site can be several megabytes. Resize images to the size they are shown at, use modern formats like WebP or AVIF, and let WordPress serve smaller versions to phones (it does this with srcset when images are added properly). Lazy-load images further down the page, but never the main image at the top: that one should load first.
4. No page caching
Without caching, WordPress builds every page from scratch for every visitor: PHP runs, the database is queried, the HTML is assembled. A page cache stores the finished page and serves it instantly. On most sites this is the single biggest improvement for server response time.
5. Slow hosting or an outdated PHP version
Cheap shared hosting puts your site on a crowded server. And every recent PHP version is noticeably faster than older ones, while versions past their end of life no longer get security fixes. Check which PHP version your site runs on; if it starts with 7, it’s time to upgrade (after testing your theme and plugins).
6. Render-blocking CSS and JavaScript
The browser can’t show the page until it has downloaded the stylesheets and scripts in the page head. Large CSS files and scripts that aren’t needed for the first view delay everything. Load scripts in the footer or with defer, remove unused CSS, and keep what is needed for the first screen small.
7. Third-party scripts
Chat widgets, tracking pixels, heatmaps, cookie tools and spam protection all load code from other servers, and you can’t control how fast those servers are. Ask of every script: do we still use it, and does it need to be on every page? A common example is spam protection like reCAPTCHA, which only needs to load on pages that actually have a form.
8. Web fonts
Every font family and weight is another file. Use as few as you need, load them from your own server instead of a third party, and set font-display: swap so text is visible right away instead of waiting for the font.
9. A bloated database
Over the years, WordPress collects post revisions, expired temporary data and settings left behind by deleted plugins. Some of these are loaded on every single page request. Cleaning them up (with a backup first) and limiting the number of stored revisions keeps the database lean.
10. Heavy embeds
An embedded YouTube video or Google Map loads a large amount of code even if nobody presses play or zooms in. Show a preview image instead and load the real embed only when someone clicks it. The same goes for sliders: they are rarely worth their weight.
What this looks like in practice
We apply the same rules to our own website. reCAPTCHA loads only on the contact and audit pages, which saves around 350 KB on every other page. The icon font contains only the icons we actually use. Fonts are served from our own server, and the homepage needs no extra stylesheet request before it can paint. At the time of writing, our homepage scores 99 to 100 for mobile performance in Google Lighthouse. You can check it yourself in PageSpeed Insights.
Quick wins and real fixes
Quick wins you can often do in an afternoon: add page caching, compress and resize your largest images, remove unused plugins, update PHP, and take scripts off pages that don’t need them.
Structural fixes take more work but solve the problem for good: replacing a heavy page builder with a custom theme, rebuilding templates so they only load what they need, and moving to better hosting.
Speed also isn’t a one-time project. New plugins, new tracking scripts and large images creep back in over time, which is why a regular check is part of good website maintenance.
Want us to look at your site?
We build fast, custom WordPress websites and fix slow ones. Request a free audit of your website, or send us a message and we’ll tell you what’s slowing it down.
