Find the oversized product images that are slowing down your Shopify store. Paste any store URL and this free tool reads the public product catalog, measures the pixel dimensions of every product image it finds, and ranks your products worst first. No login, no API key, no app install.
One thing to be straight about before you run it. Shopify's public catalog endpoint returns the width and height of each image, but it does not return the file size. That means we cannot read file size from the public catalog endpoint, so this measures dimensions. You will not see a kilobyte figure here, because any kilobyte figure we printed would be a guess dressed up as a measurement, and a guess is worse than nothing when you are deciding which images to replace.
Dimensions still tell you most of what you need. Bytes scale roughly with pixel count at a given compression quality, so an image with four times the pixels of another is usually several times the file. When we flag a product image whose longest side runs past 2048 pixels, we are flagging pixels you almost certainly are not showing anyone, on a file your storefront, your admin, your exports, and your backups all have to carry.
The checker also looks at shape. It compares the aspect ratio of every image inside a single product and reports the spread. Why does that matter? Because a gallery whose images are all 1:1 sits still, and a gallery mixing 1:1, 4:5 and 3:2 either letterboxes, crops, or resizes the container between slides. That last one is the layout shift shoppers feel as a jump when they click through your photos.
You get two things back. An overall summary saying how many of N images exceed 2048 pixels on the longest side, how many megapixels your catalog is carrying above that ceiling, and how many products have mismatched image shapes. Then a per product table, sorted worst first, so you know exactly which products to open on Monday instead of vaguely resolving to fix everything.
This is built by Craftshift, the team behind Rubik Variant Images and Rubik Combined Listings. We spend a lot of time looking at other people's product galleries. Oversized originals and inconsistent image shapes are two of the most common things we find, and both are fixable in an afternoon once you know which products to open.
| What this tool does | Details |
|---|---|
| Data source | The store's public /products.json?limit=250&page=N endpoint |
| Measured | Image width, height, pixel count, aspect ratio, count above 2048 px |
| Not measured | File size in KB or MB. The catalog endpoint does not return it and we do not estimate it |
| Flag threshold | Longest side above 2048 px |
| Shopify's recommended product image size | 2048 x 2048 px for square product photos |
| Shopify's upload ceiling | Up to 5000 x 5000 px, or 25 megapixels, and under 20 MB per image |
| Proxy metric | Megapixels per product, explicitly a dimension proxy, never a byte figure |
| Shape check | Aspect ratio spread across the images of a single product |
| Products scanned per run | Up to 2,000. The endpoint returns 250 products per request and this tool walks up to 8 pages |
| Access required | None. Works on any publicly reachable Shopify storefront |
What "image weight" actually means, and why we report pixels
Weight, in the way front end people use the word, means bytes over the wire. A 1.8 MB hero photo is heavy. A 60 KB thumbnail is light. If we could hand you the byte count of every product image on your store, we would, because that is the number that maps directly to how long your page takes to paint.
We cannot, and the reason is worth understanding. The public catalog endpoint that this tool reads returns a structured description of your products: titles, handles, variants, options, and for each image, a source URL plus its intrinsic width and height. Byte length is not in that payload. It only exists as a response header on the image file itself, and fetching image files is deliberately outside what our fetch service will do.
So we report what is genuinely in the data. Pixel count, meaning width times height, expressed in megapixels. Treat it as a proxy and nothing more. At a fixed compression quality and format, a 24 megapixel image really is going to be much larger than a 4 megapixel one. But the relationship is loose, not exact. A flat white studio shot at 24 MP can compress smaller than a noisy, detailed lifestyle photo at 8 MP, because compression works on detail, not on dimensions.
That looseness is exactly why we refuse to convert megapixels into an estimated KB number for you. The multiplier that would make the conversion honest depends on your photography, your format, and Shopify's own encoder settings. Pick a multiplier and you have invented a statistic. We would rather show you a real measurement of the wrong thing than a fake measurement of the right thing.
Once you know which products are carrying the most pixels, getting real byte figures is easy anyway. Open one of the flagged product pages, open your browser's network panel, filter to images, and read the transferred column. Thirty seconds per product, and the numbers are true.
Why 2048 pixels is the line we draw
Shopify's own guidance recommends 2048 x 2048 pixels for square product photos. That size leaves room for two times pixel density and for zoom on a typical desktop gallery, without going further.
Anything past that starts paying for itself in strange currencies. Longer uploads. Slower bulk edits. Bigger exports and backups. A first request to the image CDN for an uncached size that takes noticeably longer to generate. And in the cases we care most about, the original itself being served to a shopper.
Is 2048 a hard rule? No, and anyone who tells you it is has not looked at enough stores. A furniture retailer whose customers zoom into fabric weave has a real reason to hold larger originals. A jewellery store showing hallmark detail does too. What we are flagging is not a violation, it is a question: do you actually use these pixels, or did they arrive because someone dragged files straight off a camera card?
For most catalogs the answer is the second one. Modern phone and camera output lands somewhere between 12 and 50 megapixels, and nothing in the upload path stops you. Shopify accepts product images up to 5000 x 5000 px, or 25 megapixels, as long as the file stays under 20 MB. Do the arithmetic on that ceiling: a 2048 x 2048 image is about 4.2 megapixels, so a file sitting at the 25 megapixel limit is carrying roughly six times the pixels the recommendation asks for, and nothing ever complains.
How Shopify's image CDN resizes, and when an oversized original really costs you
Give Shopify credit where it is due. The image CDN resizes on request. A theme that asks for a 720 pixel wide version gets a 720 pixel wide version generated and cached, regardless of how big your original is. Themes built on the modern standard also emit a srcset, so a phone downloads a phone sized file. Shopify's CDN serves WebP to browsers that support it, which cuts bytes again without you doing anything.
Which means the honest version of the story is this: an oversized original is not automatically wasted bytes on every page load. If your theme is well behaved and every image is requested at an explicit width, the CDN is quietly protecting you.
Now the cases where it is not protecting you, and there are more of them than you would like:
- Lightbox and zoom. Click to zoom very often loads the original at full size, because that is the point of zoom. On a 6000 pixel original that is a multi megabyte download triggered by a single tap.
- Page builder sections and app blocks. Custom sections written in a hurry frequently output the raw image source with no width parameter at all. The CDN then has nothing to resize to and hands over the original.
- Rich text and metafield images. An image dropped into a product description, a size guide, or a custom metafield usually bypasses whatever resizing discipline your product template has.
- Feeds and integrations. Shopping feeds, marketplace syncs, and email templates often take the canonical source URL. Some of those destinations have their own size limits and will reject or downscale badly.
- The first visitor to any new size. Cached derivatives are fast. Generating one from a 24 megapixel source is not. Whoever asks first waits.
So the flag this tool raises is a risk flag, not a verdict. It says: this product is holding pixels that at least one of the paths above is going to hand to a real shopper at full size. Products at the top of your results table are where that bill is biggest.
Aspect ratio consistency, and the gallery jump nobody admits to
Open a product with six photos. Five are square, one is a wide banner someone made for a campaign and dropped into the gallery. What happens when a shopper swipes to it?
Depends on the theme, and every answer is bad. Some themes crop it, so the campaign banner loses its ends. Some letterbox it, so there is a grey band above and below and the product looks smaller than the others. Some resize the container to fit, which shoves everything below the gallery down the page mid interaction. That last behaviour is a Cumulative Layout Shift event, and CLS is one of the three Core Web Vitals Google measures, with 0.1 or below counted as good.
This tool computes the aspect ratio of every image inside each product and reports the spread between the narrowest and widest. A spread of zero means every image is the same shape and your gallery will sit perfectly still. A large spread means it will not.
Our opinion, and we will defend it: aspect ratio consistency is worth more to most stores than shaving a few hundred kilobytes. A shopper does not perceive 200 KB. They absolutely perceive the page moving under their thumb. Fix shape first, then fix size.
The fix is boring and effective. Pick one ratio for your catalog, 1:1 or 4:5 for most, and pad rather than crop when a source photo does not match. Padding with your background colour keeps the subject intact and keeps the container still.
How to read your results
The summary at the top is the headline. Everything else is triage.
| Column | What it tells you | What to do about it |
|---|---|---|
| Images | How many images the product has in the public catalog | Very low counts on a multi variant product are a separate problem worth checking |
| Over 2048 | How many of them have a longest side past the recommended ceiling | Anything above zero is a candidate for a downscale pass |
| Largest | The dimensions of the single biggest image on the product | If this is at or near 5000 px, the upload ceiling, someone went straight from a camera |
| Total MP | Sum of pixel counts across the product's images, in megapixels | Proxy for weight. Compare products, do not read it as a byte figure |
| Excess MP | Megapixels above what the same images would hold if scaled to a 2048 px longest side | This is the sort key. The top of the table is where fixing pays most |
| Ratio spread | Difference between the widest and narrowest aspect ratio on the product | This tool flags a spread above 0.05. Open the product and click through the gallery to see whether it letterboxes, crops or moves |
Work down until the Excess MP column stops changing much. If the numbers are flat all the way down, the whole catalog came off one source and needs one bulk pass rather than triage.
How to fix oversized images across a whole catalog
Fixing one product is trivial. Fixing four hundred is a workflow problem, and the workflow that actually finishes looks like this.
Step 1: Get the list. Run this checker and copy out the worst products. That is your work queue, ordered by payoff, and it stops you from opening products at random.
Step 2: Pull the originals down. Downloading images one at a time from the admin is where most of these projects quietly die. Our CS Export Product Images app pulls product images out in bulk with filenames that map back to the product, which is what makes the round trip possible at all.
Step 3: Resize, then compress. Target 2048 px on the longest side and export at a sensible JPEG quality. Our free image resizer has a fixed 2048 x 2048 Shopify preset that either crops to square or pads to square, one image at a time, so it fits a square catalog or a short list of fixes. If your catalog is not square, or you have four hundred files to get through, use a desktop batch resizer that caps the longest side and keeps the original aspect ratio. Our image compressor then handles the quality pass in the browser, also one image at a time, and your files never leave your machine.
Step 4: Keep the filenames meaningful. While every file is open on your desk anyway, this is the cheapest moment you will ever get to fix naming. IMG_4471.jpg tells search engines nothing. navy-linen-shirt-front.jpg tells them plenty. Our image filename generator and bulk image renamer exist for exactly this step.
Step 5: Put them back. Re uploading by hand is the other place these projects die. CS Smart Bulk Image Upload matches images back to products in bulk, so a four hundred product pass is an upload rather than four hundred separate visits to the admin.
Step 6: Re run this checker. Compare the summary against your first run. If excess megapixels dropped by most of what you started with, you are done. If not, you missed a batch, and the table will tell you which one.
A note on ordering. Do not start this project by compressing everything to death. Compression artefacts on a product photo cost you sales in a way that is much harder to see than a slow page. Downscale first, because removing pixels you never display is free quality wise, and only then push on quality settings if you still need bytes.
Common mistakes
- Trusting an estimated file size. Plenty of tools will happily print "approximately 1.4 MB" from dimensions alone. That number came from a multiplier someone picked. If a tool will not tell you how it derived a figure, do not plan work around it.
- Uploading straight from the camera. The single most common cause of a heavy catalog. Nothing in the upload path pushes back until you hit 25 megapixels or 20 MB, so the habit survives for years.
- Over compressing instead of downscaling. Dropping JPEG quality to 40 to hit a byte target leaves visible blocking on fabric, skin and gradients. Cutting a 6000 px image to 2048 px removes far more bytes and costs nothing visible.
- Uploading images that are too small. The opposite failure, and it is worse. An 800 px image stretched into a 1400 px gallery slot looks soft on every modern screen. The CDN cannot invent detail that was never there.
- Mixing aspect ratios inside one product. Covered above. It is the most visible of all these issues and the one merchants notice last.
- Fixing images and forgetting alt text. If every file is being touched anyway, adding alt text in the same pass costs almost nothing. Doing it as a separate project later costs the whole project again.
- Assuming the scan covered everything. The endpoint returns 250 products per request and this tool walks up to 8 pages, so 2,000 products is the most it will read in one run. If the result says the run hit that ceiling, the store has more, and its largest offenders may be outside the sample.
- Replacing images without checking variant assignments first. Deleting and re uploading an image can detach it from the variants it was assigned to. Audit assignments before and after, not just at the end.
When to run this check
| Situation | Why it is the right moment |
|---|---|
| Your PageSpeed or Core Web Vitals report flags large images | Google tells you images are the problem but not which products. This tells you which products. |
| Before a theme migration | A new theme requests different sizes. Going in with consistent, correctly sized images removes an entire class of migration surprise. |
| After a bulk import from a supplier or dropshipping feed | Imported catalogs bring whatever the supplier had. Mixed shapes and enormous originals are the norm. |
| Before a peak trading period | Mobile shoppers on poor connections are the most price sensitive and the least patient. Do this in October, not December. |
| When your gallery visibly jumps between photos | Check the ratio spread column. It is almost always the answer. |
| Auditing a store you are about to buy or take over | Image debt is invisible in a profit and loss statement and expensive to clear. Price it in. |
| Quarterly, as maintenance | Catalogs drift. New products arrive from new people with new habits. |
Tips and best practices
- Pick one target size and write it down. 2048 x 2048 for square catalogs, or 2048 on the long side for a 4:5 catalog. Put it in whatever document your photographer and your freelancers actually read.
- Pad, do not crop, when a photo does not match your ratio. Padding preserves the product. Cropping eats the product.
- Let Shopify do the format conversion. The CDN already serves WebP where it is supported. Uploading a well compressed JPEG or PNG at the right dimensions is enough. You do not need to pre convert.
- Check your zoom behaviour on a real phone. Desktop broadband hides everything. Load a flagged product on a phone with the network throttled and tap zoom. That is the experience you are actually shipping.
- Audit variant coverage in the same session. While you are in the gallery anyway, our variant image checker shows which variants are missing a featured image.
- Get real byte numbers for your top five. Browser network panel, filter to images, read the transferred column. Five products is enough to know whether your dimension problem is also a byte problem.
- Re run after every bulk import. Imports are where consistency goes to die, and they are also the easiest moment to catch it, before anyone has customised anything.
- Keep your high resolution masters somewhere else. Your storefront is not an archive. Keep the 6000 px files in cloud storage and upload the 2048 px versions.
Related Tools
- Image Compressor. Compress product images in your browser before uploading them.
- Image Resizer. Resize a single image to Shopify's 2048 x 2048 product preset, cropping or padding to square.
- Product Image Audit. Check your product images against a checklist of image best practices.
- Shopify Store Analyzer. Confirm a store is reachable and see its products, theme and collections.
- Variant Image Checker. See how images are distributed across a product's variants.
- Alt Text Generator. Write descriptive alt text for product images while you are fixing them.
Our Shopify Apps
Rubik Variant Images Rubik Combined ListingsSmart Bulk Image Upload Export Product Images Bulk Delete Products
What does this Shopify product image weight checker measure?
It reads the store's public product catalog endpoint and measures the pixel dimensions of every product image it returns. For each product it reports the image count, how many images have a longest side above 2048 pixels, the largest single image, total megapixels, excess megapixels above the 2048 ceiling, and the aspect ratio spread across the product's images. Products are ranked worst first by excess megapixels.
Why does it not show file size in kilobytes?
Because we cannot read file size from the public catalog endpoint, so this measures dimensions. The catalog returns each image's source URL, width and height, and nothing about byte length. Byte length lives on the image file itself, and our fetch service deliberately refuses non text responses, so it cannot request image files at all. We could multiply pixels by a made up compression factor and print a kilobyte number, but that would be an invented statistic, and you would then make real decisions based on it.
How do I get the real file size of a product image?
Open the product page, open your browser's developer tools, go to the network panel, filter to images, and reload. The transferred column gives you the actual bytes sent for each image at the size your theme requested. Do this for the five worst products from your results and you will know within a couple of minutes whether your dimension problem is also a byte problem. Google PageSpeed Insights will also name specific oversized images on a single page.
What image size does Shopify recommend for product photos?
Shopify recommends 2048 x 2048 pixels for square product photos. Shopify accepts product images up to 5000 x 5000 px, or 25 megapixels, under 20 MB, but the accepted maximum and the recommended size are very different things. Note that the 20 megapixel figure you may have seen applies to a different surface, the Files area, theme assets and blog images, which carry their own ceiling. We wrote up which limit applies where in the 25 MP image limit error fix. The recommendation gives you enough resolution for high density screens and for zoom, without carrying pixels no shopper will ever see.
Is an image wider than 2048 pixels always a problem?
No. Some catalogs have a real reason for larger originals, particularly when customers zoom hard into texture or fine detail, such as fabric, jewellery or artwork. Treat the flag as a question rather than a verdict. If you deliberately keep 4000 pixel originals so zoom looks sharp, that is a legitimate choice. If the flag is there because someone dragged files off a camera card, it is not a choice, it is an accident.
Does Shopify not resize my images automatically anyway?
It does, when the theme asks it to. Shopify's image CDN generates and caches resized versions on request, and well built themes emit a srcset so smaller screens download smaller files. The CDN also serves WebP to browsers that support it. What the CDN cannot protect you from is any code path that requests the original directly, and those are common: click to zoom, lightboxes, custom sections that output the raw source URL, images inside product descriptions and metafields, and feeds that consume the canonical image URL.
What is the "excess megapixels" column?
It is the number of megapixels a product is carrying above what the same images would hold if each one were scaled down so its longest side sat at 2048 pixels. Aspect ratio is preserved in the calculation. It is a dimension measurement, not a byte measurement, and it exists to give you a sort order. The product at the top of the table is where a downscale pass removes the most pixels.
Why do inconsistent aspect ratios matter?
A product gallery reserves space based on image shape. When shapes differ between images in the same product, the theme has to crop, letterbox, or resize the container as the shopper moves between photos. Resizing the container pushes the rest of the page around, which registers as Cumulative Layout Shift, one of the three Core Web Vitals, where 0.1 or below is counted as good. Cropping and letterboxing do not affect the score but they make the gallery look careless.
What aspect ratio should I use for Shopify product images?
Pick one and apply it to everything. Square, 1:1, is the safest default and matches Shopify's 2048 x 2048 recommendation. Portrait 4:5 works well for apparel because it gives more vertical room for a full garment and takes up more of a mobile screen. The specific ratio matters much less than using the same one everywhere. When a source photo does not match, pad it with your background colour rather than cropping the product.
How many products does this tool scan?
Up to 2,000 in one run. The public catalog endpoint returns a maximum of 250 products per request, so the tool asks for page after page until a page comes back short or it has read 8 pages, whichever happens first. If the result says the run stopped at that ceiling, the store may hold more and you are looking at a sample rather than a full inventory. Draft and unpublished products are not returned at all.
Can I check a store that is not mine?
Yes. The catalog endpoint is public on any Shopify storefront that has not been password protected, and it is the same data any visitor's browser can request. Checking a competitor tells you whether their pages feel fast because of engineering or because their photography discipline is better than yours. Password protected, offline, and headless storefronts may not respond.
Do oversized images hurt Core Web Vitals?
They can hurt Largest Contentful Paint, where 2.5 seconds or less is counted as good, because on a product page the largest contentful element is usually the main product photo. If that photo is served at its original size instead of a resized version, LCP suffers directly. Mismatched image shapes hurt Cumulative Layout Shift instead. Different vitals, different causes, both traceable to the image dimensions this tool reports.
What is the smallest product image I should upload?
Upload at Shopify's recommended 2048 pixels on the longest side wherever you can. Below that you are asking the browser to stretch the file into a modern gallery slot, and it looks soft on a high density phone screen. This tool flags anything with a longest side below 800 pixels, which is our own floor rather than a Shopify rule. Too small is a worse problem than too large, because the CDN can always shrink an image and can never add detail that was not captured.
How do I fix oversized images across hundreds of products?
Export the images in bulk, resize them offline with a fixed maximum longest side, then re upload in bulk. CS Export Product Images handles the export side and CS Smart Bulk Image Upload handles the return trip, which is what turns a project of hundreds of manual admin visits into two operations. Our free image resizer and image compressor cover the middle step in the browser. Downscale before you compress, because removing pixels you never display costs no visible quality.
Will replacing product images break my variant image assignments?
It can. Deleting an image and uploading a replacement creates a new image record, and the variants that pointed at the old one may end up pointing at nothing. That is true whatever is driving your gallery, including Rubik Variant Images, which assigns a whole image set to each variant instead of one featured image and stores that mapping in Shopify metafields. A replaced file is a new file either way, so check variant coverage before and after any bulk image replacement rather than only at the end.
Why does the tool show fewer images than I see in my admin?
Three usual reasons. The public catalog returns published products only, so anything in draft is missing. It returns 250 products per request and this tool reads at most 8 pages, so very large catalogs are sampled. And it returns product level images, so images that live in a product description, a metafield, a collection banner, or a theme section are not part of this audit. Those can be just as heavy, so check them separately with PageSpeed Insights on a real page.