New ChatGPT vs Google Search Volume: What OpenAI’s 20% Claim Really Means

Technical SEO

Speed Up WordPress: Practical Fixes That Don’t Break Your Site

Measure real-user data first. Then fix hosting, caching, images, fonts and scripts one change at a time, so your WordPress site gets faster without breaking forms or checkout.

Speed Up WordPress: Practical Fixes That Don't Break Your Site

Quick Answer

To speed up WordPress, start with field data from Search Console and PageSpeed Insights. Then fix the server: good hosting, a current PHP version and one page caching layer. Next, resize and convert images, trim fonts, remove unused plugins and scripts, defer JavaScript carefully, clean the database and add a CDN. Test each change on staging first.

Key Takeaways

  • Use CrUX field data from PageSpeed Insights and Search Console as your baseline. The lab score is for finding problems.
  • A slow TTFB points to hosting, PHP or caching, not images. WordPress recommends PHP 8.3.
  • Run one page caching layer and never cache cart, checkout or account pages.
  • Never lazy-load the LCP image, and keep image width and height attributes to avoid layout shift.
  • Defer is safer than delay. Check for jQuery errors, menus and analytics after changing how scripts load.
  • Make changes on staging, one at a time, and test forms and checkout after each.
In this article
  1. WordPress Speed Optimization Starts With Measurement
  2. Fix the Foundations: Hosting and PHP Version
  3. Turn on Page Caching
  4. Optimise Images Properly
  5. Fix Font Loading
  6. Remove Unused Plugins and Scripts
  7. Defer JavaScript Safely
  8. Clean Up the Database
  9. Add a CDN
  10. How to Avoid Breaking Your Site
  11. Conclusion
  12. Frequently asked questions

Does your WordPress site feel slow? Does PageSpeed Insights keep showing red scores? You probably don’t need a rebuild. Good WordPress speed optimization comes down to a short list of fixes done in the right order. Measure real-user data first. Fix the server. Add page caching. Slim down images, fonts and scripts. Then clean up what’s left.

The order matters as much as the fixes. One of the most common ways to break a WordPress site is turning on every option in a performance plugin at once. I see this mistake more than any other. This guide covers what to change, why it helps, and how to do it without taking your site down.

WordPress Speed Optimization Starts With Measurement

Speed work without a baseline is guesswork. You need to know which pages are slow, for which visitors, and which metric is failing. Each problem has a different fix.

Field Data Versus Lab Data

PageSpeed Insights shows two kinds of data. Mixing them up causes most of the confusion around speed scores.

  • Field data comes from real Chrome users through the Chrome User Experience Report (CrUX). It covers the last 28 days, and it’s what Google’s ranking systems look at.
  • Lab data is one simulated Lighthouse test on one device and network. It’s useful for finding problems, but the 0–100 performance score is not a ranking signal by itself.

Google’s PageSpeed Insights documentation explains what happens when a page doesn’t have enough real-user data. The tool falls back to data for the whole origin (your whole domain). So on a small site, the field numbers you see on a blog post may really describe your whole site.

The Three Numbers That Matter

Core Web Vitals are measured at the 75th percentile of page loads, split by mobile and desktop. In plain words, 3 out of 4 visits need to hit the target. According to web.dev, a good experience means:

  • Largest Contentful Paint (LCP): 2.5 seconds or less. This is usually your hero image or main heading.
  • Interaction to Next Paint (INP): 200 milliseconds or less. This is how fast the page responds to taps and clicks.
  • Cumulative Layout Shift (CLS): 0.1 or less. This is how much the layout jumps around while loading.

For a fuller explanation of each metric and how Google uses them, see my guide to Core Web Vitals in 2026.

Build a Simple Baseline

  1. Open the Core Web Vitals report in Search Console. It groups URLs with similar problems. So you can see if the issue is all product pages, all blog posts or just the home page.
  2. Pick one URL from each template (home, a post, a page, a product or category page). Run it through PageSpeed Insights. Record the field data and the top lab diagnostics.
  3. Note your Time to First Byte (TTFB), which is how long the server takes to start sending the page. A slow TTFB points to hosting, PHP or caching, not to images.
  4. Save the results in a spreadsheet with the date. You’ll come back to this after every change.

Remember that field data lags behind. After a fix, it takes up to 28 days for CrUX and Search Console to fully show it. So I use lab tests to confirm a change worked, and field data to confirm real users feel it.

Fix the Foundations: Hosting and PHP Version

No plugin can make up for an overloaded server. If your TTFB is slow even on cached pages, the problem sits below WordPress.

