To speed up a WordPress site, work in order of impact: measure first, remove or delay third-party scripts, turn on full page caching, strip unused CSS, then fix images and fonts. Third-party scripts are usually the heaviest thing on the page, and a single widget can outweigh everything else you load.
Speed work on WordPress is a regular part of our job, including a mobile performance pass on a law firm's site with hundreds of posts. On one site we expected the usual suspects: big images, a heavy theme, too many plugins. The heaviest thing on the page turned out to be none of those. It was a form spam protection widget.
That is the pattern we keep finding. Owners compress images for a week and gain almost nothing, because images were never the problem. The order you do the work in matters more than how much work you do.
So this checklist is sorted by impact, not by ease.
What should you fix first to speed up WordPress?
Fix the heaviest thing first, and find out what it is by measuring before you change anything. On most WordPress sites the order of impact is third-party scripts, then page caching, then unused CSS, then images and fonts. Hosting comes last unless the server is slow to respond at all.
- Measure. Run the page through a testing tool on a mobile setting and write down the numbers. Test a real inner page, not only the homepage.
- Audit third-party scripts. List every script that comes from another company's domain: chat, analytics, ad pixels, spam protection, embedded maps and video. Remove what nobody uses.
- Delay or confine what is left. Load a script only on the pages that need it, or only after the visitor interacts.
- Turn on full page caching. Serve a saved copy of each page instead of rebuilding it per visit.
- Remove unused CSS. Ship only the styles the page uses.
- Fix images. Correct dimensions, modern formats, lazy loading below the first screen, and no lazy loading on the main image at the top.
- Trim fonts. Fewer families and weights, hosted on your own domain.
- Look at the server. If the first byte is slow even with caching, the hosting is the limit.
- Measure again. Compare against step one, and check the site still works.
Why are third-party scripts the biggest speed problem?
Third-party scripts are the biggest speed problem because each one downloads, parses, and runs code on the visitor's phone, often pulling in more files of its own. You do not control their size, and they compete with your page for the same processor. One widget can weigh more than your whole theme.
The spam protection widget we found is a good example. A widget like that is needed where the form is. If it loads on every page, every visitor pays for it, including the ones who never open the form.
There are three fixes, in order of preference. Remove the script if nobody can say what it is for. Confine it to the page that needs it. Or delay it until the visitor scrolls, taps, or focuses a form field, which is when a spam check or a chat window becomes relevant anyway.
Sometimes the better fix is to replace the service. We built our own website chat to take the place of a third-party chat widget and its monthly bill.
What does caching do for a WordPress site?
Caching saves a finished copy of each page so the server can hand it over without running WordPress, the theme, and every plugin again. For a visitor who is not logged in, a cached page is close to a static file. It is the largest single improvement to server response time.
There are layers. Page caching stores the finished HTML. Browser caching tells a returning visitor's browser to reuse files it already has. A CDN keeps copies close to the visitor, which we explain in what a CDN is and whether you need one.
The trade-off is staleness. After you edit a page, the cache has to be cleared or visitors see the old version. Good caching tools clear the right pages automatically. When a change "did not save," a stale cache is the first thing to check.
How do you deal with unused CSS and oversized images?
Unused CSS and oversized images are both cases of sending more than the page needs. A theme ships styles for every layout it supports, and most pages use a small part of them. Images get uploaded at camera size and displayed at a fraction of that. Trim both to what is shown.
For CSS, an optimization plugin can work out which rules a page uses and drop the rest. Test afterward. Styles that only apply after an interaction, such as an open menu or a dropdown, can be mistaken for unused and stripped. Those need to be added to the tool's keep list.
For images, the checklist is short:
- Resize to the largest size the layout will display.
- Serve a modern format such as WebP or AVIF.
- Set width and height so the page does not jump as images arrive.
- Lazy load images below the first screen, and never the main image at the top.
Can two speed plugins conflict with each other?
Yes. Two optimization tools can fight each other when both try to do the same job, such as delaying JavaScript or rewriting how scripts load. Each assumes it is the only one in charge. The result is scripts that run in the wrong order, features that break, or a setting that has no effect.
We have watched it happen. A common setup has a caching plugin inside WordPress and a CDN in front of the server, and both offer script optimization. With both switched on, one can undo the other.
The rule we follow: one tool per job. Decide which layer handles page caching, which handles script delay, and which handles images, then turn the overlapping feature off everywhere else. It is the same overlap problem we describe in how many plugins is too many.
How do you know the speed work helped?
You know the work helped when the measurements you took before have improved on the same pages, on a mobile test, and the site still behaves correctly. Lab scores change immediately. Data from real visitors, which is what Google reports, takes weeks to catch up.
The numbers worth watching are the Core Web Vitals, documented at web.dev. We explain them without jargon in what makes a website fast.
A score is not the goal. A page that loads quickly and has a broken menu is worse than a slower page that works. Click through the site after every change.
Frequently asked questions
Will a faster host fix a slow WordPress site?
Only if the server is the bottleneck. Better hosting improves how quickly the first byte arrives. It does nothing about a heavy script running on the visitor's phone. Measure first: if the server responds quickly and the page still feels slow, the problem is in what the page loads.
Do I need a paid caching plugin?
Not necessarily. Many hosts include page caching at the server level, and free plugins cover the basics. Paid tools mostly add convenience: unused CSS removal, script delay, and sensible defaults in one place. Whatever you choose, use one caching tool, not two.
Why is my site fast on desktop and slow on mobile?
Phones have slower processors and often slower connections, and mobile tests simulate both. JavaScript that a laptop runs without effort can stall a mid-range phone. That is why script weight shows up on mobile first, and why you should test on a mobile setting.
How fast should a WordPress page load?
Aim to pass the Core Web Vitals on mobile for real visitors, since that is the standard search engines publish. Beyond that, compare yourself with the sites you compete against in search. Being clearly quicker than them matters more than a perfect score.
Does the WordPress theme affect speed?
Yes. A theme that loads large style and script files on every page sets a floor that plugins cannot remove.
If you would like a second opinion on what is slowing your site down, send us the address and we will tell you what we would fix first.