Super AgentsPerformance

Performance.In build

Makes the site faster. Images, caching, the database, and the one element holding up every page load.

Why this one exists. Slow is the failure nobody reports, because the visitor who left never told anyone why.

16Playbooks
98Steps written out
13That change anything
0Free on every plan

Every playbook it holds

Database Cleanup

careMonthlySept 2026

Clear the accumulated junk and optimise the tables, after a backup and never before one.

1
Measure first

Table sizes, row counts, and where the weight actually is.

Reads only
2
Back up the database

No row is deleted before this succeeds.

Stops the run
3
Clear post revisions

Past the retention you set, keeping the most recent.

Writes
4
Clear expired transients

Only rows already past their own expiry.

Writes
5
Clear spam and trash

Comments already flagged, posts already in the bin past the window.

Writes
6
Drop orphaned rows

Metadata pointing at posts and users that no longer exist.

Writes
7
Optimise and report

Optimise the tables and report the space saved in megabytes, not percentages.

Writes
7 steps · changes the site, behind a restore point

Image Compression

agencyMonthlyOct 2026

Compress the images that are actually slowing pages down, keep every original, and stop before the plugin's free quota runs out.

1
Measure the library

Count the images, their file sizes and which pages use them. If nothing is over the threshold you set, it exits here and compresses nothing.

Stops the run
2
Confirm originals are kept

Read the compression plugin's own settings and confirm it stores an untouched original for every file. If originals are switched off, the run stops here.

Stops the run
3
Compress the heaviest first

Ordered by the traffic the page gets, not by file size alone. One batch at a time, with the quota checked before each batch.

Writes
4
Request the compressed files back

Fetch each one and confirm it still decodes and still has the dimensions the page expects.

Reads only
5
Restore anything that broke

Any file that fails that request is put back from its original in the same run, and the plugin's own bulk restore stays available for every other file.

Reversible write
6
Report the megabytes

What the library weighed before, what it weighs now, and which pages got lighter. In megabytes, not percentages.

Reads only
6 steps · changes the site, behind a restore point

Modern Formats

careOn demandSept 2026

Serve WebP and AVIF to the browsers that read them, and keep the JPEG for the browsers that do not.

1
Read what is already there

Which compression plugin is installed, whether it can write WebP and AVIF, and whether delivery is already on. If it is on and working, it exits here.

Stops the run
2
Write down the current settings

The exact delivery options and any rewrite rule as they stand, so putting them back is precise rather than a guess. Nothing changes until that record exists.

Stops the run
3
Switch delivery on

One format at a time. WebP first, because every current browser reads it, then AVIF behind it.

Writes
4
Ask for the same image three ways

Once with an AVIF accept header, once with a WebP one and once with neither. Three different responses with the right content type is the pass.

Reads only
5
Turn it back off on any mismatch

If any browser gets a broken image or the wrong content type, delivery returns to exactly what step two recorded, inside the same run.

Reversible write
6
Report the bytes saved

Which formats are served to which browsers, and what the homepage hero now weighs against what it weighed.

Reads only
6 steps · changes the site, behind a restore point

Image Dimensions

agencyMonthlyNov 2026

Stop the page jumping while it loads by giving every image a width and a height, and take lazy loading off the image at the top.

1
Find the images with no size

Read the rendered pages for image tags carrying no width or height attribute. If there are none, it exits here and edits no post.

Stops the run
2
Record every post it will touch

The post ID and the current revision for each one, so every edit can be traced back. Nothing is edited until that list exists.

Stops the run
3
Add the missing dimensions

Read the real size from the file itself and write it into the tag. One post at a time, through post revisions.

Writes
4
Take lazy loading off the top image

The image that paints first should never be lazy loaded. It finds that image per template and removes the attribute there only.

Writes
5
Undo through the revision

Every edit is a post revision, so any post goes back to the version it had before this run from the WordPress editor, without us.

Reversible write
6
Re-measure the shift

