How to Stop Transparent PNGs From Slowing Down Your WordPress Site
You install a caching plugin, enable minification, turn on Gzip, and your PageSpeed score improves. Then you add a shop page with forty product images on transparent backgrounds and it drops again, and no amount of cache configuration brings it back.
Caching cannot help you here. A cache serves the same bytes faster; it does not make them fewer. If a category page is shipping eight megabytes of PNG, the cache is doing its job perfectly and the page is still slow.
Why PNG Files Get So Large
PNG uses lossless compression, which means it reproduces every pixel exactly as it was. For a screenshot, a logo, or a chart, that is exactly what you want and the file stays small because the image contains large areas of flat colour.
A photograph is the opposite case. Every pixel differs slightly from its neighbour, there are no flat areas to compress, and lossless compression has almost nothing to work with. The result is a file several times larger than the equivalent JPEG, carrying detail no visitor will ever notice.
The trouble is that transparency has historically meant PNG, and a product cut out from its background needs transparency. So a photograph ends up in the one format least suited to photographs.
Do Not Put Your Product Text in the Image
Before getting to the fixes, one related habit worth breaking, because it inflates the same files and there is a standards position behind it.
The W3C’s success criterion on images of text treats text baked into an image as something to avoid where actual text could achieve the same visual presentation, with sufficient techniques including using CSS to control the visual presentation of text and separating information and structure from presentation. The reasoning is about accessibility: text in an image cannot be resized, restyled or read by a screen reader.
The performance argument runs alongside it. Text rendered as HTML costs almost nothing and is already cached. The same text baked into a banner adds file weight, needs regenerating whenever the wording changes, and cannot be indexed. Sale badges, prices and promotional copy belong in markup with CSS on top, not flattened into a JPEG.
With that out of the way, here is what to actually do with the image files themselves.
The Alpha Channel Is a Fourth Colour
There is a second cost that is easy to miss.
A standard image stores three channels per pixel: red, green and blue. Transparency requires a fourth, alpha, describing how opaque each pixel is. That is a 33 percent increase in raw data before any compression happens, and alpha channels frequently compress poorly around soft edges, which is precisely where a good cutout has the most detail.
Fine detail like hair or fabric edges produces an alpha channel full of intermediate values, and intermediate values are what compression algorithms struggle with most.
Where the Weight Enters Your Library
It helps to know exactly which step in the workflow introduces the problem, because that is where the fix belongs.
Run a product photo through the background remover in Pixelcut, an AI photo editing app, and you get back a PNG with a genuine alpha channel. That is the correct output for the job: transparency is what lets the same product sit on a white marketplace tile, a coloured category page and a dark hero section without reshooting anything.
What tends to happen next is that the PNG gets uploaded to WordPress exactly as exported, at full resolution, and that single file becomes the source for every thumbnail the theme generates. The editing step is not the problem. Treating its output as the final web asset is.
Convert to WebP, Which Supports Transparency
The fix is unglamorous and effective: WebP supports an alpha channel and lossy compression at the same time, which PNG never could.
That combination is the whole point. You keep the transparency your layout depends on and lose the lossless requirement your photographs never needed. Typical savings on a photographic cutout run to a large fraction of the original file size at a quality difference nobody notices on a product tile.
Most performance plugins will do the conversion for you, and modern browsers handle WebP essentially universally. AVIF compresses better still, though support and encoding time are less comfortable, so WebP remains the sensible default for a WordPress catalogue.
Resize Before Upload, Not Just After
WordPress generates several sizes from whatever you give it, which creates a false sense of safety.
Two things go wrong. The original stays on the server at full resolution, and depending on your theme and plugins it sometimes gets served. And the generated sizes are only as good as the source, so a 6000-pixel-wide export produces a set of derivatives from a file that took much longer to process and store than it needed to.
Decide the largest size your layout can actually display, add a factor for high-density screens, and export at that. A hero image rarely needs more than about 2000 pixels wide. A product thumbnail needs a small fraction of that.
Lazy Loading and Explicit Dimensions
Two settings worth checking, because they affect perceived speed more than total bytes.
Lazy loading defers images below the fold until they are needed, which is native in WordPress now but worth confirming is actually active on your theme. The important exception is your largest above-the-fold image, which should not be lazy loaded, because that is usually your Largest Contentful Paint element and deferring it makes the metric worse.
Explicit width and height attributes matter for a different reason. Without them the browser cannot reserve space before the image arrives, so the layout shifts as each one loads. That is Cumulative Layout Shift, it is a Core Web Vital, and it is one of the cheapest things on this list to fix.
Fix the Images, Then Trust the Cache
Run through the sequence in order and the results are usually dramatic on catalogue pages.
Export cutouts at the size you will actually display. Convert to WebP with transparency preserved. Confirm lazy loading is on everywhere except the hero. Add explicit dimensions. Move any text out of images and into markup. Then clear the cache and measure again.
Caching plugins do the job they are built for extremely well. They just cannot compress a photograph that was saved in the wrong format three months ago, and on most slow WordPress sites that is what is actually going on.