GS1 Digital Link QR Codes: Syntax, Resolvers and Sunrise 2027
What is a GS1 Digital Link QR code, and how do I make one that works on phones and at checkout?
Short answer
A GS1 Digital Link QR code holds an ordinary web address with your product's GTIN, and optionally a batch, serial number or expiry date, written in a fixed pattern such as /01/00614141123452. Phones open it like any link, while updated checkout scanners extract the GTIN without going online. Build it on a domain you control, redirect it to a product page, and keep the UPC beside it during the transition.
On this page
A regular QR code on a package sends phones to a web page, and that's all it does. A cashier can't ring the item up with it, because the register needs a GTIN, the product number behind your UPC. GS1 Digital Link is the standard that lets one QR code do both jobs.
This guide shows how a Digital Link address is built, where it should point, what changes at checkout under Sunrise 2027, and how to make one. For the broader choice between a QR code and a UPC, see QR code vs. barcode.
A web address with a GTIN inside
The GS1 Digital Link URI Syntax standard, release 1.7.0 ratified in August 2026, defines how to write GS1 identifiers, such as a GTIN plus a batch number or expiry date, inside an ordinary web address. GS1 describes two goals: scanning software can decode the identifiers and pass them to a business system with no online connection, and the same identifiers connect to online information (GS1).
Nothing in the QR code marks it as special, and the standard says that's deliberate. A phone camera treats a Digital Link URI like any other link. Only GS1-aware software, such as an updated store scanner, reads the identifiers out of it.
Anatomy of a Digital Link URI
Take the sample GTIN-12 614141123452, with a batch number and an expiry date added:
https://id.example.com/01/00614141123452/10/LOT42?17=271231
| Part | Example | Role |
|---|---|---|
| Domain | https://id.example.com | Any domain; it decides where a phone goes, not what the product is |
| Primary key | /01/00614141123452 | Application Identifier (AI) 01, the GTIN, always written as 14 digits |
| Key qualifier | /10/LOT42 | AI 10, batch/lot; the path can also hold 22 (variant) and 21 (serial number), in the order 22, 10, 21 |
| Data attribute | ?17=271231 | AI 17, expiry date as YYMMDD, carried in the query string |
The numbers are the same GS1 Application Identifiers used in GS1-128 barcodes. Written as a GS1 element string, this example is (01)00614141123452(17)271231(10)LOT42, and the standard treats the two forms as carrying the same information.
A few rules trip people up:
- The GTIN is always 14 digits. Since version 1.4.0 of the standard, GTIN-12s and GTIN-13s are padded with leading zeros. The check digit calculator converts a UPC to its 14-digit form.
- No word shortcuts. Older examples use
/gtin/instead of/01/. These "convenience alphas" were removed from the standard in version 1.3.0, and new systems aren't expected to support them. - Order matters. A path with
/21/before/10/is invalid. - Keep values plain. A batch or serial number can be up to 20 characters, and symbols such as
/,&and#must be percent-encoded.
A batch number or expiry date changes the code for every batch, which means printing variable data on the line. A code with only the GTIN can be printed once and used on every package.
Your own domain or id.gs1.org
The standard lets you build a Digital Link URI on any domain, a flexibility it calls deliberate so that brands stay in control of the domains they use. It also defines a canonical form on GS1's domain, such as https://id.gs1.org/01/09506000134352, for cases that need one well-known version.
id.gs1.org is a working resolver run by GS1. Its terms of use say it redirects visitors to websites whose links companies have provided to GS1 or a national GS1 Member Organization through the GS1 Registry Platform. So a code on id.gs1.org only takes a phone somewhere useful if links for that GTIN have been registered there.
GS1's QR Code best practices recommend your own domain instead, ideally a subdomain named id, such as id.yourbrand.com. Shoppers are more likely to follow a link that's visibly part of your brand, the domain transfers with the brand if it's sold, and a separate subdomain is less likely to break when the main website is rebuilt. A retailer's app can still swap in its own domain and look up the same GTIN, because the identifiers, not the domain, identify the product.
Resolvers: a redirect is enough to start
Scanning the code just opens a web address, so your server has to answer it. The GS1-Conformant Resolver Standard calls redirecting from the identifier to information about the product strongly recommended, though not required, and notes that a simple one-to-one redirect needs no special software.
A full GS1-conformant resolver goes further. It stores several links per item, such as a product page, instructions or nutrition details, with exactly one default. Apps can request a specific kind of link with a parameter such as linkType=gs1:nutritionalInfo, and conformant resolvers publish a description file at /.well-known/gs1resolver. The URI standard warns software not to assume that every Digital Link URI points to a resolver.
For a small brand, a redirect rule that sends /01/00614141123452 to the product page is a sound start. Because the printed code holds the identifier, not the page address, you can change the destination later without reprinting.
Sunrise 2027: what checkout scanners must do
Sunrise 2027, which GS1 calls Ambition 2027, is the industry goal for checkout scanners worldwide to read the GTIN from 2D barcodes as well as linear ones by the end of 2027. The QR code vs. barcode guide covers the background; what matters here is what the register does with your code.
GS1's 2D in retail guideline sets the minimum for 2027: the register identifies and decodes any GS1-compliant retail barcode, beeps once and passes one GTIN to the system. The list covers EAN/UPC, GS1 DataBar, GS1 DataMatrix, and Data Matrix or QR Code carrying a Digital Link URI. Those last two need a scanner software update that converts the URI into GS1 element string format. A more advanced mode also passes along data such as the batch and expiry date. When a package carries a UPC and a QR code with the same GTIN, the system should process one set of data and give one beep.
Keep the UPC
Until 90% of checkout systems can read GS1-compliant 2D barcodes, the guideline says products still need their linear barcode. The GS1 General Specifications require all GS1 barcodes used for the same purpose on an item to carry the same GTIN. If the QR code is meant for checkout, the guideline cites testing showing it should sit within 50 mm (1.97 inches) of the center of the linear barcode.
Making one with the QR code generator
- Start with a GTIN licensed to your brand. A Digital Link URI doesn't create a product number; see how to get UPC barcodes.
- Pad it to 14 digits with the check digit calculator.
- Choose a domain you control, ideally
id.plus your brand's domain. - Write the URI. Use the GTIN alone for a code printed on every package, and add
/10/or?17=only if you print per batch. - Set up the redirect, then open the address in a browser to confirm it lands on the right page.
- Make the code in the QR code generator using the Link type, set the module size in millimeters, and download the SVG at that size or a PNG for your printer's dpi. The generator encodes exactly what you type. It doesn't check the GTIN against GS1 data, validate Digital Link syntax or host redirects. For checking the syntax, GS1's Barcode Syntax Resource offers validation tools and a browser demo.
- Size, place and test it. GS1 sets module sizes for QR codes used at retail; the QR code size guide has the numbers. Print a proof next to the UPC and scan it with several phones.
Bottom line
A GS1 Digital Link QR code is a normal link with your GTIN in a fixed format: /01/ plus 14 digits, optional qualifiers in the path, and extra data in the query string. Put it on a domain you own, redirect it to a real product page, and print it beside your UPC with the same GTIN until checkout scanners catch up.
Sources
- GS1: GS1 Digital Link Standard: URI Syntax (Release 1.7.0)
- GS1: GS1-Conformant Resolver Standard
- GS1: 2D Barcodes at Retail Point-of-Sale Implementation Guideline
- GS1: Best practices for creating your QR Code powered by GS1
- GS1: GS1 Digital Link
- GS1: GS1 Resolver Terms of Use
- GS1: GS1 General Specifications Standard
- GS1 US: What is GS1 Sunrise 2027?
- GS1: GS1 barcode syntax resource