Hosting

Cheap shared hosting puts hundreds of sites on one machine. You share its CPU and memory with all of them. Signs you’ve outgrown it include slow TTFB at busy times, a very slow admin dashboard, and timeouts when you save posts.

When comparing hosts, look for:

  • Server-level page caching (Nginx FastCGI cache, LiteSpeed, Varnish or a host’s own system).
  • An object cache such as Redis or Memcached. It helps logged-in users, WooCommerce carts and busy admin areas.
  • Data centres close to your audience, or a built-in CDN.
  • One-click staging sites and daily backups. You’ll need both for the rest of this guide.
  • Easy switching between PHP versions.

In my experience, hosting is the fix people try last and should try first. If the server is slow, everything else is a patch.

PHP Version

WordPress runs on PHP. Newer PHP versions are faster and still get security fixes. WordPress currently recommends PHP 8.3. The core team announced in January 2026 that WordPress 7.0 raises the minimum supported version to PHP 7.4.

If you’re still on PHP 7.x, moving up is usually one of the cheapest wins you can get. But don’t flip the switch on your live site. Older plugins and themes can throw fatal errors on newer PHP. Test on staging first, check your error log, and then upgrade the live site.

Turn on Page Caching

Without caching, every visit makes WordPress run PHP and query the database to build the page from scratch. Page caching saves the finished HTML and serves it straight away. It’s usually the single biggest improvement to TTFB and LCP.

Pick One Caching Method

  • Host-level caching: if your host provides it, start there. It’s normally the fastest and needs the least setup.
  • LiteSpeed Cache: free and very capable. But its page caching only works on servers running LiteSpeed or OpenLiteSpeed. On an Apache or Nginx host, its page cache won’t do anything.
  • Plugin-based caching: WP Rocket, W3 Total Cache, WP Super Cache and similar tools work on most hosts.

Run one page caching layer, not several. Two caching plugins fighting each other is a classic cause of old pages, broken carts and login problems. If your host caches pages, use a plugin only for the front-end extras it offers, and turn its page cache off.

What Must Never Be Cached

Good caching tools exclude these by default, but check:

  • Cart, checkout and account pages on WooCommerce or membership sites.
  • Pages for logged-in users, unless your tool handles them separately.
  • Any page showing personal content or nonces (one-time security codes) in forms. These can fail once cached for too long.

After turning on caching, open your site in a private window. Test your forms, add something to the cart and complete a test checkout. A fast site that can’t take an order is worse than a slow one.

Optimise Images Properly

Images are usually the heaviest part of a WordPress page. The LCP element is often an image too.

  1. Resize before you upload. A 5,000-pixel photo from a phone has no place in an 800-pixel content column. WordPress creates smaller sizes, but some themes and blocks still use the original.
  2. Use modern formats. WordPress has supported WebP since version 5.8 and AVIF since 6.5. An image plugin or your CDN can convert existing JPEGs and PNGs for you.
  3. Compress. Lossy compression at a sensible quality setting looks the same to most visitors and is much smaller.
  4. Keep width and height attributes. WordPress adds them by default. They let the browser save space for the image, which stops layout shift. Page builders and custom code sometimes strip them out.
  5. Don’t lazy-load the LCP image. WordPress lazy-loads images by itself. It also adds fetchpriority="high" to the image it thinks is most likely the LCP. Problems start when a plugin forces lazy loading on everything, including the hero image. That delays the very thing LCP measures.

Watch out for sliders at the top of the page. They often load several large images and extra JavaScript before anything useful appears. I nearly always recommend a single static hero image instead, because it’s faster.

Image work also overlaps with search visibility. My guide to image SEO in 2026 covers file names, alt text and Google Lens, which you can tidy up at the same time.

Fix Font Loading

Web fonts are a common hidden cause of slow LCP and layout shift. The browser has to find, download and apply the font before text looks right. A font that swaps in late can move the whole layout.

  • Use fewer fonts and weights. Every family, weight and italic is a separate file. Two families with two or three weights each is enough for most sites.
  • Self-host your fonts. Loading from your own domain avoids an extra connection to another server. Block themes can do this through the Font Library added in WordPress 6.5. Many performance plugins can also host Google Fonts locally.
  • Use WOFF2. It’s the most compressed font format, and all modern browsers support it.
  • Set font-display: swap. This shows text in a fallback font straight away, instead of hiding it while the web font loads.
  • Preload only the main font file. Preloading the one font used at the top of the page helps. Preloading six files competes with your LCP image for bandwidth.

Remove Unused Plugins and Scripts

