Snug Gallery / Guides

Gallery upload failed: every error message explained

What each Snug Gallery upload error means, from file too large and unsupported type to the plan cap, and the fix for each. 20 MB images, 250 MB video.

Most uploads to a gallery take a few seconds and you never think about them again. The ones you remember are the ones that stop with a short red sentence. This guide lists every sentence the Snug Gallery uploader can show, what the app was checking when it produced it, and what to change so the next attempt goes through. It is written for the gallery editor's upload page; the customer photo form has its own, smaller set of rules covered at the end.

The order the checks run in

Knowing the sequence explains why you see one error and not another. When you drop files on the upload page, the browser first uploads the whole batch to the app. The app checks the request size, then that the gallery exists and belongs to your store, then whether your plan has room for that many new items. Only after those pass does it look at each file in turn: type, then size, then a hand-off to Shopify Files in three steps (reserve an upload target, push the bytes, register the file). A failure at any step stops that file and reports the step's message.

Two things follow. A plan limit error appears before any file is inspected, so fixing a wrong file type will not make it go away. And because each file is checked separately, a batch of twelve can succeed for eleven and fail for one; the editor shows the failing filename in the message so you know which one.

File is too large

This is the very first check and it looks at the whole request, not at one file. The app refuses anything over roughly 251 MB in a single submission, which is the video ceiling plus a little room for the form itself. You will see it when you select several large videos at once, or one video that is over the limit. The fix is to send fewer files per batch, or to compress the video; a 1080p clip of under a minute exported at a sensible bitrate is usually well under 100 MB.

If you hit this with images alone, something is off with the images. A camera JPEG is rarely above 15 MB; a batch of fifty of them can still add up past the ceiling, so split the batch.

The plan allows N items per gallery

The message names your plan and the cap: "The Free plan allows 25 items per gallery." It means the gallery already has that many items, or would exceed it with the files you selected. On Free the cap is 25 items in the one gallery; on Standard and Unlimited it is 1,000 per gallery. Images and videos count the same. The check happens before any bytes are processed, so nothing was uploaded.

Delete items you no longer need, split the content across galleries on a paid plan, or upgrade. The plan comparison guide covers what changes at each tier. One exception worth knowing: replacing an existing item's media does not count as adding one, so a full gallery can still have its images swapped.

Not a supported image or video type

The app accepts JPEG, PNG, GIF, WebP, HEIC and AVIF for images, and MP4, MOV (QuickTime) and WebM for video. Anything else, including SVG, TIFF, BMP, PDF, AVI and MKV, produces this message with the filename in front of it. Convert the file; for SVG logos, export a PNG at twice the display size, and for TIFF scans, a JPEG at quality 85 or so is indistinguishable in a gallery.

A subtler cause is a browser that reports no type at all. Some browsers, especially on Linux, send MOV and HEIC files with an empty type field. The app falls back to the file extension in that case, so a file literally named clip.mov goes through. A file with no extension or a misleading one (a PNG renamed to .jpg usually still works because the type field is right; a HEIC saved as .jpeg from a phone export sometimes does not) is the thing to look for. Renaming to the correct extension fixes it.

Larger than 20 MB, larger than 250 MB

Per-file limits, checked after the type. Images may be up to 20 MB and videos up to 250 MB. The message names the file. For images over 20 MB you are nearly always looking at an uncompressed PNG export or a RAW conversion; re-export as JPEG or WebP and it will drop to a tenth of the size with no visible change on a web page. Shopify will generate the resized versions the storefront actually serves, so uploading a 30 MB original buys you nothing.

For video over 250 MB, trim or re-encode. If the clip genuinely needs to be long and large, the video gallery guide compares hosting it on YouTube or Vimeo and embedding instead.

Could not prepare upload, upload failed, could not save file

These three come from the hand-off to Shopify Files, in order. "Could not prepare upload" means Shopify declined to reserve an upload target, which in practice happens when the store's file storage is unavailable or the request was malformed; it is rare and usually clears on retry. "Upload of filename failed (status)" means the bytes did not reach Shopify's storage; a status in the 500s is on their side and worth a retry in a minute, a 403 usually means the reservation expired because the upload was slow, so try a smaller batch. "Could not save file" means the bytes arrived but Shopify rejected the file record, for example because the content did not match the declared type.

None of these leave a half-finished item in your gallery. The gallery item is created only after Shopify confirms the file, and the editor attaches the whole batch in one step at the end, so a failure in the middle of a batch leaves the gallery exactly as it was for that file.

What a successful upload does with your files

Each image's alt text is pre-filled from the filename with the extension removed and dashes and underscores turned into spaces, so linen-shirt-front.jpg becomes "linen shirt front". Name files before uploading and you have done most of the alt text work. Videos go into a processing state on Shopify's side; the editor polls until Shopify reports them ready, which for a short clip is typically under a minute, and only then are they playable in the gallery. The upload button shows progress as "Uploading 3/12" while it works.

Files land in your store's Files area, which means they are yours even if you uninstall the app. The Shopify Files versus app-hosted images guide explains why that is the design.

Customer photo uploads have their own limits

The storefront form that lets shoppers submit photos is stricter on purpose. It accepts JPG, PNG, WebP and HEIC only, up to 10 MB per file, and it checks the file's real content rather than trusting the filename or the browser, so a renamed PDF is rejected regardless of extension. HEIC is accepted because that is what iPhones produce by default, but browsers rarely decode it, so the form shows the filename instead of a thumbnail while the shopper waits. The photo still arrives in your moderation queue as a normal image. If a customer reports that their photo would not upload, the size limit is the first thing to ask about.

Frequently asked questions

Why did eleven files upload and one fail?

Each file is checked and sent on its own after the batch-wide checks pass. The failing file's name is in the message. Most often it is the one file that is a different type or over the size limit; fix that file and upload it alone.

The error says the plan allows 25 items but I only see 20 in the gallery. Why?

The check counts the items already in the gallery plus the files you selected. Twenty items plus six files is twenty-six, which is over the cap. Upload five, or remove items first.

Does uploading a huge image give me better quality on the storefront?

No. Shopify generates the resized versions the storefront serves, so anything beyond about 2,500 pixels on the long edge is never shown at full size. A 2 to 4 MB JPEG looks identical to a 20 MB one in a gallery and uploads ten times faster.

My MOV file is rejected as unsupported on one computer but works on another. Why?

Some browsers send no file type for MOV and HEIC, and the app then relies on the file extension. If the file has been renamed or has no extension, the fallback has nothing to use. Make sure the name ends in .mov and try again.

More guides