Load the changed templates again in headless Chrome with mobile processor and network throttling, and report cumulative layout shift before and after. That is a lab figure from our network, not what your visitors recorded.

Reads only
6 steps · changes the site, behind a restore point

Render Blocking CSS

agencyMonthlyNov 2026

Get the stylesheets out of the way of the first paint, one template at a time, without changing how the page looks.

1
Render each template and list what blocks

Headless Chrome loads one page per template and records every stylesheet the browser waits for before it paints anything. If nothing blocks, it exits here.

Stops the run
2
Snapshot the templates

A full page screenshot of every template, plus the current optimisation settings, so the comparison later is against something real. Nothing changes until both exist.

Stops the run
3
Inline what the first screen needs

The rules the visible part of the page uses go into the head. One template at a time, never all of them at once.

Writes
4
Defer the rest

The remaining stylesheets load after the paint instead of holding it up.

Writes
5
Compare against the snapshot

Screenshot each template again. Anything that moved by more than a hair is a failure, not a win.

Reads only
6
Put back any template that moved

The change is removed and the settings recorded in step two are restored, for that template only, immediately.

Reversible write
7
Report the paint time

First contentful paint per template, before and after, measured in headless Chrome with mobile processor and network throttling. A lab figure, and labelled as one.

Reads only
7 steps · changes the site, behind a restore point

Unused CSS

agencyMonthlyDec 2026

Name the stylesheets loading on pages that never use a single rule from them, and say what they cost.

1
Render one page per template

Headless Chrome records which CSS rules the page actually uses while it paints.

Reads only
2
Match every rule to its plugin

A 300KB stylesheet from a slider plugin on a page with no slider is the finding. The total byte count is not.

Reads only
3
Separate the safe from the risky

A rule unused on this page may still be used by a hover state, a form error or a mobile menu. It says which ones it cannot prove.

Reads only
4
Order by bytes per page view

A heavy file on the homepage costs more than a heavier one on a page nobody visits.

Reads only
5
Report with the setting that fixes it

Which plugin to stop loading where, written in the words of the optimisation plugin you already have. It changes nothing on the site.

Reversible write
5 steps · reads only, never writes

Script Deferral

careOn demandOct 2026

Stop the scripts that nothing on the first screen needs from holding up the paint.

1
List what is enqueued

Read the registered scripts through the connector, with their handles, their dependencies and where each loads. If everything is already deferred, it exits here.

Stops the run
2
Record the current lists

The existing defer and delay settings exactly as they are, so putting them back is one action. Nothing changes until that record exists.

Stops the run
3
Defer the ones the paint does not need

Analytics, chat widgets and social embeds first. One handle at a time, never a bulk switch.

Writes
4
Load the critical pages after each change

Homepage, a service page and the contact form, with the browser console read for errors. A deferred script that breaks a form is worse than a slow one.

Reads only
5
Put back anything that errors

That handle returns to what step two recorded, in the same run, without waiting for you.

Reversible write
6
Report what moved

Which handles are deferred now, and time to interactive on the homepage before and after, measured in headless Chrome with mobile throttling.

Reads only
6 steps · changes the site, behind a restore point

Font Loading

careOn demandOct 2026

Stop text being invisible while a font downloads, and preload only the one file the first screen actually needs.

1
Find the fonts the page waits for

Which font files load on the homepage, from where, and whether text is hidden while they arrive. If the display rule is set and the first font is already preloaded, it exits here.

Stops the run
2
Record the current font settings

The theme's font options and any preload tag already in the head, written down before either changes.

Stops the run
3
Set the display rule

Text shows in a fallback face straight away and swaps when the real font arrives, rather than showing nothing for three seconds.

Writes
4
Preload one file, not six

Only the weight the heading uses on the first screen. Preloading everything has the same effect as preloading nothing.

Writes
5
Undo path

Removing the preload tag and restoring the display rule recorded in step two puts the head back exactly as it was. Two settings, and no theme file was edited.

Reversible write
6
Confirm the text appears early

Load the homepage in headless Chrome with slow network throttling, confirm the headline is readable before the font file finishes, and report the difference.