The number of plugins matters less than what each one loads. One badly built plugin can slow a site more than twenty well-built ones. What you want to find is code loading on pages that don’t need it.

Audit What’s Actually Loading

  1. List every active plugin and write down what it’s for. Deactivate and delete anything you can’t justify.
  2. Use the Query Monitor plugin on staging. It shows slow database queries, PHP errors and which scripts and styles each page loads.
  3. Open Chrome DevTools, go to the Network tab and reload the page. Sort by size and look for large files and requests to other domains.
  4. Check the Coverage tab in DevTools. It shows how much of each CSS and JavaScript file goes unused on that page.

Common Culprits

  • Contact form plugins loading their scripts and styles on every page, not just the contact page.
  • Page builders adding large CSS and JavaScript bundles to pages that were built without them.
  • Social sharing, chat widgets, popups and review widgets that pull in outside code.
  • Several analytics or tracking tags, often left behind from old campaigns.
  • Two plugins doing the same job, such as two SEO plugins.

Asset manager plugins can unload a plugin’s files on pages where it isn’t used. They work well, but they’re a sharp tool. Unload the wrong file and a form or menu stops working. Change one plugin at a time and test the affected pages.

Defer JavaScript Safely

JavaScript that loads in the <head> without defer or async blocks the page from showing. Large scripts that run on the main thread also hurt INP, because the browser can’t respond to a tap while it’s busy.

Defer Versus Delay

  • Defer downloads the script at the same time as the page and runs it after the HTML is read, in order. It’s the safer option. WordPress 6.3 added built-in support for defer and async loading when scripts are registered. So well-built plugins and themes can use it without hacks.
  • Delay (offered by many caching plugins) holds back scripts until the user scrolls, taps or moves the mouse. It can raise lab scores a lot. It’s also the setting most likely to break things. My rule is simple: defer first, and only try delay if you have time to test properly.

What Usually Breaks

  • jQuery dependencies. If jQuery is deferred but an inline script on the page calls it straight away, you’ll see a jQuery is not defined error and the feature fails. Exclude jQuery from defer if you see this.
  • Menus, sliders and accordions that don’t work until the user interacts. On mobile, this feels broken.
  • Analytics and consent tools. Delaying tracking scripts can mean visits from people who leave quickly are never recorded. Delaying a consent banner can cause compliance problems.

After you change script loading, compare your analytics and conversion tracking for the next week. If you’ve set up GA4 key events, a sudden drop in recorded forms or purchases is your cue to check what you delayed. And if your theme builds content with JavaScript, my guide to JavaScript SEO explains how to make sure deferring doesn’t hide content from Google.

Clean Up the Database

Over time, the WordPress database collects post revisions, auto-drafts, spam and trashed comments, expired transients (temporary stored data) and leftover tables from deleted plugins. A bloated database mainly slows uncached requests. That means the admin area, searches, carts and logged-in users.

  • Limit revisions. Add define( 'WP_POST_REVISIONS', 10 ); to wp-config.php. This keeps a sensible number per post instead of every save forever.
  • Clear the junk. Tools such as WP-Optimize, or the database options in many caching plugins, can remove spam comments, trash and expired transients.
  • Check autoloaded options. Some plugins store large amounts of data that WordPress loads on every single request. Site Health can flag this. Deleted plugins often leave these options behind.
  • Remove orphaned tables carefully. Only delete a table when you’re sure which plugin created it and that the plugin is gone for good.

Always take a full database backup before a cleanup. Database changes can’t be undone with a click. A cleanup tool that removes the wrong rows can take settings or orders with it.

Add a CDN

A content delivery network (CDN) stores copies of your files on servers around the world. Visitors then download them from somewhere nearby. The further your audience is from your server, the more a CDN helps.

  • Static file CDN: serves images, CSS, JavaScript and fonts from edge servers. Most caching plugins can rewrite file URLs for this.
  • Full-page edge caching: some CDNs can also cache the HTML itself, which cuts TTFB for distant visitors. This needs careful rules for logged-in users, carts and checkouts.
  • Image CDN: resizes and converts images to WebP or AVIF as they’re requested. It can replace an image plugin.

If your audience and server are in the same country, a CDN will help less than caching and image work. Do those first.

WordPress has also added browser-level speed features of its own. Since version 6.8, core uses the Speculation Rules API to prefetch pages when a logged-out visitor starts clicking a link. This can make the next page feel faster. Check that your caching plugin doesn’t add a clashing prefetch feature on top.

How to Avoid Breaking Your Site

