Inverity

Image Optimization for Modern CMS Platforms

Author

Brandon Cade

Date Published

Someone on your marketing team uploads a hero image. It is beautiful, it is 4MB, and the CMS publishes it exactly as delivered. Three weeks later a developer is in a performance review explaining why Largest Contentful Paint is failing on the landing page.

That gap, between the person who created the problem and the person who has to fix it, is the actual story of CMS image optimization. It is not a knowledge problem. Everybody knows about AVIF. It is a workflow problem: your CMS made publishing trivial and made optimization somebody else's job.

Key Takeaways

  • Images are typically 40 to 60% of page weight and the single most common cause of a failed Largest Contentful Paint.
  • Headless platforms give you no image optimization by default. It is a layer you build yourself.
  • WordPress passes Core Web Vitals on only 43% of sites, largely due to plugin bloat and blanket compression.
  • The format checklist is solved. The unsolved part is deciding how much quality each individual image needs.

Why do CMS images hurt performance so much?

Images are typically 40 to 60% of total page weight and the single most common cause of a failed Largest Contentful Paint score (SitePoint, 2026). And the CMS is the exact point in the system where oversized images get in.

The scale of the drift is easy to underrate. In July 2015 the median mobile page was 845KB. By July 2025 it was 2,362KB, a 202.8% increase in a decade (HTTP Archive Web Almanac, 2025). Pages did not get more useful by a factor of three. They got heavier, and images did most of the lifting.

Here is the mechanism, and it is entirely mundane. An editor has a photo. The photo looks good at full resolution. The CMS accepts it. The CMS serves it. Nowhere in that chain does anything ask whether the image needed to be that large, because the CMS was built to publish content, not to interrogate it.

Does a headless CMS optimize images for you?

No. A headless CMS is a content API, not an optimization layer, and this catches teams by surprise more often than it should.

The trade is explicit once you see it. Headless SEO means rebuilding the features WordPress included by default: meta management, sitemaps, schema, canonical tags, internal links, and image optimization at the CDN. The content API itself does none of this (Jottler, 2026). Contentful, Sanity, Strapi, and Payload each give you a clean content model and an endpoint. What they do not give you is any opinion about the 4MB hero sitting in that content model.

Teams discover this the expensive way. They migrate to headless for the developer experience and the flexibility, both of which are real, and then find that the performance work they assumed was handled is now an engineering project. If any of those layers is missing, the headless stack gets blamed for a problem that is actually architectural.

The upside is control. Headless gives you complete authority over frontend performance, which means the ceiling is higher than a traditional CMS ever offered. The catch is that authority means responsibility, and image optimization is the layer teams most often leave for later.

Why doesn't WordPress solve this either?

WordPress passes Core Web Vitals on only 43% of sites, held back by plugin bloat and heavy themes (Maintouch, 2026). For contrast, Shopify manages a 78% pass rate on the same measure, which tells you the problem is not the concept of a traditional CMS.

The image story in WordPress is a specific version of the general plugin story. There is a plugin for this. There are forty plugins for this. Most of them do the same thing: apply a global quality setting to every image that passes through, then report a satisfying percentage saved.

That approach is where the damage happens. A single quality value gets applied to the hero photograph, the product screenshot, the logo, and the background texture, as though those are the same kind of problem with the same kind of answer. The plugin reports success either way, because the only thing it is measuring is bytes.

What actually moves the needle?

The technical checklist is well understood and worth doing: serve AVIF for photographic content, which routinely lands 30 to 50% smaller than equivalent-quality JPEG with full browser support, keep WebP as the universal fallback, use responsive sizing so a phone does not download a desktop hero, set explicit dimensions to avoid layout shift, and lazy-load anything below the fold (SitePoint, 2026).

None of this is novel, and that is exactly the point. The sites failing Core Web Vitals on images are not missing exotic techniques. They are missing two or three items from a known list.

So here is the honest assessment: the checklist is solved. Format selection, responsive sizing, and loading attributes are engineering work with known answers, and if you have not done them, do them. They will help.

But finish the checklist and you are left with the question it never answers: how much quality does each image actually need? AVIF at quality 80? At 60? At 45? The checklist has no opinion, so somebody picks a number, applies it to everything, and hopes. That decision, not the format, is where the remaining wins and the remaining damage both live.

Why does one quality setting fail?

Because no single quality value is correct for a hero photograph, a UI screenshot, a logo, and a background texture at the same time. A global setting is wrong in two directions at once.

Set it aggressively and you save real bytes, but you crush the assets that needed detail. The product macro loses the texture that was doing the selling. The screenshot's text turns to mush. Nobody notices during the optimization sprint, because the metric everyone is watching went green.

