CSV · Excel · Google Sheets · up to 3,000 GTINs per batch
Bulk 2D barcode generator for GS1 Digital Link
Import a product list from a CSV / Excel file, a Google Sheet or the clipboard. Every row is checked — GTIN, dates, AI lengths, duplicates — then all QR codes are generated and packed as a ZIP or a printable PDF.
- Row-by-row validation
- ZIP of PNG / SVG
- A4 / Letter PDF grid
- Try it free
Import your product list
From a file, a Google Sheet or by pasting cells. Use a template so the columns are recognised.
In Google Sheets choose Share → General access → Anyone with the link (Viewer), then paste the link. The tab in the link (#gid=…) is the one imported. Data goes from Google straight to your browser.
Select the data range in Google Sheets or Excel, press Ctrl + C and paste here. No sharing needed.
How it works
- Use a template (CSV, Excel or Google Sheets) and fill one product per row: a name, the GTIN, and optionally CPV, batch, serial, expiry date (YYMMDD) or any other AI as a column named by its number (e.g.
240). Format GTIN and date columns as plain text so the spreadsheet keeps leading zeros. - Up to 3,000 rows per batch. Leave a cell empty to omit that AI.
- On upload every row is validated: GTIN check digit, date format, AI length and character set, and duplicate codes. Rows with errors are skipped; duplicates are flagged.
- Pick the encoding and design in step 2, the output format in step 3, then click Generate. Files are named after the
namecolumn (or the GTIN).
Recognised columns
| name | Label / file name (optional) |
| gtin | GTIN-8/12/13/14 — required unless url is given |
| cpv | AI 22 — consumer product variant |
| batch / lot | AI 10 — batch or lot number |
| serial | AI 21 — serial number |
| expiry | AI 17 — expiration date, YYMMDD |
| best_before / prod_date / pack_date | AI 15 / 11 / 13 — dates, YYMMDD |
| url | Encode this URL as a plain QR instead of a Digital Link (optional) |
| <AI number> | Any other AI, e.g. 240, 3103, 400 — validated against the GS1 table |
Design the code
Encoding and appearance apply to the whole batch.
The resolver is the server that answers when the code is scanned. id.gs1.org only redirects GTINs whose brand registered links with GS1 — the demo GTIN 09506000134352 opens GS1’s demo page, an unregistered GTIN returns “not found”. For your own products choose Your domain… and enter a domain where you run a GS1 Digital Link resolver.
Preview of the first valid row
Frequently asked questions
What is a GS1 Digital Link 2D barcode, and how does it differ from a GS1 DataMatrix?
Both are 2D symbols carrying GS1 data. A GS1 Digital Link QR encodes a web URI (https://…/01/GTIN/…) so consumers can scan it with a phone. A GS1 DataMatrix encodes the GS1 element string with FNC1 and is the norm for pharmaceuticals, medical devices and industrial marking. Use this tab for consumer-facing QR codes; use the GS1 DataMatrix tab for healthcare and DPM.
Does the tool detect duplicate codes?
Yes. Two rows that encode exactly the same GS1 data (same GTIN, qualifiers and attributes) are marked as duplicates. They are still generated, so you can decide whether to keep them.
Can I edit individual codes after generating?
Fix the row in your sheet and re-upload, or copy the single GS1 string into the GS1 QR Code tab to regenerate one code with different design settings.
How do I find a code by product name?
Files inside the ZIP are named after the name column (falling back to the GTIN), so any file browser search finds them. The PDF prints the name and GTIN beneath each code.
Can I use this for pharmaceuticals or medical devices?
Regulated healthcare items usually require GS1 DataMatrix with (01)(17)(10)(21) — switch to the GS1 DataMatrix tab. Digital Link QR can be printed in addition, for patient information.
Why import from a spreadsheet rather than a web form?
Product master data almost always lives in a spreadsheet or ERP export. Upload the file, link a shared Google Sheet or paste the cells — no retyping, a record of what was printed, and the same batch can be regenerated later. Files are read in your browser; only the final codes are sent to the server when you download.