How to Diagnose Slow WordPress Performance Using Real Tools and Metrics
Why guessing about WordPress speed usually fails
Symptoms vs causes: what “slow” really means
Most WordPress sites are labelled “slow” based on feelings, not facts. Someone says the site is “laggy” or “takes ages”, but that could mean several different things:
- The page is blank for a second or two before anything appears.
- The first part of the page appears quickly, but images and fonts creep in afterwards.
- The page looks loaded, but clicking buttons and filters is sluggish.
- The site is fine most of the time, but falls over during campaigns or busy periods.
Each symptom points to a different set of causes. For example:
- Blank screen before anything appears often relates to server response time (TTFB) or slow PHP/database work.
- Images and fonts creeping in tends to be front end weight, render blocking scripts or unoptimised media.
- Sluggish interactions usually mean JavaScript issues, heavy page builders, or third party widgets.
- Only slow under load usually hints at hosting resources, lack of caching, or abusive bot traffic.
Without measurements, it is very easy to chase the wrong thing. Many site owners spend hours deleting images or tweaking plugins when the real issue is an overloaded server or a slow external script.
Why you need numbers, not opinions
To diagnose performance properly, you need numbers and repeatable tests, not guesses. Useful metrics include:
- Time To First Byte (TTFB): how long your server takes to start responding.
- Largest Contentful Paint (LCP): when the main content or hero element is visible.
- Interaction to Next Paint (INP): how quickly the page responds to clicks and taps.
- Cumulative Layout Shift (CLS): how much the layout jumps around as it loads.
- Total page weight: the total size of all files needed to load a page.
With these, you can answer concrete questions, such as:
- “Is slow for everyone, or only in certain locations?”
- “Is the delay happening in the browser, or before the first byte from the server?”
- “Which specific files or plugins are responsible?”
This approach also makes conversations with developers and hosting providers easier. It is far more effective to say “LCP on our product pages is 5.5 seconds in the UK, and TTFB is over 1 second” than “the site feels slow”.
One-time tests vs ongoing performance monitoring
One-off speed tests are a good start, but they only show a snapshot. In reality, WordPress performance changes over time as you:
- Add plugins, tracking scripts or page builder features.
- Upload more images or large products.
- Receive more traffic or get hit by bots and scrapers.
- Run WooCommerce sales or other campaigns.
Without monitoring, issues often appear only at the worst possible moment: checkout pages failing during a promotion or an important newsletter push.
This is where uptime monitoring, regular Core Web Vitals checks and proper hosting metrics come in. Many businesses pair front end tools like PageSpeed Insights with hosting that provides clear charts for CPU, RAM and PHP workers. Some providers add extra layers, such as the G7 Acceleration Network for caching and optimisation, to keep performance steadier across traffic spikes.
Step 1: Define the problem clearly before you touch anything
Which users are complaining and where are they located?
Before changing settings or installing plugins, gather simple facts:
- Who is reporting slowness: staff, customers, or both?
- Where are they located: UK only, Europe, US, worldwide?
- Which devices and browsers are they using?
Patterns matter. If UK users on desktop find the site fine, but US users on mobile struggle, you may be looking at network distance and mobile performance issues, not a global server problem.
Ask for screenshots with visible timestamps or short screen recordings. These help you match user frustration to specific stages of the load process.
Pages, actions and times of day that feel slow
Next, narrow down where slowness occurs:
- Specific URLs: homepage, category pages, product pages, checkout, account areas, blog posts.
- Specific actions: adding to cart, filtering, login, search, submitting forms.
- Time patterns: only mornings, only evenings, only when email campaigns go out.
Write down a short list such as:
- “/shop/ category pages slow from 7 pm to 10 pm, mainly for UK users.”
- “Checkout step 2 (shipping) takes 5+ seconds to load.”
- “WordPress admin product edit screens are slow all day.”
You will test these specific pages and actions later, rather than relying on generic home page tests.
Separating front end slowness from server-side slowness
Try to classify complaints into two groups:
- Front end issues: the page appears, but content jumps around, images are slow, fonts flicker, or clicks and scrolls feel laggy.
- Server-side issues: there is a long pause before anything shows, or you frequently see server errors and timeouts.
If staff say the WordPress admin is slow, but public pages are fine, that points more strongly to PHP/database performance, plugin overhead or underpowered hosting. If both admin and public pages are slow at the same times, server capacity or bot traffic are strong suspects.
Step 2: Measure page speed from the user’s point of view
Using PageSpeed Insights and Core Web Vitals
Start with PageSpeed Insights for a user-focused view of performance. Enter a key URL and review:
- Field data (Core Web Vitals): based on real users, if available for your site.
- Lab data: a synthetic test using Lighthouse, showing metrics such as LCP, INP and CLS.
For busy sites, field data is more important than lab scores, because it reflects actual visitors on varied devices and connections.
For WordPress and WooCommerce owners, focus on:
- LCP: target under 2.5 seconds for key templates such as home, category and product pages.
- INP: aim for under 200 ms so that clicks and taps feel instant.
- CLS: keep under 0.1 to avoid annoying layout shifts.
Run tests on:
- Your home page.
- A typical category or archive page.
- A representative product page or service page.
- Checkout or important forms (where allowed).
Note down the metrics and issues flagged under “Opportunities” and “Diagnostics”, but do not rush to apply every suggestion. Some trade offs, such as keeping a necessary marketing script, may be worth a small performance cost.
Using GTmetrix or WebPageTest for waterfall and filmstrip views
PageSpeed Insights is good for Core Web Vitals, but it hides some of the detail. Tools like GTmetrix and WebPageTest give you waterfalls and filmstrip views that show exactly what loads, in what order, and how long each request takes.
Key things to look for in a waterfall:
- DNS and TLS time: long waits here suggest slow DNS or SSL negotiation, sometimes on third party domains.
- TTFB: if the first HTML document has a long wait before data starts to arrive, that is server-side work (PHP, database, caching) being slow.
- Render blocking scripts and styles: CSS and JS files that delay the first paint of your content.
- Large images: long bars for hero banners and sliders, often several MB in size.
- Third party scripts: chat widgets, analytics, tag managers, ads and social feeds that extend total load time.
The filmstrip or video capture shows what a user actually sees second by second. Compare this with the waterfall to understand which requests are making the page feel slow to humans.
Key thresholds for a “fast enough” WordPress site
Perfect scores are rarely necessary. For most UK businesses, realistic targets are:
- TTFB: under 500 ms from your main audience region, ideally closer to 200–300 ms for cached pages.
- LCP: under 2.5 seconds on mobile for your important templates.
- INP: under 200 ms for typical interactions.
- Total page weight: under 2 MB for key pages; under 3 MB for image-heavy pages, with images properly optimised.
If your metrics are significantly above these thresholds, the rest of this guide will help you work out whether the bottleneck is your hosting, WordPress configuration, plugins, media, or third party code.
Step 3: Check Time To First Byte (TTFB) and server response
What TTFB actually measures
TTFB is the time from requesting a page until the first byte of the response arrives. It includes:
- Network latency between the user and the server.
- Any reverse proxy or edge cache processing.
- PHP execution and WordPress bootstrapping.
- Database queries and cache lookups.
- Any outbound HTTP calls WordPress makes before generating the page.
For WordPress, high TTFB usually means:
- The page is not cached and WordPress is doing a lot of work.
- Your PHP workers are busy or limited.
- Database queries are slow or inefficient.
- The server itself is overloaded or underpowered.
This is why improving TTFB is often about better caching and server tuning rather than front end tweaks. Resources such as G7Cloud’s guide on how to tune PHP-FPM for performance can help when diagnostics point squarely at PHP limits.
How to test TTFB with browser dev tools and external testers
Use your own browser first:
- Open Chrome or Firefox.
- Right click the page and choose “Inspect” or “Inspect Element”.
- Open the “Network” tab and refresh the page.
- Click the first request (the HTML document) and look at “Timing”.
You will see a “Waiting” or “TTFB” value. Repeat for:
- A cached page (visit it twice in a row).
- A logged out view and a logged in view, where relevant.
- A product or category page under load if you can reproduce busy times.
Then confirm with an external tester like WebPageTest or GTmetrix from a region that matches your users. This helps separate your local connection from the server’s real performance.
Interpreting TTFB results: network vs hosting vs WordPress
Use these rough guidelines:
- TTFB under 300 ms: good for cached pages. If the rest of the page is slow, the issue is likely front end weight, images or scripts.
- TTFB 300–800 ms: acceptable for many dynamic pages (e.g. WooCommerce checkout), but you may want to review caching and database performance.
- TTFB over 800 ms: often signals a problem, especially if it is consistent for simple pages.
- TTFB spiking to several seconds under load: commonly means your hosting resources are maxing out, your cache is not catching enough traffic, or PHP is blocked by bad bots or background tasks.
If TTFB is fine from one region but poor from another, look at CDN or edge caching options. If it is poor everywhere, start with server resources, caching configuration and heavy plugins or themes.
Articles like G7Cloud’s guide to setting up Nginx reverse proxy cache explain how server-level caching significantly reduces TTFB by serving responses directly from cache instead of running WordPress for every request.
How edge caching and reverse proxy caches help
Reverse proxy caches such as Nginx or Varnish sit in front of PHP and the database. They store fully rendered HTML responses and serve them instantly when possible. This gives you:
- Very low TTFB for cached pages.
- More stable performance under traffic spikes.
- Lower load on PHP and MySQL, leaving more capacity for logged-in users and checkouts.
Solutions like the G7 Acceleration Network for caching and optimisation layer this caching closer to your visitors, including for WooCommerce where appropriate rules are used, so that static and semi-static pages are served from edge locations while dynamic actions still hit WordPress as needed.
Step 4: Use real browser developer tools on your slow pages
Network tab basics: size, timing and blocking
Browser developer tools are your best free diagnostics panel. On your slow page:
- Open the browser’s “Network” tab.
- Enable “Disable cache” for clean tests.
- Reload and watch the requests populate.
Key things to look at:
- Size: sort by “Size” to find the biggest files. Large hero images, sliders and background videos often stand out immediately.
- Timing: sort by “Time” to see which requests take longest. External scripts (fonts, chat, analytics) often appear here.
- Waterfall: identify long grey “blocking” bars and chains of dependent requests.
If one or two requests dominate the timeline, work out whether you control them (e.g. your own images, CSS, JS) or whether they are third party. Anything you own can usually be optimised. Third party scripts may need to be deferred, offloaded or removed if they are not worth the cost.
Performance and Coverage panels for non-technical owners
Modern browsers include visual tools that help even if you are not a developer:
- Performance: record a page load and you will see major phases (loading, scripting, rendering). Heavy JavaScript shows as long scripting phases.
- Coverage (Chrome): shows how much of your CSS and JS files are actually used on that page. Huge unused sections point to frameworks and page builders loading global assets everywhere.
If you see that 80 percent of your CSS or JS is unused, that indicates a lot of potential for optimisation, such as conditional loading, modular themes or reducing dependencies on heavy page builder features.
Identifying third-party bottlenecks (fonts, chat widgets, analytics, ads)
Third party scripts are a common source of “mystery” slowness. In the Network tab, filter by domain or scan for requests that go to:
- Font providers (e.g. fonts.googleapis.com).
- Analytics and tag managers.
- Chat widgets and support tools.
- Advertising networks and social embeds.
Ask simple questions:
- Do we still need this script?
- Does it need to load before the user can see or interact with content?
- Is there a lighter alternative?
Sometimes, removing one rarely used widget or marketing tag does more for user experience than weeks of minor tuning elsewhere.
Step 5: Inspect your WordPress setup with proper diagnostics
Using Query Monitor to see what WordPress is actually doing
Query Monitor is one of the most useful plugins for diagnosing WordPress performance. Install it temporarily on a staging site or during a quiet window and:
- Load your slow pages while logged in as an administrator.
- Open the Query Monitor panel from the admin bar.
Look for:
- Page generation time: total time spent in PHP.
- Database queries: number of queries and total query time.
- Slow queries: individual queries that take a long time, often flagged by plugin name.
- HTTP API calls: external requests WordPress is making during page load.
- Hooks and actions: which plugins are adding heavy processing.
This helps you move from “WordPress is slow” to “This specific plugin adds 0.5 seconds to every product page” or “This external API call delays checkout by 2 seconds”.
Health Check and Site Health: quick wins and red flags
WordPress includes a “Site Health” tool under Tools → Site Health. It is not a full diagnostic suite, but it does highlight common issues such as:
- Outdated PHP versions.
- Missing extensions.
- Background tasks and scheduled events failing.
- REST API and loopback request problems.
The Health Check plugin adds extra features, including troubleshooting mode that lets you disable themes and plugins just for your user session. This is very helpful for testing impact without breaking the site for visitors.
If Site Health flags serious issues and you are not comfortable tackling them alone, this is a good time to bring in your developer or hosting support. G7Cloud’s article on the most common WordPress issues is a useful companion list while you run through these checks.
Baseline checks: PHP version, database version and object caching
Some fundamental settings have a large effect on performance:
- PHP version: PHP 8.x is significantly faster and more efficient than older versions. Many hosts provide a selector in their control panel.
- Database version: recent MySQL or MariaDB versions tend to handle queries more efficiently, especially under load.
- Object caching: Redis or Memcached can store query results and options in memory, reducing repeated work for logged-in users, carts and checkouts.
If your host does not expose these clearly, ask support what you are running and whether upgrades or object caching can be enabled. Managed platforms with strong web hosting performance features like PHP and database tuning often handle these baselines for you.
Step 6: Measure the impact of plugins, themes and page builders
How to safely test plugin impact without breaking your site
Plugins are essential, but they also add code paths, database queries and assets. To measure their impact safely:
- Use a staging site: many hosts provide easy staging; if not, create a clone on a subdomain.
- Plan a maintenance window: if you must test on production, pick a quiet time and warn stakeholders.
- Change one thing at a time: disable one plugin, clear caches, then retest metrics for a specific page.
Take before-and-after measurements for TTFB, total load time and page size. Query Monitor will often show which plugins add significant processing. On the front end, watch the Network tab for new scripts and styles introduced by each plugin.
Spotting heavy page builders and add-ons in your metrics
Page builders and visual editors are useful for content teams, but they can:
- Generate complex HTML structures.
- Load large CSS and JS bundles on every page.
- Require multiple add-on plugins that each add their own assets.
You can spot this in several ways:
- Waterfalls showing many CSS and JS files with builder-related names.
- Coverage reports showing a high percentage of unused CSS/JS on simple pages.
- Query Monitor indicating extra template processing time when builder layouts are used.
If your simple informational pages are as heavy as your shop pages, your theme or builder stack is likely doing more than it should.
When to replace vs tune a theme or plugin
Not every slow plugin or theme must be removed. Consider:
- Is the functionality critical? If not, disabling or replacing it is straightforward.
- Is there a lighter alternative? For example, a slim contact form plugin instead of a multi-purpose marketing suite.
- Can it be tuned? Many plugins let you disable features you do not use, reduce asset loading or change caching behaviour.
If your main theme or builder is the bottleneck and you rely heavily on it, you may need a staged redesign rather than a quick fix. Use your metrics to justify that investment: show how much time or capacity you could save by moving to a leaner setup.
Step 7: Check hosting resources, server load and bad bot traffic
Using your hosting control panel for CPU, RAM and I/O usage
Even a well optimised WordPress site will struggle if the underlying server is constantly at its limits. In your hosting control panel, look for graphs or stats on:
- CPU usage and processes.
- RAM and swap usage.
- Disk I/O throughput.
- Number of entry processes or PHP workers.
Red flags include:
- CPU or RAM pinned near 100 percent for long periods.
- Frequent spikes that line up with user complaints.
- Entry process or worker limits constantly reached, leading to queued or rejected requests.
If your site regularly hits these ceilings, you either need better caching and efficiency or more consistent resources. Options such as virtual dedicated servers for more consistent resources can help when shared environments are not coping.
How abusive bots can distort performance metrics
Automated traffic from scrapers, credential stuffing tools and low-quality crawlers can create a lot of PHP and database load without contributing any revenue. Symptoms include:
- High load and slow responses at odd hours when real traffic is low.
- Unusual spikes in access logs to
/wp-login.phpor search endpoints. - Metrics that look fine in synthetic tests but poor for real users during peaks.
These bots can cause TTFB to spike and make resource usage charts noisy, which makes it harder to see the impact of legitimate visitors and your optimisation work.
How network-level bot filtering keeps performance consistent
Server-level or application-level blocking only helps once the request has reached PHP, which is often too late. Network-level filters act earlier. For example, G7 Acceleration Network for caching and optimisation includes G7Cloud’s bot protection that filters abusive and non-human traffic before it hits PHP or the database, which cuts wasted load and keeps response times more consistent during busy periods.
If your diagnostics show high load despite moderate legitimate traffic, improving bot filtering can stabilise the platform before you start upgrading hardware.
Step 8: Images, page weight and Core Web Vitals
Checking page weight and largest elements in your tests
Media is often the single biggest contributor to slow pages. From your earlier tools:
- Check total page weight in GTmetrix or WebPageTest.
- Identify the element corresponding to LCP in PageSpeed Insights.
Common patterns include:
- A hero section or banner image that is several MB in size.
- Sliders loading multiple large images before the page looks finished.
- Background images scaled down by CSS instead of being correctly sized.
If LCP is always a large hero image, you will not get meaningful improvements without addressing image size and loading strategy.
How to verify if images are already optimised
To check image optimisation:
- In the Network tab, filter by “Img” and inspect key images.
- Check file size: a typical hero banner should usually be well under 500 KB.
- Check format: modern sites should rely on WebP or AVIF where possible.
- Check dimensions: right click → “Open in new tab” to see actual pixel size compared with its display size.
PageSpeed Insights also points out unoptimised images under “Serve images in next-gen formats” and “Properly size images”. Use these as a checklist rather than blindly installing every recommended plugin.
Automating image optimisation with modern formats
Manual image compression and plugin-based optimisation can become a chore, especially for busy shops or media-heavy sites. This is where built-in platform tools help. For example, the G7 Acceleration Network for caching and optimisation automatically converts images to modern AVIF and WebP formats on the fly, typically cutting file sizes by more than 60 percent while keeping quality good enough for real commercial sites, and it does this free for every site on G7Cloud without needing extra plugins or WordPress changes.
Regardless of tooling, your goal is simple: keep images as small as practical while preserving the clarity and professionalism your brand needs.
Step 9: Create a simple performance diagnosis report
Summarising what your metrics actually say
Once you have gathered all your data, create a short report that covers:
- Scope: which pages and user journeys you tested.
- Key metrics: TTFB, LCP, INP, CLS, page weight for each template.
- Findings: main causes such as heavy images, slow TTFB, overloaded server, specific plugins, third party scripts.
- Evidence: screenshots or links to PageSpeed Insights, waterfalls, Query Monitor outputs.
Keep the language plain. For example: “Category pages: TTFB fine at 250 ms, but LCP 4.5 seconds due to 3 MB hero image and multiple unoptimised thumbnails.”
Prioritising fixes: what to do now, next and later
Not every issue needs fixing at once. A simple way to prioritise:
- Now: high impact, low effort changes such as compressing a few oversize images, removing unused plugins, or disabling a slow third party widget.
- Next: medium complexity tasks such as configuring caching, enabling object cache, upgrading PHP, or tuning a key plugin.
- Later: structural work like replatforming themes, redesigning templates, or moving to a different hosting architecture.
Use your metrics to estimate gains where possible: “Optimising these five images should reduce LCP on product pages by about 1 second” or “Enabling reverse proxy caching should lower TTFB from 900 ms to 200–300 ms for most visitors”.
When to involve your host or a specialist
It is worth escalating when:
- Your measurements show consistently poor TTFB despite good caching and lean plugins.
- CPU, RAM or I/O are hitting limits even at modest traffic.
- You see repeated 5xx errors, slow database queries or timeouts.
- Security or bot issues are clear but complicated to fix alone.
Share your report with your host or developer, including specific URLs, test results and times of day. This makes support more efficient and avoids long back-and-forth exchanges based on guesswork.
Recommended tools and further learning
Free tools checklist for ongoing monitoring
For day to day monitoring, a small toolkit goes a long way:
- PageSpeed Insights: regular Core Web Vitals checks for key templates.
- WebPageTest or GTmetrix: deeper waterfall analysis and filmstrip views after changes.
- Browser dev tools: Network, Performance and Coverage panels for hands-on diagnosis.
- Query Monitor: on-demand insight into plugins, queries and PHP performance on staging.
- Uptime monitoring: external services to alert you when the site becomes unavailable or slow.
Use them periodically, not just when people complain. A quick monthly check on your most important pages will catch regressions before they affect revenue.
How managed WordPress hosting can simplify diagnosis
If you are spending more time debugging performance than running your business, it may be worth consolidating responsibilities. Good managed WordPress hosting with performance monitoring provides tuned PHP, database configurations, integrated caching and clear metrics, so you do not have to piece everything together yourself.
Platforms that include features like the G7 Acceleration Network for caching and optimisation offload much of the technical work around edge caching, bad bot filtering, and automatic image conversion to AVIF/WebP, which gives you a more predictable baseline before you start tuning themes and plugins.
Where to learn more about WordPress performance tuning
If you want to deepen your understanding, the following are useful next steps:
- WordPress.org documentation on performance and caching.
- Hosting knowledge base articles on PHP-FPM tuning, database optimisation and reverse proxy caches.
- G7Cloud’s technical guides, such as the PHP-FPM and Nginx reverse proxy cache articles linked earlier, for more advanced server-level improvements.
If your diagnostics suggest that your current environment is holding you back, consider testing your site on managed WordPress hosting with performance monitoring or exploring the G7 Acceleration Network for caching and optimisation. Even a short trial can reveal how much of your “slow WordPress” problem is configuration versus infrastructure, and leave you with a clearer, data-backed plan.