Set it conservatively and you protect the important assets, but you overspend on everything else. The flat graphic that could have compressed to a third of its size sits at the same quality as the photograph, carrying bytes it did not need. You paid for safety with load time, across the whole library.

The trap is that both mistakes report as success. Bytes went down, the target was hit, the work looks finished. The regression, when it comes, arrives as a conversion number nobody connects back to the compression settings from six weeks ago.

The alternative is deciding per asset. Look at what the image actually is, decide how much quality it needs, verify the result, deliver. At Inverity, the Neural Media Orchestrator does exactly this, evaluating each asset and selecting from 352 optimization paths, delivering up to 95% neural savings on photographic sources while holding structural similarity at or above 0.975 against the original. It is Pareto-safe by routing, so it never ships a result larger than the strongest adaptive baseline. You do not trade quality for size. You spend size where quality needs it.

How do you optimize images without a developer?

Put the optimization inside the publishing flow rather than the build pipeline. That single move is what removes the developer from the loop, and it is the difference between optimization that happens and optimization that stays on the backlog.

Think about where the current options actually live. Build-time optimization runs in your pipeline, which means a developer touches every change. CDN-level tools sit at delivery, which is better, but they are usually configured once with a global setting, which puts you back in the one-size-fits-nothing trap. Manual compression depends on a human remembering, which is the least reliable system ever devised.

Optimization inside the publishing flow means the editor uploads exactly as they always have, and the asset is evaluated and optimized on the way through. No build step. No ticket. No new habit for the content team to learn and then quietly abandon.

To be fair to the alternatives: a build-time pipeline is a perfectly good answer if you have the engineering capacity and a static site, and a CDN transform layer works well when your library is homogeneous enough that one setting really is close to right. The workflow argument matters most when your content team publishes often, your library is diverse, and your engineers have better things to do than tune quality parameters.

How does this work on each platform?

The connector differs, the principle does not.

Contentful and Sanity are API-first, so optimization hooks into the asset pipeline and every published image is handled on the way out. Storyblok and Strapi work the same way. WordPress integrates at the media library and publishing flow, which is where the blunt-plugin problem gets replaced with per-asset decisions. HubSpot connects to the content workflow directly. Sitecore and Optimizely are in development.

Each of these gets its own guide, linked from this hub as they publish. The setup differs. The underlying decision, how much quality does this specific image need, is identical everywhere.

How do you verify optimization is safe?

Every optimized asset is checked against a perceptual quality floor before delivery, and anything that cannot meet the bar does not ship in a degraded form. That verification is what separates automatic optimization from automatic damage.

This matters more than it sounds. The whole reason teams are nervous about aggressive compression is the memory of a time it went wrong, a hero image that came back visibly soft, a screenshot whose text stopped being readable. A verified floor closes that door. If an asset can hit the target within the quality bar, it ships small. If it cannot, the system does not quietly ship a worse image and call it a saving.

Frequently Asked Questions

Do headless CMS platforms optimize images automatically?

No. A headless CMS provides a content API, not an optimization layer. Image optimization at the CDN is one of several layers, alongside meta management, sitemaps, and schema, that you must build yourself on a headless stack.

Why is WordPress bad at image performance?

WordPress passes Core Web Vitals on only 43% of sites, largely due to plugin bloat and heavy themes. Its image plugins typically apply one global quality setting to every asset, which over-compresses images that needed detail and wastes bytes on ones that did not.

Does image optimization require a developer?

Not if it runs inside the publishing flow. Build-time pipelines and manual compression both require engineering time or human discipline. Optimization that happens automatically as assets are published removes the developer from the loop entirely.

What is the best image format for a CMS in 2026?

AVIF for photographic content, which is routinely 30 to 50% smaller than equivalent-quality JPEG with full browser support. WebP remains the safe universal fallback. But format selection is table stakes; the harder question is how much quality each individual image needs.

Will automatic optimization degrade my images?

Not with a verified quality floor. Every asset should be checked against a perceptual threshold before delivery, with a fallback for anything that cannot pass. The goal is smaller files that still look right, not uniform aggressive compression.

The point

Your CMS is where the image problem starts, because it is the one place in the system where an unoptimized asset can enter with a single click and nobody downstream gets a say.

The format checklist will get you part of the way, and you should finish it. But the reason sites keep failing on images despite a decade of solved technique is that somebody still has to decide how much quality each asset needs, and a global setting is a way of pretending that decision does not exist.

Make the decision per asset, verify it, and put it where the work already happens. Then the content team keeps publishing, the pages stay fast, and nobody has to sit in a performance review explaining a hero image.