Shopify Barcode Generator: Turn a Number Into a Barcode

Shopify stores a barcode value but never draws the barcode, and the number alone does not tell you the format. How to identify the symbology and generate a printable barcode free.

By AjayCodeWiz · July 7, 2026 · 8 min read

Answered on the Shopify Community

A merchant ran into this and asked about it on the forum. I worked through it on a test store and posted the fix there on July 7, 2026. You can read the original thread, including the follow-up questions, over on the Shopify Community.

View the original thread

The problem

A merchant on the Shopify Community was handed an 8 digit number and told it was a "Shopify barcode number". They needed the actual barcode, the scannable image, and could not find anywhere in Shopify to produce one.

They were not missing a menu. Shopify stores a barcode value but never generates a barcode image from it. The field in the admin is a text field. It holds a number so that your own scanner, your POS, and your inventory reports have something to match on. It does not draw anything.

So getting from a number to a printable barcode takes two steps: work out which symbology the number is, then render it.

The Shopify barcode field is just text

In your admin, the field lives at Products > select a product > Inventory > Barcode (ISBN, UPC, GTIN, etc.).

Two things follow from it being a plain text field.

Shopify does not validate it. You can put anything in there. It will not tell you that a 12 digit number is not a valid EAN-13, or that a check digit is wrong.

Shopify does not render it. There is no button, no preview, no print action. Shopify POS can scan a barcode into that field, and barcode label apps can print from it, but the core admin does nothing visual with the value.

That is why the merchant could not find the screen. It does not exist.

The number alone does not tell you the format

This is the part that turns a simple question into a real one, and it is why the thread went back and forth.

Different symbologies accept overlapping lengths. An 8 digit number could be:

  • EAN-8, a genuine compact retail barcode with a check digit
  • Code 128, which accepts any length and any ASCII character
  • Code 39, same
  • An internal SKU that is not a retail barcode at all

You cannot tell which by looking. And it matters, because scanning behaviour differs. An EAN-8 scanned at a supermarket checkout resolves to a product in a global registry. A Code 128 with the same digits does not; it is just a string your own systems understand.

There is one useful clue. Shopify's own barcode generation, in POS and in most label apps, produces Code 128 by default. So a number described as "a Shopify barcode" is more likely Code 128 than a retail GTIN. That is a guess, not a fact, and it is worth confirming with whoever produced it.

The symbologies worth knowing

Eleven formats cover essentially everything a store encounters:

CODE 128 is general purpose. It supports the full ASCII character set and any length, and it is dense. This is the correct default for internal use: warehouse labels, bin locations, internal SKUs.

EAN-13 is international retail, 13 digits. This is a real GTIN and it is what a supermarket scanner expects outside North America.

EAN-8 is the compact retail version, 8 digits, used on small packaging where EAN-13 will not fit.

UPC-A is US and Canada retail, 12 digits. The North American equivalent of EAN-13.

CODE 39 is alphanumeric: letters, digits, and a few symbols. Older, less dense than Code 128, still common in automotive and defence.

ITF-14 goes on shipping cartons, 14 digits. Encodes the case-level GTIN rather than the unit.

MSI is digits only, used for inventory and shelf labels in some retail systems.

DataMatrix is a 2D matrix. Very high density in a small square, which is why it ends up on tiny electronic components and pharmaceutical packs.

PDF417 is 2D and stores a lot: it is what is on the back of a driving licence and on many shipping labels.

Pharmacode is a pharmaceutical packaging control code, read at high speed on a production line.

Codabar is used by libraries, blood banks, and airbills. Legacy but still in service.

For a Shopify store, three of these matter. Code 128 for anything internal. EAN-13 or UPC-A if you sell through retail channels and need a registered GTIN.

Generating the barcode

I built a free tool for exactly this, because the answer to "I have a number, I need the image" should not be a paid app.

The barcode generator: enter the value, choose the symbology, get a downloadable imageThe barcode generator: enter the value, choose the symbology, get a downloadable image

Enter your barcode value, choose the type, and it renders the barcode image for you to download and print.