Performance changes touch caching, scripts and the database. These are the parts of WordPress most likely to fail in strange ways. A careful process prevents most of it.

Use Staging

A staging site is a private copy of your live site. Most managed hosts offer one-click staging. Make and test every risky change there: PHP upgrades, script deferral, asset unloading and database cleanup.

Change One Thing at a Time

Say you turn on minification, CSS combining, defer, delay and lazy loading together, and something breaks. You won’t know which setting caused it. Change one setting, clear every cache layer, test, and record the result in your baseline spreadsheet. This is the habit I’d ask every site owner to keep.

Test the Pages That Earn Money

Your checklist after each change should include:

  • Home page, a blog post and a key landing page on mobile and desktop.
  • Main navigation and mobile menu.
  • Contact and lead forms, including the confirmation message.
  • Add to cart, checkout and payment on a test order.
  • Logging in and the admin dashboard.
  • The browser console for new JavaScript errors.

Keep a Way Back

Take a backup before each round of work and know how to restore it. If a change breaks the front end and you can’t reach the dashboard, there’s a simple fix. Rename the plugin’s folder over SFTP or in your host’s file manager, and it gets deactivated.

Be careful about chasing a perfect 100 lab score. Aggressive settings, such as removing all unused CSS or delaying every script, can push the score up while breaking layouts or tracking. Passing Core Web Vitals in the field for real visitors is the goal. I’d always take a working site with a lower score over a broken one that scores 100.

Conclusion

WordPress speed optimization isn’t about one magic plugin. Measure real-user data. Fix the server and caching. Then trim images, fonts and scripts one change at a time on a staging site, and test the pages that matter to your business.

Your next step: open the Core Web Vitals report in Search Console today. Note which metric is failing on which template. Then read my guide to Core Web Vitals in 2026 to match each failing metric to the WordPress speed optimization fixes above.

Frequently Asked Questions

How do I check my WordPress site speed?

Run your key pages through PageSpeed Insights and open the Core Web Vitals report in Search Console. Focus on the field data from real Chrome users. It shows LCP, INP and CLS over the last 28 days. Use the lab diagnostics to find what to fix.

What is the best caching plugin for WordPress?

It depends on your server. LiteSpeed Cache is a strong free choice, but its page caching only works on LiteSpeed or OpenLiteSpeed servers. On other hosts, use your host's built-in caching or a plugin such as WP Rocket, W3 Total Cache or WP Super Cache. Use only one page cache.

Do too many plugins slow down WordPress?

Not by number alone. What matters is what each plugin loads and how well it runs. One heavy plugin that adds scripts to every page can do more harm than many small, well-built ones. So check what each plugin loads instead of just counting them.

Does upgrading PHP make WordPress faster?

Newer PHP versions are generally faster and still get security fixes. WordPress recommends PHP 8.3. Test the upgrade on a staging site first, because older plugins or themes may not work with it and can cause fatal errors.

Why did my site break after I enabled defer or delay JavaScript?

Usually a script that needs jQuery ran before jQuery loaded. Or menus and sliders now wait for the user to interact. Exclude jQuery and the affected scripts from defer or delay, clear all caches and test again. Change one setting at a time so you can find the cause.

How long does it take for Core Web Vitals to update after speeding up WordPress?

Field data in PageSpeed Insights and Search Console is based on a rolling 28-day window. So it can take up to four weeks to fully show a fix. Lab tests show the effect straight away, so use them to confirm the change worked.

Do I need a CDN for a WordPress site?

A CDN helps most when your visitors are far from your server or spread across countries. If your audience is local and your server is nearby, caching and image work will usually make a bigger difference. Do those first.

Is a 100 PageSpeed score necessary for SEO?

No. The lab score is a diagnostic tool, not a ranking signal by itself. Aim to pass Core Web Vitals in the field for real visitors. Avoid aggressive settings that raise the score but break layouts, forms or tracking.

Get the Next Guide in Your Inbox

Google updates, AI search changes and practical SEO guides. We email you when a new article is published, nothing else.

One email when we publish something new. No spam, unsubscribe in one click. Privacy

Written by Lovepreet Singh Digital Marketing Manager @ Softtrix
  • 12+ years in SEO
  • 331 articles
  • Punjab, India

Lovepreet Singh has been working in SEO for the last 12 years. He started as an SEO analyst, checking rankings and fixing on-page issues, and today he is Digital Marketing Manager at Softtrix Tech Solutions, looking after search and growth for client websites, from online stores to local service businesses.

  • AI Search & AEO
  • Technical SEO
  • Local SEO
  • Google Business Profile

Keep Reading