WordPress speed optimization cost: what the job is, what it should include and what moves the price
What speed optimization costs depends on what is slow. Settings such as a page cache, image sizes and the PHP version are a small job. A heavy theme, slow queries and too many scripts need development. Hosting that cannot serve the site is not a speed job at all.
- By
- WP Ministry
- Published
In short
- Ask what is slow before you ask what it costs. A quote given before the pages are measured is a guess.
- Settings are the small job: a page cache, image sizes, the PHP version. A heavy theme, slow queries and scripts are development. Weak hosting is neither.
- A complete job has six parts: measurements before, the causes in writing, the changes, measurements after, a list of what changed and how to undo it, and what was left and why.
- Agree the pages, the tool, mobile or desktop and the number of runs before the work starts. One test run proves little, so use the middle result of five.
- Nobody can promise a score, a ranking or a result on real visitors' phones within days. Field data covers the previous 28 days.
- Do the settings yourself first if you have the time. Pay for what is still slow afterward.
What WordPress speed optimization costs depends on what is making the site slow. Some causes are settings: a page cache, images at the right size, a current PHP version. Some need development: a heavy theme or page builder, slow database queries, too many scripts. One is not a speed job at all: hosting that cannot serve the site. A quote given before anyone has measured your pages is a guess.
This page gives no going rate, names no company and ranks nobody. It sets out what the job is, how it is sold, what a complete one includes, and how to tell afterward whether you got what you paid for.
What the job is, cause by cause
"Speed optimization" is a label for removing whatever is slow. The cause decides the size of the job.
| What is slow | What fixes it | The kind of work |
|---|---|---|
| Every page is built from scratch for every visitor | A page cache, which saves the finished page and serves that copy | Settings. WordPress's documentation calls caching the fastest way to improve performance. |
| Images are larger than the space they fill | Resizing and compressing them | Settings and a plugin, then a look at the pages. |
| The PHP version is old | A newer version, chosen in the hosting control panel | Settings, after a backup and a round of updates. WordPress.org says a site may be faster because PHP becomes more efficient with each new version. |
| The theme or page builder is heavy | Lighter templates, or a different theme | Development. WordPress's documentation says the theme has a huge impact on a site's performance. |
| Database queries are slow | Changing or replacing whatever runs them | Development. A tool such as Query Monitor lists each query with the plugin, theme or function responsible. |
| Too many scripts load | Removing some, and loading the rest later or only where they are used | A decision that is yours, then development. |
| The hosting cannot serve the site | A different plan, or a different host | Not a speed job. Work on the site does not change what the server can do. |
Quotes run from the price of a plugin to the price of a rebuild because they are quotes for different rows. Measuring shows which rows are yours. How to speed up a slow WordPress site takes the causes in the order that pays off.
How the work is sold
| How it is sold | What you pay for | What it suits | The risk |
|---|---|---|---|
| A fixed-price optimization | One job on one site, for an amount agreed before the work starts | The ordinary causes, on pages that can be named in advance | The scope is fixed too. Ask what happens if the cause turns out to be the theme or the hosting. |
| Hourly work | The time the work takes, including the time spent finding the cause | One hard problem that is already known, such as a slow query or a custom theme | The total is unknown until the end. Ask for a ceiling that is not passed without your say. |
| A monthly plan that includes tuning | A recurring fee for looking after the site, with speed looked at on a schedule | A site that changes often, where speed slips as plugins and content are added | The tuning may be a light pass. Ask what is measured and whether you are sent the figures. |
| A rebuild | A new theme or new page templates, sometimes a new design | A site where the theme or the page builder is itself the cause | The largest bill, and a new build is not fast by default. Ask for named pages to be measured before you accept it. |
| A plugin you install yourself | A license, where the plugin is paid for, and your own time | Causes that are settings: caching, images, when scripts load | A plugin changes settings. It does not change the theme, the queries or the server. |
A plugin's options need checking one at a time. On a store, WooCommerce's documentation says to keep the Cart, My Account and Checkout pages out of the page cache, because they show information specific to one customer. WordPress caching plugins compared covers what to check before adding one.
What a real optimization includes
Six parts. Hold each quote against the list.
- Measurements before, on pages you name. The quote states the pages, the tool, mobile or desktop, and the number of runs. Name one page of each kind that matters: the home page, a landing page, a post, and for a store a product page, the cart and the checkout.
- The causes, in writing. Someone reads the test reports against the site and says which cause each page has, before any change is made.
- The changes. They are made one at a time where possible, so that each can be measured and undone, and on a staging copy first when the site has one.
- Measurements after, on the same pages, in the same way. That means the same tool, the same device and the same number of runs.
- A written list of what was changed and how to undo it. Every plugin installed or removed, every setting switched on, every file edited, and any license bought and in whose name. Without it, the next fault on the site cannot be traced to its change.
- What was found and not fixed, and why. Hosting that sets a floor, a script you chose to keep, a page builder that would have to be replaced. This part tells you what the next spend would be.
The two kinds of measurement, and what each can prove
PageSpeed Insights, Google's testing tool at pagespeed.web.dev, reports two kinds of figures for a page.
| Lab data | Field data | |
|---|---|---|
| What it is | One simulated load of the page, on a single device with fixed network conditions | How the page loaded for real users of Chrome over the previous 28 days |
| The device | For mobile, a mid-tier phone on a mobile network. For desktop, a desktop on a wired connection. | Whatever your visitors use. Chrome on desktop and on Android is counted. Chrome on an iPhone is not. |
| What it is good for | Finding causes. It is there at once, so it shows the same day whether a change did anything. | Showing what visitors go through. When a page has both kinds, Google says to set priorities by this one. |
| Where it falls short | It may not capture real-world bottlenecks. It cannot measure how fast a page reacts to a click, because nobody clicks during the test. | It moves slowly. A page with too few visits has none, and PageSpeed Insights then shows figures for the whole site, or no field data at all. |
That has three consequences for a quote.
Mobile or desktop. The two tests give different figures for the same page. For its mobile run, Lighthouse, the tool behind the lab test, by default slows the processor to a quarter of its speed and holds the connection to about 1.6 megabits a second. A page that feels quick on your own phone can still test slow.
The number of runs. Lighthouse's documentation says its scores change from run to run even when nothing on the page has changed, and that the median of five runs is twice as stable as one run. "Before" and "after" should each be the middle result of five.
Which figures. The score out of 100 is a summary of lab figures. What Google assesses is three field figures, each at the 75th percentile of visits: main content on screen within 2.5 seconds (LCP), a reaction to a click or tap within 200 milliseconds (INP), and a layout shift score of 0.1 or less (CLS). Ask for these as well as the score. WordPress Core Web Vitals explains each one.
Checking the work yourself
- Put the same pages through PageSpeed Insights yourself, five times each, and compare the middle results with the "before" figures.
- Hold the list of changes against the Plugins screen. Nothing should be there that the list does not mention.
- Use the site as a customer does: the menu, a form, and on a store the cart and the checkout.
- Four weeks later, read the field data for the same pages, if they have any.
What moves the price
| What differs | Why it changes the work | What to ask or count |
|---|---|---|
| Settings or code | Settings are changed in a control panel. A theme, a query or a script is changed in code. | Ask for the cause in writing before the price. |
| A store | The cart, the account pages and the checkout stay out of the page cache, so the pages that take the money are the ones a cache does not help. | Whether the cart and the checkout are among the measured pages. See how to speed up a WooCommerce store. |
| A page builder | A builder writes each page's markup. Google's guidance, quoting Lighthouse, calls a page's structure excessive past 1,400 nodes, with warnings from 800. A page built from many nested sections can pass that, and making it smaller means rebuilding the page. | Which builder the pages use, and whether the quote covers changing layouts. |
| The number of page templates | A home page, a post, a product page and a landing page each load their own template, images and scripts. Each is measured and fixed separately. | Count the kinds of page, not the pages. |
| Scripts from other companies | Analytics, advertising, video embeds and social buttons run in the visitor's browser. Google's guidance gives two options for one that slows a page: remove it if it adds no clear value, or change how it loads. | List them, and who in the business needs each. Each one that stays limits the result. |
| The hosting | WordPress's documentation says that on shared hosting the owner has very little control over server settings. If the server is the limit, the work stops at what the plan allows. | What the quote says happens if hosting is the cause. |
| A staging copy | A staging site is a copy of the live site where changes are tried before customers are affected. Without one, a copy has to be made first, or the live site is the test. | Whether your host provides one. See how to set up a WordPress staging site. |
| How much has to keep working | A members' area or a booking page differs from one visitor to the next, and WordPress's documentation says caching is more complex to configure for dynamic content. Each such function is tested after each change. | List what a logged-in visitor can do, and ask who tests it. |
What nobody can honestly promise
Three promises are common in quotes. Google's own documentation rules out each one.
A particular score. Lighthouse's documentation says scores change between runs with no change to the page, because networks, servers and devices vary. It also says a "perfect" score of 100 is extremely challenging to achieve and not expected, and that going from 99 to 100 takes about as much improvement as going from 90 to 94.
A ranking. Google says its ranking systems use Core Web Vitals. It also says that good results in a report do not guarantee a place at the top, and that it tries to show the most relevant content even when the page experience is below par. Its advice on hiring help with search is blunter: "No one can guarantee a #1 ranking on Google."
A result on real visitors' phones within days. Field data is a rolling average of the previous 28 days, so a change made today is not fully reflected for four weeks. "Start Tracking" in Search Console's Core Web Vitals report opens a 28-day monitoring session for the same reason. The result also depends on your visitors' own devices and connections, which no seller controls.
What can be promised is narrower and can be checked: named changes, and figures measured before and after on agreed pages by an agreed method. WP Ministry's own service is held to the same line. It reports what was measured and does not promise a number.
Why a "100 score guarantee" is a warning sign
The score is one simulated load of one page, and it changes from run to run. PageSpeed Insights' documentation says that good lab data does not necessarily mean real-user experiences will also be good.
A seller held to a number has a reason to work on the number: the one page that is tested, on the test's device, on the day of the test. Google itself says that trying to get a perfect score just for SEO reasons may not be the best use of your time. A guarantee worth having names the pages, the method, and what you get back if the figures do not move.
Questions to put to anyone quoting
Send these as they are. The written answers are the scope.
- Which pages will you measure, and do I choose them?
- Which tool do you use, on mobile or desktop, and how many runs is each figure taken from?
- Are the figures lab data, field data or both? If my pages have no field data, what do you report?
- What happens if the cause turns out to be the hosting? Do you stop, and what do I pay for the work done so far?
- If a plugin or the theme has to be replaced, is that in the price? Who pays for a license, and in whose name is it held?
- Will anything a visitor sees change: fonts, sliders, animations, chat, the order in which things appear?
- Do you work on a staging copy first? If I have none, who makes one?
- What do I get in writing: the figures before and after, the list of changes, how to undo each one, and what was found and left?
Doing it yourself first
The settings rows of the first table are within reach of an owner who is comfortable in the dashboard. Take a backup before you start.
Step 1: Measure the pages that matter
Put one page of each kind through PageSpeed Insights, five times, and write down the middle result. These are your "before" figures, whoever does the work.
Step 2: See what the site already tells you
Go to Tools, then Site Health. The Status tab lists an outdated PHP version among its issues, and on a live site it reports whether WordPress can detect a page cache. From outside, the WordPress site health check shows how long the server took to begin its answer to one request.
Step 3: Do the settings
Check whether your host already runs a page cache before you add one. Update WordPress, the plugins and the theme, then bring PHP up to the version WordPress recommends, which is 8.3 or greater. The PHP project supports each version for four years from its release. Then fix the images, following how to optimize WordPress images without losing quality. Make one change at a time.
Step 4: Remove what you do not use
Deactivate and delete plugins the site no longer needs, and take off scripts from other companies whose results nobody reads.
Step 5: Measure again
Use the same pages and the same five runs. If the figures are still poor, the cause is one of the development rows or the hosting, and you can ask for a quote for that.
The cost is your hours. No published figure can tell you how many, so time the first change and count the hours at what they are worth to the business. The risk is a setting that breaks a form or the checkout without anyone noticing, so use the site as a customer does after every change.
When to spend the money on hosting or a rebuild instead
Hosting. Google's guidance on server response time says hosting is the first thing to consider. Shared hosting is generally slower, it says, which is fine for a small site of mostly static pages. The choice becomes critical for a site with many users, personalization and database work. The signs that the server is the limit:
- The server is slow to begin its answer on pages no cache serves, such as the cart, the checkout and the dashboard. Google counts 0.8 seconds or less as good and more than 1.8 seconds as poor. Its guidance warns that a cache can mask a slow backend, so test a page that is not cached. How to reduce server response time shows how.
- The site returns errors when it is busy. WordPress hosting problems shows how to tell whether a fault is the host's or the site's.
WordPress's documentation says that paying more for a higher level of service at a hosting provider can be very effective. Ask the host what the next plan up would change before you pay anyone to tune the site on the current one.
A rebuild. The sign is the same cause on every template: each page's report points at the theme's or the builder's own files. A rebuild is the largest spend of the three, so it comes last, after the settings are done and the hosting is ruled out, with measurements that show what is left.
How to work out your own figure
What a slow page costs is in your own numbers and nowhere else.
Step 1: Work out what the pages bring in
From your analytics, take one ordinary month. For each page that matters, note the orders or inquiries that came from visits beginning on it. Multiply by what an order or an inquiry is worth. This is the monthly figure the work has to move.
Step 2: Turn each quote into the rise it has to produce
Choose how long you would give the work to pay for itself, such as twelve months. Divide the quote by what the pages bring in over that time. A quote equal to one tenth of a year's takings from those pages has to raise them by one tenth to pay for itself in a year.
Step 3: Count the hours when the site did not answer
A site slow enough to time out is down for the visitor who asked. The downtime cost calculator works out what those hours cost in sales not made, from your own revenue.
Step 4: Check the result in the same figures
After the work, compare the same pages over a period of the same length, and allow for a season or a campaign that fell in only one of them. Google's guidance notes that field data can be set beside business figures, and that lab data cannot.
This page gives no percentage for how many visitors leave a slow page. A figure of that kind describes other sites and other visitors. Your analytics, before and after, describe yours. Set them beside the quotes you have and the pricing page.
What we charge
Speed optimization
$149
Start with a free diagnosis
Common questions
Can a caching plugin do the whole job?
It can when the cause is pages being built fresh for every visitor. It does not change a heavy theme, a slow query or a server that is short of power. On a store, the cart and the checkout stay out of the cache, so they are as slow as before.
How soon will I see the result?
Lab figures change the same day, so "before" and "after" can be compared as soon as the work ends. Field data, which is what Google's Core Web Vitals assessment uses, is a rolling average of the previous 28 days. A change takes four weeks to show there in full.
Why is my mobile score so much lower than the desktop one?
The mobile test simulates a mid-tier phone on a mobile network, with the processor and the connection slowed on purpose. The desktop test simulates a desktop on a wired connection. They are different tests of the same page, so a quote should say which one its figures come from.
Will a faster site rank higher in Google?
Nobody can promise that. Google says its ranking systems use Core Web Vitals, that good results do not guarantee a place at the top, and that it tries to show the most relevant content even when a page's experience is below par. Pay for speed because of what your visitors go through.
- GuideHow to speed up a slow WordPress site, in the order that pays off
- GuideHow to speed up a WooCommerce store
- GuideSlow WordPress admin: how to find the cause and fix it
- GuideWhy the WooCommerce dashboard is slow, and how to find the cause
- Guideadmin-ajax.php high CPU usage in WordPress: how to find what is calling it
- GuideAI bots slowing down your website: how to confirm it on WordPress and what to do, mildest first