Open the barcode generator

It runs in your browser, so the value never leaves your machine, and there is no account or sign-up. If your number is a valid EAN-13 or UPC-A the check digit is handled for you; if it is not valid for the format you picked, you will see that immediately, which is itself the fastest way to identify what format a mystery number actually is.

That is the trick for the merchant's situation: try the number as EAN-8. If it validates, it is probably a real EAN-8. If it does not, it is Code 128 or an internal SKU.

Do you need a registered GTIN?

Worth answering directly, because it is the more consequential question hiding behind "how do I make a barcode".

If you only sell through your own store, you do not need a registered barcode at all. Generate Code 128 from your own SKU and use it for picking, packing, and stocktakes. Nobody outside your business ever scans it.

If you sell through retail, physical shops or marketplaces, you almost certainly need a real GTIN, which means EAN-13 or UPC-A registered with GS1. A retailer's POS looks the number up in a global registry; a self-generated Code 128 resolves to nothing and will be rejected at onboarding.

If you sell on marketplaces, Amazon, Google Shopping and others require a GTIN for most categories. Google Merchant Center in particular will disapprove products with an invalid or self-invented GTIN, and it validates check digits.

This is the distinction that catches people out. A barcode you generated yourself is scannable, and that feels like success. Whether it is meaningful to anyone else is a separate question, and the answer is usually no.

Getting barcodes onto your products

Once you have values, three ways to get them into Shopify.

One at a time, in the product's Inventory section. Fine for a handful.

Bulk edit. From Products, select the products, click Bulk edit, and add the Barcode column through the Columns picker. One row per variant, so you can paste a column of values in one go. This is the right tool for a few hundred.

CSV import. Export your products, fill in the Variant Barcode column, and import the file back. Right for thousands, and it gives you a record of what you set.

Remember that barcode, like SKU and price, lives on the variant, not the product. A product with five sizes needs five barcodes, and each retail size legitimately has its own GTIN.

Common questions

Can Shopify print barcode labels?

Not from the core admin. Shopify POS can print labels with compatible hardware, and there are label apps that read the barcode field and lay out sheets. The barcode field itself is only storage.

What if I have no barcode at all?

For internal use, generate Code 128 from your existing SKU. It is the least friction and it means your barcode and your SKU are the same string, which makes stocktakes simpler.

Is the Shopify barcode field the same as SKU?

No, and keeping them distinct is worth the discipline. SKU is your internal identifier. Barcode is what a scanner reads. They can hold the same value, but the fields feed different reports and different integrations.

Can two variants share a barcode?

Shopify allows it, but do not. Scanning becomes ambiguous, and marketplaces reject duplicate GTINs.

Does the barcode field affect my storefront?

No. It is admin and integration data only, not rendered to customers.

How do I check whether an existing number is a valid GTIN?

The last digit of EAN-13, EAN-8 and UPC-A is a check digit computed from the others. Run the number through the generator as that format; if the check digit does not match, it is not a valid GTIN for that symbology.

If it did not work

The generator rejects your number for the format you picked. That is the tool telling you the number is not valid for that symbology, usually a length or check-digit mismatch. Try Code 128, which accepts anything.

Your scanner reads nothing. Print size and quiet zone. A barcode needs blank margin either side, and printing too small breaks the minimum bar width. Print larger and leave white space.

The POS scans the barcode but finds no product. The value in the label does not exactly match the value in the Barcode field. Check for a leading zero or trailing space, which is the usual cause.

Marketplace rejects your GTIN. It is self-generated. Marketplaces validate against the GS1 registry, and there is no way around registering.

Tested on

The symbology list and check-digit behaviour were verified against the generator itself. The Shopify side, that the Barcode field is plain text with no validation and no rendering, was confirmed on a dev store by entering an invalid GTIN and saving it without complaint.

Need more free Shopify tools?

PinFlow also turns your Shopify catalog into Pinterest pins and posts them on a schedule, so your products keep getting found while you work on the store.

Get PinFlow on the Shopify App Store