How-To Guide

How to Bulk-Assign GTINs (UPC/EAN) to Shopify Variants Without Doing It One Product at a Time

If you've licensed a GS1 Company Prefix and you're now opening one variant at a time to paste in a GTIN, you already know this doesn't scale. A prefix can cover thousands of products; the Shopify admin has no bulk field for barcodes, so the obvious path is a CSV. This guide covers the CSV route Shopify actually supports, where it breaks down at scale, and how to catch a duplicate GTIN before Amazon or Walmart does.

Bulk-assigning GTINs to Shopify variants from a GS1 Company Prefix, with duplicate detection built in
Bulk-assigning GTINs to Shopify variants from a GS1 Company Prefix, with duplicate detection built in

Is this guide for you? This is for stores that already hold a GS1 Company Prefix and need to get GTINs onto a large batch of variants at once. If you don't have a prefix yet, start with our GS1 Company Prefix setup guide first. If you resell or dropship other brands' products, bulk-assigning your own prefix to someone else's product creates the exact mismatch a GS1 Company Prefix is meant to prevent; you need the barcodes those brands already assigned, not new ones from your own block.

Why Assigning GTINs One Variant at a Time Doesn't Scale

Shopify's product editor gives every variant its own Barcode field, and that field is exactly what most setup guides walk you through: open the variant, paste the GTIN, save, repeat. For a handful of products that's a ten-minute job. For a real catalog it isn't. A store with 40 products and an average of 6 variants each is 240 individual saves, each one a chance to mistype a digit or paste the same number twice.

Retrospillkongen, a Norwegian Shopify store, ran into exactly this at a larger scale:

"Excellent app and outstanding support. We run a Shopify store with more than 20,000 SKUs and manage our own GS1 Norway company prefix. Before finding GS1 Assistant, our workflow relied heavily on manual Excel spreadsheets"

Retrospillkongen, Norway · June 2026

Twenty thousand SKUs is an extreme case, but the shape of the problem is the same at 200. Past a certain point, one-at-a-time assignment is where mistakes creep in.

ONE PRODUCT, SIX VARIANTS 6 individual saves One barcode field at a time × 40 products 240 individual saves

The Two Ways to Bulk-Assign GTINs in Shopify

Both work. The difference is what happens after you hit import.

Shopify's CSV export/import GS1 Assistant
Needs an app No Yes
Duplicate-check pass included No, you check manually Yes, a separate pass after assignment
Pulls GTINs from your own prefix automatically No, copy-paste by hand Yes
Best for A one-off, small batch Ongoing or large batches

Shopify's Native CSV Export/Import (No Format or Duplicate Checking)

Shopify's own product CSV has a Variant Barcode column, and this genuinely works: export your products, edit that column, re-import, and every variant's barcode field updates in one pass. You don't need an app for it.

The limitation is what Shopify's import doesn't do:

  • Check whether a value in the Variant Barcode column is a real, correctly formatted GTIN
  • Check whether the same GTIN appears twice in your file

Both pass the import silently. The mistake doesn't surface until a channel that does check (Amazon, Walmart Marketplace) rejects the listing weeks later . Google flags a different set of GTIN problems, covered in our guide to Merchant Center GTIN errors.

Bulk-Editing the Barcode Field in a CSV

The mechanics:

  1. From Shopify admin, go to Products, then Export, and choose "All products" (or a filtered selection) as a CSV for Excel or Google Sheets.
  2. Open the file and find the Variant Barcode column. Fill it in for the rows you need, one row per variant, not per product.
  3. Format the GTIN column as plain text before you save it. Spreadsheet software silently reformatting a long number into scientific notation is a separate failure mode, covered below.
  4. Re-import through Import, matching on Handle (the column Shopify uses to identify which product and variant a row belongs to) so the import updates existing variants instead of creating duplicates.

If the import fails partway through, for example because one row has a malformed value, Shopify reports which rows failed rather than rejecting the whole file. It's worth re-checking the rows on either side of a reported failure too, since a parsing error on one row can throw off which value lands in which cell for the row after it.

