Skip to main content
Store operations and content

Shopify's Docs Say Image Output Isn't Byte-Identical — Which Breaks Every Compression Dashboard

Shopify's help center says "Images aren't compressed when you upload them." Its developer docs say the image_url filter "doesn't guarantee byte-identical output... because Shopify's CDN might re-encode the image or negotiate a different output format." Put those together and the 67% figure on your image optimizer's dashboard describes a file your customers never download. WebP and AVIF conversion, srcset, and lazy loading already ship by default. Here's what image apps can actually change, the one real gap in Shopify's pipeline, and six real apps compared on backup windows rather than compression ratios. Researched September 1, 2026.

AIEC App Lab AI Editorial TeamPublished Updated Read 13 min#Shopify blog operations#App comparisons#SEO and traffic

What you will learn

On this pageContentsCloseOpen

Most Shopify image optimizer comparisons rank apps on compression ratio and supported formats.

One sentence in Shopify's developer docs undermines that entire axis. It's buried at the end of the quality parameter description for the image_url filter:

The image_url filter doesn't guarantee byte-identical output, even when the requested dimensions match the source image, because Shopify's CDN might re-encode the image or negotiate a different output format.

And the help center describes upload behavior this way:

Images aren't compressed when you upload them to the Shopify admin, which helps maintain their original quality.

Shopify does nothing on the way in and re-encodes on the way out. Once you internalize that, the classic complaint — "I installed a compression app and nothing got faster" — stops being mysterious.

Below: what the CDN and your theme already do, the one real gap in the pipeline, what apps can genuinely change, and six real apps compared. Research date: September 1, 2026. Prices are USD as listed on the Shopify App Store.

The short version

If your goal is "compress images to go faster," an app is low priority. Shopify already compresses and format-negotiates at delivery, and states outright that "many of these recommendations are already implemented by Shopify or don't apply to Shopify stores."

If your goal is bulk alt text and filenames, that's the real job apps do. It's not something you'll hand-edit across 2,000 SKUs.

If images inside your theme's assets/ folder are heavy, Shopify's automatic pipeline doesn't touch them. That's the one genuine hole.

If reversibility matters, compare backup windows. Only three of six publish one.

By scenario:

  • Start free, scale metered → Tiny SEO Speed Image Optimizer (50 images/month free, 3¢ each beyond)
  • Reversibility above all → Hextom: Bulk Image Edit & SEO (revert on the free plan, backups up to 180 days)
  • One app for broader SEO, 20 languages → Smart SEO AI & Image Optimizer ($14.99/mo and up)

And note that an app can call itself an image optimizer while gating compression to its top tier. BOOSTER AI SEO + AEO OPTIMIZER puts image compression on the $69 Premium plan — not on the $39 Pro.

What Shopify already does

WebP and AVIF aren't something you enable

From the help center:

When a customer's web browser supports modern image formats such as WebP and AVIF (AV1 Image File Format), your images are delivered in those formats GIFs are automatically converted to the animated WebP format to improve performance by reducing file size

The developer docs go further: the only values you can pass to format are pjpg and jpg. You cannot request WebP or AVIF. Shopify detects client support and picks.

So "converts your images to WebP" isn't a differentiator on Shopify. It's the default.

Resizing caps at 5760px; quality runs 10–90

  • width and height each max out at 5760px
  • Specify one and the other is derived from the source aspect ratio
  • Images are never upscaled beyond original dimensions
  • quality takes an integer from 10 to 90. Omitting it lets Shopify choose based on output format and encoding — and per the docs, "Omitting quality isn't equivalent to setting it to 100."

Is the limit 20 megapixels or 25?

Shopify's own documentation disagrees with itself, on the same page.

The limits section:

Images uploaded to Shopify can't exceed either of the following limits: 20 megapixels / 20 megabytes

The recommendations section, slightly above it:

Upload higher resolution images up to 5000px x 5000px or 25 megapixels.

5000 × 5000 is 25 MP, so "can't exceed 20 MP" and "upload up to 25 MP" sit on the same page. A separate page, Upload and manage files, lists the resolution ceiling as 20 MP — which suggests 20 MP is the real limit and the recommendation line on the theme-images page is the outlier.

The 20 MB figure is consistent everywhere, so treat that as the reliable number. For pixels, plan to lower resolution if you hit an error — the help center notes that a "file is too large" error on a sub-20 MB file is a megapixel problem, not a megabyte one.

Color profiles are stripped at delivery

Easy to miss, expensive to discover late:

When images are displayed on your online store, their color profiles are removed.

Upload something exported in Adobe RGB or ProPhoto RGB and your storefront colors won't match what you saw in Photoshop. The docs explain why: without an embedded profile, browsers assume sRGB. If you sell apparel or cosmetics, convert to sRGB before upload. No app fixes this for you.

What your theme already does

"We'll add srcset" and "we'll add lazy loading" are also already handled on free themes.

