Put your address in. We fetch the page, measure every image a visitor actually downloads, and show exactly what changes — on wifi, a good mobile signal, and a bad one.
Two people are timing it. The visitor deciding whether to buy, and Google — which scores every page on how fast its largest image appears, and ranks on that score.
Free, about five seconds, no sign-up. You get a full report — every heavy image named, and the seconds back on three connection speeds.

Sites we look after
Marked sites are live on Peregrine today. The rest are client sites we have measured with the tool above and not yet moved — we would rather name them accurately than imply a customer we do not have.
Running total
Read from the conversion log, not from a deck. Every figure below is a
SELECT against the table that a customer invoice reads from. Counted on the
AVIF files, because that is what a visitor downloads — adding the WebP fallbacks in
would count every original twice and roughly double the figure.
What it is
A WordPress plugin and an edge network. It converts the library you already have to AVIF, serves it from a name on your domain, and leaves the originals where they sit. New uploads convert as they arrive, so it is not a one-off pass that decays.
Everything below this line is measured on sites running exactly that.
images.yourdomain.co.uk — your name, not oursWhy it pays for itself
One of them decides whether to buy. The other decides whether anyone finds you. Image weight is the rare thing that both of them are measuring, and it is the part of a page that can be fixed without touching the site.
The visitor
On the libraries measured on this page, the images are the overwhelming majority of what a homepage actually weighs. Jermyn & Co’s comes to 1.33 MB of images; through us it is 549 KB. On a weak signal that is 2.2 seconds of a visitor looking at an empty rectangle, removed.
You cannot make somebody more patient. You can stop asking them to be.
Core Web Vitals are a ranking signal, and the headline one is Largest Contentful Paint — how long until the biggest thing on screen has finished loading. On a site with a hero image, the biggest thing on screen is the hero image.
Citizens Advice’s homepage carries a single photograph of 2.53 MB. That one file is almost certainly what Google is timing. It becomes 200 KB. Shrinking it is not a proxy for the metric — it is the metric.
Same change, two returns, and no redesign in between. Most speed work helps one of these two and is invisible to the other.
Measured on real sites
Not averages, not a demo library. Each of these is a page we fetched and weighed, or a library we have actually converted — in one case a library a competitor had already finished with. Where a number is a projection, the card says so.
648 machinery photographs that had already been through Imagify at its most aggressive setting and resized to 2,560 pixels. This is not a library we found untouched — it is one a competitor had finished with.
23,773 conversions — AVIF and a WebP fallback for every file — at an average of 220 ms each, with the site up throughout. Read straight from the conversion log, and it grows as they upload. We are quoting the saving against what Imagify left behind, not against the camera originals, because that is the harder number and it is the one that was actually on the server.
A WooCommerce store. Cart and checkout bypass the cache; everything else is served from the edge.
3.2× faster to first byte — five requests from a separate machine, median taken, origin reached directly by IP so the edge is genuinely out of the path. Time to first byte depends on where you measure from, so we say where.
cadat.org.uk
Photographs saved as PNG at 2048 pixels. The heaviest single image on the homepage is 372 KB on its own — run through our encoder it comes out at 10 KB.
Point the analyser at this page and it will report about 2.3 MB of images. That is correct, and we are not going to hide it: the left half of the comparison above is a deliberately unoptimised original, because that is the entire exhibit. Everything else here is served from our own edge, on our own product.
Every site here is one we look after, and every after-figure on this page is a real conversion — the images were downloaded and encoded at shipping settings, not multiplied by a ratio. Point the tool at the top of this page at any of these domains and you will get the same numbers. The ones marked live are running on Peregrine today; the rest we have converted and measured but not yet moved.
These used to be projections at a flat 92.3% and we have replaced them, because measuring found the flat ratio overstated three of the four smaller sites — Surgicentre by five times and Inspire Groundworks by six. Both are photograph-light pages of logos and screenshots, which is exactly where a ratio taken from photographs falls apart. A projection sold as a result is what we criticise other people for, so it could not keep sitting here.
Measured, not claimed
108 images from six unrelated client libraries, none previously optimised. Our quality was tuned down per image until it matched or beat the competitor’s fidelity — only then did we compare bytes.
Quality scored with SSIM against the original, using a harness that refuses to compare mismatched dimensions and self-tests to 1.0 before every run. Mean fidelity 0.892 against 0.862 — ours is the higher of the two.
How
Not a magic codec. Two decisions most optimisers don’t make, one check nobody else does, and nothing that touches your originals. Each of these is drawn to the measurements above.
One photograph, every step
A real file from a real client library — an aerial shot of a plant yard. It came off the camera at 5000×3331 and 15.9 MB, and WordPress keeps that file forever but never sends it to anybody. What it actually serves is its own 2560px copy, so that is where an honest comparison starts.
-scaled.jpg, 2560pxWordPress already shrinks anything over 2560px and serves that instead. This is the file a visitor on a wide screen downloads, and it is the number every claim below is measured against.
This library had already been through Imagify at its most aggressive setting. That is a real improvement, and it is where most sites stop.
Same picture, same dimensions, different format. A quarter smaller again than the tool that had already finished with it — this is the part that is only about the codec.
Half as much again, and none of it from the codec. Nothing on the page displays this photograph above about 1600px, so 2560 is detail that is downloaded and thrown away. Re-sizing before encoding is the step most optimisers skip.
1.54 MB down to 263 KB — 83% off what a visitor downloads today, on a library a competitor had already optimised. The camera original stays exactly where it is. We quote against WordPress’s own scaled copy rather than the 15.9 MB file, because that is the one people actually wait for, and a comparison against a file nobody downloads is how the rest of this industry gets to print bigger numbers than ours.
AVIF is roughly half the size of WebP at the same quality. We ship it by default, with WebP as automatic fallback for older browsers. Nobody sees a broken image.
Libraries are full of 5,000-pixel camera originals displayed at 1,200. Re-encoding those is pointless — we resize first. One 16 MB photo came out at 368 KB.
We found a competitor on a client’s site with 4,283 converted files and five being served. Peregrine only serves a format it has confirmed is retrievable from the edge.
Converted files sit alongside the originals. Turn Peregrine off and your site serves exactly what it did before. There is no destructive path.
Perch · free
Uptime monitoring, checked from two separate networks, with a status page you can send to the client. Free for ten sites whether or not you ever buy anything else — because a monitor costs us a cron job, and we would rather be the tab you already have open.
Checked every minute from two networks · times in UTC
A failure is checked again from a second server on a different network before anyone is emailed. A monitor that cries wolf gets muted, and a muted monitor is the same blindness with a subscription attached.
The page returns 200, the theme loads, and the product grid is empty. Give us a word that must appear — “Add to basket” — and we will tell you when it stops appearing.
We record the expiry on every check and warn you two weeks out. An expired certificate is the outage nobody schedules and everybody could have.
Where we sit
An optimiser plugin shrinks files and stops there. A full-stack accelerator takes over your whole front end and charges like it. We do the delivery part properly without taking the site off you.
Categories, not a scoreboard against any one product — feature lists change and we would rather not be caught quoting an old one. The 39.5% figure above is a direct, quality-matched measurement against the market-leading optimiser, and the raw data behind it is published. If you think a column here is unfair to a tool you use, tell us and we will change it.
Getting started
Three steps, in this order. Nothing in it is hard to reverse, which is rather the point — you should not need courage to try a CDN.
A single CNAME for images.yourdomain.com on Glide. On Dive you delegate the
domain to our nameservers instead, which is what lets us cache the whole page rather than
just the assets.
It works through the library in the background while the site stays up. Breckland’s library is 12,514 files and counting. Nothing is replaced — converted files sit alongside the originals.
A format is only served once we have confirmed that exact file comes back from the edge. We found a competitor on a client’s site with 4,283 converted files and five of them actually being served.
Reversing it is deleting the plugin. Your site goes straight back to serving what it served before, because that is still what is sitting in the library.
What comes with it
Compression is the easy half. The rest of this is what an agency looking after forty sites actually needs: proof to hand the client, a list of what still needs doing, and something that tells you before they do.
One page, at a link only you have, under your name — images optimised, how much smaller, the seconds a visitor no longer waits, and the uptime record. It goes out on the 1st covering the month just ended, and replies come back to you rather than to us. A month with almost nothing in it is skipped rather than sent as an empty report.
After conversion, the files a visitor still downloads, largest first — because the biggest one left is usually what Google is timing. Alongside it, the ones conversion barely helped and the likely reason: a PNG carrying transparency, or a JPEG already squeezed hard before upload. The point is knowing which images to re-export instead of guessing.
Every site checked every few minutes from two separate networks, and confirmed from the second before anything is called down — so a wobble on one route does not wake you at 3am. Certificate expiry and keyword checks included, and a public status page to send a client — on your own domain from Perch Pro. Ten sites watched free, on any plan or none at all.
Email, Slack, or a webhook into whatever you run. Every destination stays marked untested until you have sent one through and seen it arrive — an alert route nobody has proved is worse than none, because it is the one you are trusting on the night it matters. Invite your team; nobody shares a login.
Pricing
First 30 days free on every plan — no card is charged until day 31. No metered bandwidth and no surprise overages. Annual saves 20% and includes setup and migration.
Pick one. Both include the plugin, the edge and your own hostname.
billed annually at £84
billed annually at £228
Add to either plan, or take Perch on its own and pay nothing.
no card, no expiry
billed annually at £90
billed annually at £144
billed annually at £348
The discount applies across every site on the account — one invoice, one renewal date. Move the slider.
No card charged for 30 days. Cancel inside the trial and nothing is taken.
For agencies
Assets serve from their domain, and on Dive your nameservers sit in front of the whole thing.
Images at images.theirdomain.co.uk. Nameservers under your brand. Block pages
with your name on them. Nothing in the page source points back at us.
ns1.youragency.com ns2.youragency.com
Per-site keys, portfolio-wide reporting, and a single annual commitment covering the lot. Adding a site provisions its storage, CDN hostname, certificate and caching rules in one step — not an afternoon of configuration.
Everyone compresses images. We make sure they actually reach the browser.
Which is why every file is fetched back from the edge before it is served, and why one competitor was found serving five images that did not exist.
Before you ask
Mostly variations on one thing: what happens when it goes wrong. Fair question to ask of anything sitting in front of a client’s site.
Your originals never left. They are in your media library exactly where WordPress put them, untouched, and the plugin falls back to serving them. The worst case is the site you had before us, which is a very different worst case from a service that has taken over your front end and holds the only copy of anything.
No, and we are careful about the specific way that usually happens. Cart, checkout and account pages bypass the cache entirely, and we never match on the mere presence of a cookie — that is the mistake that serves one logged-in customer’s basket to everybody. Personalised responses are never cached.
Yes. Page builders render outside the normal content filters, which is why plugins that hook
the_content quietly miss most of a builder-made page — they report
success and change nothing. We rewrite the finished output instead, so a builder page is
handled the same as any other.
Never. There is no destructive path in the product. Converted files sit alongside the originals and the plugin chooses between them at render time.
Then we keep yours. If our output is not actually smaller we say so and serve the original. An optimiser that ships a bigger file and calls it a saving is worse than doing nothing.
Only on Dive, and that is what buys you edge-cached HTML. Glide is one CNAME on a subdomain and leaves your DNS exactly where it is — you can stay with Cloudflare, your registrar or your host.
Usually not. Most site CDNs pass images through unchanged — they move the same bytes faster. The saving here comes from sending far fewer bytes in the first place. Glide sits beside an existing CDN happily; Dive replaces it.
One domain, whatever its size. A 40-page brochure site and a 12,000-product store are the same price, because our cost is compute at conversion time, not bandwidth.
Annual saves 20% and includes the migration done for you. Glide and Shield are also available monthly if you would rather not commit. Dive is annual only — delegating nameservers is a real migration and a one-month experiment does nobody any good.
Converted images sit in EU edge storage, in Germany, and are delivered from the nearest point of presence to each visitor. Original images stay on your own server throughout.
Start here
Tell us what you look after and we will come back with what it would cost and what it would save — measured on your actual pages, not an average.
Prefer email? tgf@xpose.online.

