Why did reimporting the same photos break all my old Shopify image links?

Deleting a product or image in Shopify permanently retires its CDN address — reimporting the same picture later creates a brand-new link, and anything pointing at the old one stays broken.

importimagesCDNCSVmigration

What's going on

You deleted some product images — maybe while cleaning up a catalog, undoing a bad bulk import, or migrating from another platform — and later reimported the exact same pictures, same filenames, same products, expecting everything to slot back into place. Instead, anything that referenced the old image link is now broken: a hardcoded URL in a theme section, a saved link in a blog post or email campaign, an external ad or shopping feed, or just a bookmark to the image itself. The reimport worked, the images show up fine in the admin, but the old link is dead and stays dead.

This trips people up because it feels like it should be recoverable — you re-uploaded the identical file, so why isn't the identical link restored? The honest answer is that Shopify doesn't work that way: every image you add gets its own unique address the moment it's uploaded, and that address is retired the instant the image or the product it belongs to is deleted. There's no version history or "restore original URL" option for product images once they're gone.

This is especially painful after a large catalog cleanup, a failed CSV import that you rolled back by deleting and starting over, or a store migration where images got re-pointed mid-project. The damage is often invisible until someone reports broken pictures on a page, in an email, or in search results days or weeks later.

Why it happens

Every file you upload to Shopify, including product images, is stored as its own object and served from its own generated address, typically with a unique identifier in the path. That address points to one specific stored file, not to "the image for this product." When you delete the image, or delete the product it's attached to, Shopify removes that stored file and its address with it, permanently.

When you later reimport the same picture, whether by uploading it manually or feeding a CSV with an image column, Shopify treats it as a brand-new upload. It has no way to recognize the file as one it has seen before, so it creates a new stored object with a new address, even if the image itself, the filename, and the product are all identical to before.

This is standard behavior for how these file-storage systems generally work, not a bug specific to one Shopify feature — the same thing happens with most cloud storage services when you re-upload a deleted file. It only becomes a visible problem when something outside Shopify, like a theme, a marketing tool, or a search index, kept a hardcoded copy of the original link instead of pulling the current one from the product.

5 ways to fix it

1

Never treat Shopify's CDN URL as your master copy — keep the source file yourself

Store your original image files somewhere you control: your computer, a shared drive, Dropbox, Google Drive, or a proper asset library. Treat the CDN link Shopify generates as disposable output, not the file itself. If you ever need to re-add an image, upload from your own stored copy rather than trying to reuse a URL you copied out of the admin or an old export. This one habit prevents the whole problem from recurring.

2

Before deleting anything, export your current image links so you know what will break

Use Shopify's product CSV export to pull a list of current image URLs tied to each product and variant before you delete or reimport anything. If images are already gone and something else broke — a theme section, a blog post, an external ad, an email template — search your site content and code for the old image paths so you know exactly what needs fixing. This costs nothing and uses tools already built into Shopify.

3

Reimport by uploading the actual file again, then update every place that referenced the old link

When you reimport via CSV or the admin, point it at your saved image file (or a stable URL you control) and let Shopify generate a new link — don't try to force the old one back, since Shopify doesn't offer a way to reuse a retired file address. Once the new link exists, go update any theme customizations, custom code, apps, or marketing pixels that had the old path hardcoded. It's manual work, but it's reliable.

4

For large catalogs, use a bulk import method that can match products automatically

If you're reimporting images across hundreds or thousands of products, a plain CSV re-upload makes it easy to mismatch images to the wrong product. Look for an import method or app that can match by SKU or handle and reattach images accordingly — it won't stop Shopify from generating new URLs, but it cuts down on manual pairing errors.

5

If broken image links are already live, add a redirect or fallback while you fix the source

You can't make Shopify serve an image at its old, deleted address again. But if a whole page URL went dead along with the image, Shopify's URL redirect tool (in the Online Store section of the admin) can send visitors to a working page instead of a dead end while you sort out the underlying image references.

Bottom line

There's no setting that makes Shopify restore an old image address once the underlying file has been deleted — the fix is procedural, not technical. Keep your own master copies of images, export and record URLs before you delete anything, and treat every reimport as a fresh upload whose new links need to be checked and propagated everywhere they're used. This isn't something an app can quietly solve, since it comes from how file storage works, not a missing feature. The realistic fix is a habit — and maybe a simple checklist — around never deleting images you might need to re-link later.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.