Cogwork APIs

Free GS1 Digital Link & 2D Barcode Generator

GTIN in — Sunrise 2027-ready GS1 DataMatrix or Digital Link QR out. Check digits validated. No signup. Built on the GS1Kit API.

Need this in your product or label software?

Three endpoints: build Digital Link URIs, parse & validate any GS1 element string, and render GS1 DataMatrix / QR / GS1-128 images. Free tier, then from $5/mo.

POST /gs1/barcode { "gtin":"04006381333931", "lot":"L1", "symbology":"gs1datamatrix" }
Get an API key →

GS1Kit is a developer API for the retail industry's move to 2D barcodes: it builds and validates GS1 Digital Link URIs, parses element strings from any scanner, and renders compliant GS1 DataMatrix, QR and GS1-128 symbols. This free tool runs on the same engine, so what you see here is exactly what your code gets.

What is Sunrise 2027?

By the end of 2027, retail point-of-sale systems worldwide should accept 2D barcodes — GS1 DataMatrix and QR Codes carrying GS1 Digital Link URIs — alongside the familiar EAN/UPC stripes. That's the GS1 "Sunrise 2027" milestone. One 2D symbol can carry the GTIN plus lot, serial and expiry (enabling recalls, traceability and expiry-aware checkout), and doubles as a consumer web link. Read our full developer's guide to Sunrise 2027.

What this tool does

Who needs it

FAQ

Is this generator free?
Yes — free, no signup. The GS1Kit API behind it has a free tier; paid plans start at $5/mo for production volume.
QR Code or GS1 DataMatrix — which one do I need?
QR with a Digital Link URI when consumers should be able to scan it with a phone and reach a web page; GS1 DataMatrix for regulated labeling (healthcare, logistics) where element-string syntax is required. Both are Sunrise 2027 POS formats.
Do I need a GS1 membership?
To sell at retail, your GTINs come from a GS1 member organization. This tool encodes whatever GTIN you have — it validates the check digit but doesn't license numbers.
Can it parse scanner output?
Yes — the /gs1/parse endpoint accepts bracketed element strings like (01)04006381333931(10)AB123, raw FNC1 scanner data, or Digital Link URIs, and returns every AI decoded and validated.
Can I use my own domain in the Digital Link?
Yes — pass domain and the URI is built on your resolver (e.g. https://id.yourbrand.com/01/…) instead of id.gs1.org.

API reference

Three operations under one base path. All accept GET query params or a POST JSON body.

POST/gs1/link

Build a validated GS1 Digital Link URI + element string from product fields.

ParamTypeDescription
gtinrequired*string8/12/13/14 digits; normalized to GTIN-14, check digit verified. (*or another primary key: sscc, gln, or a raw ais map.)
lot / serial / cpvoptstringAI 10 / 21 / 22 path qualifiers.
expiry / bestBefore / prodDateoptstringYYYY-MM-DD or YYMMDD → AI 17 / 15 / 11.
aisoptobjectRaw AI map for anything else, e.g. {"3103":"001500"}.
domainoptstringResolver domain (default id.gs1.org).

Returns { uri, elementString, ais[] } with per-AI validity.

POST/gs1/parse

Decode + validate an element string (01)…(10)…, raw scanner output (FNC1/GS, symbology prefixes OK), or a Digital Link URI.

Returns every AI with title, value, validity and errors, plus the canonical elementString and digitalLink.

POST/gs1/barcode

Render the barcode. Same inputs as /gs1/link plus symbology (gs1datamatrix default, qr = Digital Link QR, gs1-128), format (png/svg), scale 1–12.

Returns { url, encoded } — the image hosted on a CDN and the exact data encoded.

curl -X POST "https://gs1kit-digital-link-2d-barcodes.p.rapidapi.com/gs1/barcode" \
  -H "content-type: application/json" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: gs1kit-digital-link-2d-barcodes.p.rapidapi.com" \
  -d '{"gtin":"04006381333931","lot":"L1","expiry":"2027-12-31","symbology":"gs1datamatrix"}'