Bulk-Assigning From Your Own GS1 Prefix With an App

The alternative is assigning directly from your licensed prefix inside Shopify: select a batch of variants, assign GTINs from a named prefix in one action, and check for duplicates as a separate pass once the batch is done, so a repeated number gets caught before it ships rather than after a channel rejects it.

Skip the one-at-a-time grind.

Assign a whole batch from your prefix at once, free for your first 20 GTINs. Retrospillkongen runs 20,000+ SKUs on their own GS1 Norway prefix; GS1 Assistant, the app we make, handles the batch assignment and the duplicate check, while the prefix itself still comes from GS1.

Get GS1 Assistant

Step-by-Step: Assign Barcodes From Your GS1 Prefix in Bulk

  1. Add your prefix once, in GS1 Assistant's setup screen. This is the "Manage Your Company Prefixes" feature on the app's Free plan , and it's the same first step whether you're assigning one GTIN or a thousand. You'll see your remaining GTIN capacity for that prefix as soon as it's added, worth checking before you start a large batch (more on why in Common Mistake 5 below).

  2. Filter or select the batch of variants you're working through in GTIN Manager, using the state, status, or collection filters to narrow to the ones that need attention.

    GS1 Assistant's GTIN Manager showing the filter controls (GTIN State, Status, Collection, Company Prefix) and bulk-action toolbar (Assign GTIN, Unassign Barcode, Download Import File, Download Barcode) above a list of variants
    Step 2 · GTIN Manager's filter and bulk-action toolbar
  3. Assign from your prefix. Pick the prefix, confirm, and the GTIN is pulled from your remaining capacity and written to the variant.

    GS1 Assistant's Select Company Prefix dialog showing prefix 5065023978 with 53 GTINs remaining and an Assign button
    Step 3 · The assign-from-prefix step
  4. Run duplicate detection across your whole catalog as its own pass once the batch is assigned. A new GTIN can collide with any number already in use, whether it came from this batch or an earlier one, and a repeated GTIN from a bulk operation is the single most common way a duplicate enters a catalog. It passes a basic format check every time.

    GS1 Assistant's GTIN Manager filtered to duplicate GTINs, listing two barcodes each shared by several variants
    Step 4 · GTIN Manager filtered to duplicates

    The duplicate view shows both variants sharing a number side by side. Reassign a fresh GTIN to whichever variant is wrong using the same assign-from-prefix action as step 3, and leave the correct one untouched.

  5. Confirm the batch. Spot-check a handful of the products you just assigned rather than assuming a large run succeeded end to end. Open two or three from different points in the batch, not just the first and last, since an import that fails partway can still report success for the rows that did complete.

Common Mistakes When Bulk-Assigning GTINs

1. Letting a Spreadsheet Mangle the GTIN Itself

Excel and Google Sheets both treat a long, all-digit string as a number by default, which means a 13-digit GTIN can silently become scientific notation (8.71234E+12) or lose its leading zero. This happens before the file is even re-imported, and it's the first thing to check if a barcode that looked right on export comes back wrong. Format the GTIN column as plain text before you touch it.

2. Copy-Pasting the Same GTIN Down a Spreadsheet Column

Dragging a fill handle or pasting a value across a range of rows is fast, and it's exactly how one GTIN ends up assigned to every variant in the range instead of one each. Shopify's import doesn't compare barcode values row to row, so every one of those rows saves without a warning.

3. Reusing One GTIN or UPC Across Multiple Variants of the Same Product

Each size, colour, or bundle needs its own GTIN. A shared GTIN across variants is a common reason a listing gets rejected later, because Amazon or Walmart sees the same number tied to what looks like two different products.

4. Trusting the Import Because It Saved Without Errors

A duplicate that made it through a bulk import passes Shopify's own save silently, with no warning at the time. It only surfaces once Amazon or Walmart cross-references the number against the GS1 database, which can be weeks after the product went live.

