CheckoutWorks Shopify Partner

We fix Shopify bugs at a flat $49 per fix. Most fixes within 24 hours.

Fix My Bug →

How to Copy Multiple Shopify Image URLs at Once

·Johnny Chen Founder & Shopify Developer at CheckoutWorks
Cover reading "COPY EVERY FILE / IMAGE URL AT ONCE" beside the Shopify Files list with four files selected and the Copy 4 URLs button highlighted in the bulk action bar.

Shopify keeps your images — along with videos and documents — on the Content → Files page, with a Copy link button on every row. There is no built-in way to select twenty images and copy all twenty URLs at once.

When you need a batch of them, there are four routes: click through the files one at a time, export them with an app, pull them from the Admin API, or add something to the page that does the batching for you. This article covers all four, and ends with a free userscript we built and open-sourced for the last one.

Why there is no bulk copy

The Files page supports bulk actions — you can select many files and delete them together — but copying links is not one of them. The per-row Copy link button puts a single CDN URL on your clipboard, in the form https://cdn.shopify.com/s/files/1/.../files/filename.jpg?v=..., and that is the only copy control the page offers.

For five images that is fine. For forty it is twenty minutes of clicking, pasting, and losing your place in the list.

What a batch of URLs is actually for

We built this for our own writing. Every article we publish pulls screenshots out of the Files library, and each one has to be handed to the tool we are drafting in as a URL — so a single article meant clicking Copy link once per screenshot, in order, without losing track of which image was which. The same thing happens whenever we need to point an outside tool at a batch of images rather than upload them again.

Once you start looking, the pattern is everywhere in a Shopify store:

  • Product CSV imports. The Image Src column wants a public URL on every row.
  • Metafields. Image metafields and rich-text fields reference files by URL.
  • Email and marketing platforms. Templates in Klaviyo, Mailchimp and the like need externally hosted images, not attachments.
  • Handing work to someone else. Sending a designer, developer or agency a list of links beats sending a folder of files.
  • Redesigns and landing pages. Having the links ready in a document saves going back to the admin for each one.

In all of these the file is already uploaded. What you need is its address, in bulk.

Four ways to get a batch of URLs

Approach Good for Cost
Per-row Copy link A handful of images, one-off Free, but linear in the number of files
Admin API (files query) Repeatable exports, filtering, automation Requires an app or API credentials and someone comfortable with GraphQL
A bulk export app such as Matrixify Exporting everything, with alt text, dimensions, and file type alongside each URL Paid app; priced per plan
A userscript on the Files page Ad-hoc batches, picked by eye Free, one-time browser extension setup

An export app is the right answer when you want the whole library in a spreadsheet, with each file's alt text, type, and dimensions next to its URL. The API route suits an export you will run again, that needs filtering, or that has to feed a scheduled job. The userscript route is for when you are already looking at the Files page, you know which files you want, and you want them on your clipboard now.

Copying a batch with a userscript

We built Shopify Files URL Copier for this and released it under the MIT license. It adds a Copy N URLs button next to Delete files in the bulk action bar. Select the files you want, select the button, and every URL lands on your clipboard, one per line, in the order they appear on the page, with duplicates removed.

Shopify Files page with four files selected and a Copy 4 URLs button beside Delete files in the bulk action bar

The bulk action bar with four files selected. Shopify's own bulk actions are on the left; Copy 4 URLs is added by the script.

To install it:

  1. Install Tampermonkey in your browser and make sure userscripts are enabled.
  2. Install the script from Greasy Fork and confirm the prompt.
  3. Open Content → Files in your Shopify admin.

The button appears as soon as you select a file and shows the current count, so you can confirm the selection before copying. The source is on GitHub if you or your developer want to read it before installing — which, for anything that runs inside your admin, is a reasonable thing to want.

What it does and does not do

For images, the original URL is worked out from the thumbnail already on the page, so copying is instant and makes no network requests. For videos and other types whose URL cannot be derived that way, the script uses Shopify's own per-row copy action and collects the result, so your clipboard is still written once with the complete list.

Two limits worth knowing before you rely on it:

  • Selections do not copy across pages. Shopify remembers a selection when you paginate, but only the current page's rows exist in the browser. Rather than handing you a partial list silently, the script compares its count against the one Shopify reports and tells you, for example Copied 50 URLs (30 on other pages not copied). Copy one page at a time.
  • A video gives you the video file, not its poster image. If you want the poster, copy it from that file's detail page.

It sends nothing anywhere. There is no analytics, no tracking, and no external network request; it reads the Files page and writes to your clipboard when you select its button, and that is all.

When to use the API instead

Reach for the Admin API rather than a browser tool when the job is recurring or rule-based rather than visual — every file uploaded after a date, everything matching a naming convention, or an export that has to run on a schedule and land somewhere automatically. A userscript is for the case where a person is looking at a list and picking things out of it. Those are different problems, and the API is better at the first one.

One last thing worth knowing about any userscript, ours included — including the one we wrote for the Theme Editor: it runs inside your admin and can see what you can see, so it is fair to check the source before installing. Shopify can also change how the admin is built at any time. This one is written to degrade rather than break — if the part of the page it attaches to changes, the button moves instead of disappearing, and a file it cannot resolve is reported as skipped rather than quietly copying the wrong thing.

Get Shopify help _

Still stuck on a Shopify issue?

We can diagnose it and get it fixed.

$49 USD

ONE FOCUSED FIX · FIXED OR REFUNDED

Fix my Shopify issue