Per the developer docs, image_tag outputs by default:

  • width and height attributes derived from the image URL's dimensions and aspect ratio
  • A srcset built from a smart set of default widths up to the maximum in the URL
  • An alt attribute from the media alt text, or the resource title
  • loading="lazy" for images further down the page (the docs also warn: don't lazy load above the fold)
  • object-position when focal point coordinates exist

Look at Dawn's snippets/card-product.liquid and you'll find a six-step srcset — 165w, 360w, 533w, 720w, 940w, 1066w — plus sizes, alt, loading="lazy", and explicit width/height.

Focal point support covers the entire Horizon theme family plus Dawn 7.0.0 and later, among other free themes. Paid themes need checking individually.

The one real gap: assets/

Shopify's performance docs treat theme-bundled images as a separate case:

Images that ship with the theme live in assets/ and are referenced with asset_url. Shopify serves these files as-is, so you author the <img> tag yourself and set alt, width, and height explicitly. An oversized image in assets/ can't be resized, so if a static image needs responsive transformations, then move it out of assets/ and upload it through Files instead.

No auto-resize, no format negotiation. Bundled banners, icons, and paid-theme demo assets can and do sit there at full weight. This is one of the few places an image app has genuine headroom.

Crush: Speed & Image Optimizer says as much in its own feature list: "Manually add & compress images, as Shopify doesn't provide access to all images." A vendor conceding the platform's shape.

What apps can actually change

The fileUpdate mutation in the Admin GraphQL API defines the boundary:

  • Alt text
  • Filename — but "extension must match the original"
  • File content — replace the image while keeping the same URL
  • Product associations

The alt text length limit comes from the help center rather than the API reference: "The maximum length is 512 characters, but 125 or less is recommended."

What they can't reach:

  • Delivery-time format selection (WebP/AVIF negotiation)
  • Delivery-time CDN re-encoding and quality decisions
  • srcset generation — that's the theme's job
  • The file extension itself
  • Auto-resizing of assets/ images

Bulk renaming has two traps

Renaming for SEO is a standard feature. Running it without knowing Shopify's rules causes damage.

First, the URL changes. Per the help center: "When you change your file's URL, the previous URL for that file no longer works." Any blog post with a hardcoded image URL breaks.

Second, reserved suffixes. Filenames can't end in pico, icon, thumb, testing, small, compact, medium, large, or grande — Shopify's CDN reads those as transformation requests. sofa-large.jpg is a landmine.

How free Shopify Magic image editing actually is

Media generation is live as of September 1, 2026, with plan requirements stated two different ways on the same page:

Media generation with Sidekick is only available for stores on the Basic plan, Grow plan, Advanced plan, and Shopify Plus plan. For a limited time, media generation in the file editor is available on all Shopify plans at no additional cost.

File editor: every plan, free, for now. Sidekick: Basic and up. No end date is published for "limited time."

Three capabilities: replace a background with a solid color, transform the image via natural-language prompt, and extend backgrounds past their original borders (outpainting). The documented constraints matter:

  • Default output resolution is 1 megapixel. Larger images are scaled down; smaller ones are scaled up.
  • One AI scene is generated at a time; unsaved sets are deleted when you close the editor.
  • An invisible watermark is applied to every generated image and can't be removed (commercial use isn't restricted).
  • Outpainting isn't available in the Shopify mobile app.

One more thing worth noting if you're evaluating alt-text apps. From the alt text help page:

The media editor might suggest alt text for images where alt text isn't already filled in.

Shopify is now suggesting alt text natively. It doesn't make apps worthless, but "AI-generated alt text" is a shrinking differentiator.

Speed measurement changed, and most guides missed it

The 0–100 "online store speed score" that comparison posts still explain doesn't exist in current documentation. The old URL redirects to the Web performance section.

Today's report is Real User Metrics, not simulated Lighthouse runs. From the FAQ:

  • It combines your home page, most visited product page, and most visited collection page
  • Over the last 7 days
  • From real visitors on Chromium-based browsers (Chrome, Opera, Edge, Samsung Internet) and Firefox
  • Reflecting the top 75% of user experiences
  • Data lags up to 36 hours, retained for 90 days
  • Benchmarked against Shopify stores with similar sales volume

Thresholds:

MetricGoodModeratePoor
LCP≤ 2,500ms> 2,500ms and < 4,000ms> 4,000ms
INP≤ 200ms> 200ms and < 500ms> 500ms
CLS≤ 0.1> 0.1 and < 0.25≥ 0.25

Shopify explains the divergence from PageSpeed Insights directly: PSI uses CrUX data from opted-in Chrome users only, while Shopify's report gathers from all Chromium browsers and Firefox. "We'll improve your PageSpeed score" is a claim about a different instrument than the one in your admin.

Shopify also says this, which is worth quoting to anyone chasing 100:

There's no such thing as a perfect speed score, and the closer you get to 100, the more difficult it becomes to improve further.

Six image apps compared

From each Shopify App Store listing on September 1, 2026. Review counts move daily.

