Checking API connection...

Add a product

Fill out what applies. If you just need a code for a link (not a physical product), only the destination field below is required.

Why only the GTIN matters for 1D barcodes

A 1D barcode — the classic black-and-white stripes — physically holds nothing but the GTIN number itself. No price, no link, no other data fits. When a cashier scans it, their register looks that number up in their own store's system to find the price, the name, everything else — that lookup already happened on their end, long before the code was even printed.

That's not something we sit in the middle of. Every retailer runs their own onboarding process, and there's no single shared standard across them — Walmart's system isn't Target's, isn't Costco's, isn't your local distributor's. In practice, getting your product data into a retailer's system is usually as simple as a spreadsheet or CSV sent over email or a vendor portal, sometimes literally a message away. Us trying to insert ourselves into that step wouldn't speed anything up — it would just add a layer of approval and delay to something that's already a direct relationship between you and each retailer.

Where we do help: once you've got many products to manage, bulk-uploading them here to generate all their codes at once — instead of one at a time — is coming soon, so scaling up doesn't mean 200 trips through this form.

All the fields below still get saved to your product record regardless of code type — they're simply not part of what a 1D code itself can carry. They'll be ready and waiting if you generate a 2D code for this same product later, since those can carry a link.

Leave blank if this isn't a retail product — a link-only QR doesn't need one. Don't have a real GTIN yet? instead of making one up.

Why "generate a safe number" instead of just typing one in?

A real GTIN is a specific, globally unique number GS1 assigns to a company — no two products anywhere are supposed to share one. If you type in a random made-up number instead, there's a real (if small) chance it could accidentally match a number that belongs to someone else's actual registered product — which could cause real confusion, or even look like GTIN misuse, even if you never meant any harm.

GS1 solves exactly this by officially reserving certain number ranges that are guaranteed to never be issued as a real product GTIN — these are called Restricted Circulation Numbers (RCNs). Clicking "Generate a real, collision-safe number" creates one of these for you automatically, with a correct check digit, so it's a fully valid, working barcode number that's provably safe from ever colliding with someone else's real product. It won't be recognized at every checkout the way a real, purchased GTIN would be — that's the tradeoff for not having registered one yet — but it removes any risk or uncertainty while you're getting started.

Where this code sends people — your product page, a link, whatever it needs to be.

Your products

Generate a real code for any saved product or link.

Loading products...

2D — opens a webpage or carries data directly
1D — retail & logistics barcodes
Want your logo or a photo blended into the code itself? Create an Artistic QR →  |  Create an Artistic Aztec Code → (great for tickets & boarding passes). Both open a dedicated editor for this same product.

Download saves the image straight to your device — works the same either way, static or linked. Save this code is different: it keeps a copy in your product's history here in the dashboard, so you (or anyone on your team) can come back later and find it again without regenerating it. For most code types, saving again replaces the previous saved version of that same type for this product (you'll get a warning first) — e.g. saving a new QR Code overwrites the last saved QR Code. Artistic QR is the one exception: every save there adds a new entry instead, since two artistic versions of the same product can look completely different on purpose.
Now test it for real: scan this with your phone's camera. You should land on the destination URL — this is exactly what a shopper would see.