Reads only
6 steps · changes the site, behind a restore point

Page Cache

careOn demandSept 2026

Serve pages from cache to visitors, and never to somebody signed in or halfway through a checkout.

1
Read what is caching now

Which caching plugin or host layer is active, and what the response headers actually say. If pages already come back from cache, it exits here and changes nothing.

Stops the run
2
Record every existing rule

Every exclusion, every expiry and every cookie rule as it stands today. Nothing is switched on until that record exists.

Stops the run
3
Exclude what must never cache

Cart, checkout, account and anything behind a login. This happens before caching is turned on, not after somebody complains.

Writes
4
Switch caching on

One layer at a time, with an expiry the site's publishing rhythm can live with.

Writes
5
Prove a signed in visitor gets a fresh page

Request the same address signed out and signed in, and confirm the two responses differ and carry the right cache headers.

Reads only
6
Roll back to the recorded rules

If a signed in request comes back with somebody else's page, caching goes off and every rule returns to what step two recorded, immediately.

Reversible write
7
Report

Which pages are cached, which are excluded, and the server response time before and after, measured server to server from our network.

Reads only
7 steps · changes the site, behind a restore point

Object Cache

careOn demandNov 2026

Stop the site repeating the same database queries on every page load, when the host already gives you somewhere to keep the answers.

1
Check there is somewhere to cache to

Ask the connector whether Redis or Memcached is reachable and which PHP extension is present. If neither is there, it exits here and installs nothing.

Stops the run
2
Record the current state

Whether a drop-in already exists and what is in it, so it can be put back byte for byte. Nothing is written until that record exists.

Stops the run
3
Install the drop-in

One file, the one the host's own documentation names, and nothing else.

Writes
4
Watch the first few minutes

Load the critical pages and read the error log through the connector. A misconfigured object cache shows up as a white screen, not as a slow page.

Reads only
5
Remove it on any error

Deleting the drop-in returns the site to the database exactly as it was. That happens on its own the moment a page errors.

Reversible write
6
Report the hit rate

How many queries are answered from cache, and the server response time before and after, measured server to server from our network.

Reads only
6 steps · changes the site, behind a restore point

CDN Setup

careOn demandNov 2026

Serve the static files from an edge close to the visitor without breaking the pages that reference them.

1
Read what is served from where

Which host answers for images, stylesheets and scripts today, and whether a CDN already sits in front. If one does, it exits here.

Stops the run
2
Record the current addresses

The site address, the content address and any rewrite rule already in place. Nothing is repointed until that record exists.

Stops the run
3
Point the static files at the edge

Images, stylesheets and scripts. Not the HTML, and never the admin.

Writes
4
Request the same files both ways

Fetch each type from the edge and from the origin and confirm they match byte for byte and carry the same content type.

Reads only
5
Repoint to the origin on any mismatch

One setting goes back to what step two recorded and every file is served from the origin again within minutes.

Reversible write
6
Check the fonts and the mixed content

Cross-origin fonts and any file still requested over plain HTTP, because both fail quietly and only in some browsers.

Reads only
7
Report

What is on the edge, what is not, and the time to first byte for a static file from three regions.

Reads only
7 steps · changes the site, behind a restore point

Table Optimise

careMonthlySept 2026

Find the plugin tables that grow forever and are never trimmed, and give the site back the space they hold.

1
Measure the tables

Every table by size, row count and overhead, with the plugin that owns it named. If nothing is over the threshold, it exits here.

Stops the run
2
Back up the tables it will touch

Only those tables, not the whole database. No row moves before this succeeds.

Stops the run
3
Trim the logs past retention

Scheduled action history, session rows, redirect logs and analytics tables, and only past the age you set.

Writes
4
Rebuild the overhead

Optimise the trimmed tables so the deleted rows give their space back to the disk instead of sitting there as a gap.

Writes
5
Restore path

The backup from step two restores any single table on its own, without touching the rest of the database.

Reversible write
6
Report in megabytes