AppFree tierFrom (USD/mo)Top tierRating (reviews)BFSBackup
Tiny SEO Speed Image Optimizer50 images/month, then 3¢ each14495.0 (~2,280)Yes30 days
Avada AI SEO Image Optimizer100 images34.95994.9 (~4,366)YesNot listed
Crush: Speed & Image Optimizer25 MB one-time, product images only4.9919.994.7 (367)No30 days
Hextom: Bulk Image Edit & SEO50 edits/month, unlimited alt, revert included9.9949.994.7 (567)No30–180 days
BOOSTER AI SEO + AEO OPTIMIZERWeekly 50-image sync (no compression)39694.8 (~5,262)YesNot listed
Smart SEO AI & Image Optimizer50 images, 20 AI generations14.9949.994.9 (~852)YesYes (period not listed)

Free tiers use four different units

Look closely at the free column. Tiny SEO: 50 images monthly. Avada: 100 images, with no indication whether that resets. Crush: 25 MB, one-time, product images only. Hextom: 50 edits per month. Booster: a weekly 50-image sync that doesn't include compression. Smart SEO: 50 images.

Counts versus megabytes, monthly versus one-time — these aren't comparable numbers. Crush's in particular is a trial allowance, not a free plan.

Booster's compression starts at $69

BOOSTER AI SEO + AEO OPTIMIZER carries image compression among its feature tags and "Image Optimizer" in its name. But the free plan tops out at "Weekly Image Sync (50 Images)," the $39 Pro tier lists no compression at all, and Image Compression (5GB Storage/month) plus Auto Image Filename SEO Optimization appear only on the $69 Premium tier.

It has the most reviews of the six (~5,262) and also the most one-star reviews (98, or 2%). Responding to an August 2026 review about traffic, the vendor wrote that "SEO is a long-term strategy and initial meaningful results typically take around 4–6 months to develop."

Pick on reversibility

These apps can overwrite your originals, which makes the backup window the actual safety mechanism.

  • Hextom: "Revert edited images" is on the free plan; backups run 30 days (free) → 60 ($9.99) → 90 ($19.99) → 180 ($49.99)
  • Tiny SEO: 30 days on all plans
  • Crush: 30 days on all plans
  • Avada and Booster: no backup mentioned in the listing

Absence from a listing isn't proof of absence in the product. But it is a fact you can verify, and the others can't be, which makes it usable as a selection criterion.

Shopify gives you a fallback too: "Save as new" preserves the original file, and the preview window has a download button for the original, unoptimized file. Pull down your hero images before you let any app loose on them.

Why compression doesn't make you faster

Back to where this started.

A one-star review of Crush: Speed & Image Optimizer from October 26, 2025:

It shows 67% compression in their dashboard, i just picked an image and compared sizes, original image has 600K, compressed image has 800K!!!

Less fraud than category error. The dashboard reports on the source file the app processed. What the browser downloads is whatever the CDN produces — and per Shopify's own docs, that output isn't byte-identical, because the CDN may re-encode or serve a different format entirely.

A 2019 vendor reply on the same app makes the same point from the other side:

After thoroughly investigating the problem, we found that the cause was related to incorrect image dimensions in the templates of your theme. We have advised you via email that this can be easily corrected by changing a liquid tag in your templates

The slowness was in the theme, not the file.

Shopify's own guidance agrees about where the weight actually is: your theme, your installed apps, and third-party code you added manually. With this caveat attached:

Remove unnecessary apps: Uninstalling an app doesn't automatically remove its code from your theme. You might need to contact the app developer for complete removal instructions.

If the optimizer itself injects JavaScript into your storefront, it may be spending on script bytes what it saved on pixels.

Where that leaves you

Shopify stores your uploads uncompressed, re-encodes at delivery, and serves WebP or AVIF based on the client. Your theme emits srcset, sizes, width/height, and loading="lazy" by default. Any app selling compression, WebP conversion, or lazy loading owes you an explanation of what it adds on top of that.

If you are choosing one, the axes are:

  1. Alt text quality — specifically versus Shopify's own native suggestions
  2. Rename safety — does it understand that the old URL dies, and the reserved suffixes?
  3. Backup window, and whether edits can be reverted
  4. Whether it injects storefront JavaScript or writes into your theme

And the work that reliably pays off: images in assets/, images inside blog post bodies, and photography you never converted to sRGB. Those are the places Shopify's automatic pipeline either can't reach or won't render the way you intended.


All figures verified September 1, 2026 against the Shopify Help Center, Shopify developer documentation, and Shopify App Store listings. App pricing, ratings, and review counts change — check the current listing before installing.

RelatedShop Pay Installments Rejects Capital One and Chase Cards — and Two Shopify Pages Disagree About Where Disputes Appear

Shop Pay Installments is free to activate, needs no app, and Shopify never publishes what it costs you — the rate is visible only inside your own admin. It also refuses Capital One and Chase credit cards, restricts monthly plans to debit cards only, excludes gift cards and subscriptions, and can't be turned off for individual products. Affirm can suspend your account for being password-protected, for having a non-English storefront, or for being primarily B2B. And Shopify's Getting paid page says disputes appear in your admin while its FAQ says they don't. If you fail the eligibility gates, the alternative is on-site messaging apps from Klarna, Afterpay, Sezzle, Zip, and PayPal — a category rated between 1.0 and 3.2 stars. Researched September 2, 2026.