VARIANT A SKU: SKU-142 5065023978144 VARIANT B SKU: SKU-167 5065023978144 DUPLICATE

5. Running Out of Prefix Capacity Mid-Batch

A GS1 Company Prefix only covers as many products as it was sized for at signup. Assigning a large batch without checking what's left can mean the batch stalls partway through with variants still unassigned. GS1 Assistant shows GTINs remaining per prefix. Check capacity before starting a batch rather than discovering the shortfall mid-run.

Frequently Asked Questions

Can I bulk-edit the barcode field directly through Shopify's own CSV import?

Yes. The Variant Barcode column in Shopify's product CSV updates every variant's barcode field on import. It works, and it doesn't require an app. What it doesn't do is check the values you put in it, so it's on you to keep the GTINs correctly formatted and free of duplicates before you re-import.

How many GTINs can I assign in a single batch?

There's no fixed batch limit in GS1 Assistant beyond what your prefix has remaining capacity for. The free plan covers up to 20 GTINs total, enough to test a batch workflow on a first product line; paid plans start at $4.99 a month for up to 500 GTINs, or $11.99 a month for unlimited, both billed every 30 days .

What happens if two variants end up with the same GTIN after a bulk import?

Shopify's own import doesn't catch it, and the barcode will still scan and pass a basic check-digit test. The problem surfaces when Amazon or Walmart Marketplace, both of which cross-reference identifiers against the GS1 database, finds the number tied to two different products. Running duplicate detection right after a bulk import catches it before that happens.

Do I still need my own GS1 Company Prefix to bulk-assign, or can I generate barcodes in bulk instead?

You need a prefix your business actually owns. A bulk-generated or resold number isn't registered to your company, so Amazon or Walmart Marketplace, both of which cross-reference identifiers against the GS1 database, will eventually flag the mismatch regardless of how the number was produced. If you don't have a prefix yet, see our GS1 Company Prefix setup guide.

Can I bulk-assign GTINs to variants that already have a barcode, to replace them?

Yes. Filter to the specific variants you intend to update before assigning, rather than running it across your whole catalog by default, so you're not overwriting barcodes that are already correct.

If I've already assigned some GTINs by hand, will bulk-assign skip those or create duplicate work?

No, not automatically. Filter to variants that don't have a GTIN assigned yet before running a batch, and the ones you've already done by hand are left alone. A duplicate detection pass afterward also catches it if a hand-assigned GTIN happens to collide with one from the batch, regardless of which one was assigned first.

What's the difference between Shopify's own CSV tool and a bulk barcode app?

Shopify's CSV import will write whatever's in the Variant Barcode column to your variants, correctly formatted or not, duplicated or not. An app that assigns directly from your GS1 prefix pulls the GTIN from your own licensed number block and can check for duplicates as part of the workflow, rather than leaving both checks to you as a manual spreadsheet exercise.

Does this work for catalogs in the tens of thousands of SKUs, or does it break down at scale?

Retrospillkongen runs bulk GTIN assignment from their own GS1 Norway prefix at 20,000+ SKUs, so it holds up well past a typical catalog's size. The batch size that makes sense in one run comes down to how many variants you're comfortable spot-checking afterward, which is a practical choice for you to make, not a limit built into the assignment itself.

Assign at Scale, Not One Variant at a Time

Checking the Variant Barcode column by hand works for a handful of products and stops working somewhere past that. The part most guides on this skip is the duplicate check, the one step that decides whether a bulk assignment ships clean or ships a mismatch Amazon or Walmart finds weeks later.

If you don't have a GS1 Company Prefix yet, start with our GS1 Company Prefix setup guide. If you're comparing tools for the Shopify side of this more broadly, our guide to Shopify barcode and GTIN apps covers that ground. If you already have a prefix and want to assign a batch with duplicate-checking built in, try GS1 Assistant, the app we make. The free plan covers your first 20 GTINs.

Ready to fix your GTINs for good?

Assign, validate, and sync GTINs from your own GS1 Company Prefix, right inside Shopify. Free plan covers up to 20 GTINs.