Which tables shrank, by how much, and which one will need this again next month.

Reads only
6 steps · changes the site, behind a restore point

Autoload Diet

careMonthlyOct 2026

WordPress loads a set of options on every single request. When that set reaches a few megabytes, every page on the site pays for it.

1
Weigh the autoloaded options

The total size, and the twenty heaviest rows with the plugin that wrote each one. Under the threshold, it exits here.

Stops the run
2
Export every row it will change

Option name, current value and current autoload flag, written out before a single flag moves.

Stops the run
3
Stop autoloading the junk

Expired transients and rows left behind by plugins that are no longer installed. The flag changes. The value is never deleted.

Writes
4
Ask before touching a live plugin

A heavy option belonging to an active plugin is not junk. It is listed for you and nothing happens to it without your word.

Stops the run
5
Undo from the export

Every flag returns from the step two export in one action, and no value was ever removed to restore.

Reversible write
6
Confirm the site still works

Load the homepage, the admin dashboard and one form, then report the new autoload weight against the old one.

Reads only
6 steps · changes the site, behind a restore point

Heartbeat Throttle

careOn demandOct 2026

The admin screen calls the server every fifteen seconds. On a small host, a few tabs left open is enough to use every PHP worker the site has.

1
Count the polling

How often admin-ajax is called, from which screen, and by which plugin. If the rate is already low, it exits here.

Stops the run
2
Record the current intervals

The existing heartbeat settings, so every one of them can be put back exactly.

Stops the run
3
Slow the screens that do not need it

The dashboard and the post list. The editor keeps its interval, because that is what holds your post lock and saves your drafts.

Writes
4
Cap the worst caller

A plugin hitting admin-ajax on its own schedule is rate limited rather than blocked, because blocking it breaks its screen.

Writes
5
Undo

One setting returns every interval to what step two recorded. No plugin is deactivated and no plugin file is edited at any point.

Reversible write
6
Verify in the editor

Open a post, save a draft, confirm the lock and the autosave still work, then report the request rate before and after.

Reads only
6 steps · changes the site, behind a restore point

Hosting Limits

careWeeklySept 2026

Read what the host actually gives this site, so a slow page gets blamed on the right thing.

1
Read the PHP configuration

Version, memory limit, maximum execution time, upload limit, and whether opcache is on and how full it is.

Reads only
2
Find the worker ceiling

How many requests the site can serve at once before they queue. Read from the host's own limits where the connector can see them, and reported as unknown where it cannot.

Reads only
3
Watch the queue across a day

Server response time hour by hour, so you can see whether it climbs at the same time every day. This is time to first byte measured server to server from our network, not a page speed figure.

Reads only
4
Name the ceiling that binds

Memory, workers, execution time or the database. One of them is the one that hurts and the rest are noise.

Reads only
5
Report with what fixes it

Which host setting to change or which plan tier to move to, with the number that says why. It changes nothing on the server.

Reversible write
5 steps · reads only, never writes

Vitals Watch

agencyWeeklyDec 2026

Track the three metrics Google actually uses, template by template, and say plainly where each number came from.

1
Pick one page per template

Homepage, a service page, a post, an archive and the checkout. The failure is nearly always in the template rather than the page.

Reads only
2
Pull the field data

The Chrome User Experience Report through the PageSpeed Insights API, which is what real Chrome users on real phones recorded over the last twenty eight days. Where a page has too little traffic to report, it says so instead of filling the gap.

Reads only
3
Run the lab test

The same API's Lighthouse run, on a simulated mobile processor and connection. That is a lab figure and it is labelled as one everywhere it appears.

Reads only
4
Name the element

Which image, font or block of script is holding up the largest paint, and which element is moving the layout. A selector, not a score out of a hundred.

Reads only
5
Compare against last week

A template that got worse is a finding. A template that has always been slow is a project, and the two need different conversations.

Reads only
6
Report per template

Ordered by the traffic the template carries. It changes nothing on the site.

Reversible write
6 steps · reads only, never writes