GS1 Digital Link Resolver: What Happens After a 2D Code Is Scanned

A 2D code with GS1 Digital Link looks like an ordinary web address, but it does not lead straight to a product page. It leads to a resolver, a service that decides what to show at the moment of scanning.
The resolver is what lets a single code printed on the packaging serve a product page, recipes, instructions, an e-label, and data for trading partners' systems for years. Without it, GS1 Digital Link would be just another static link in a QR code.
The short answer: a resolver turns a GTIN into the right content
A GS1 Digital Link resolver is a server that reads the GS1 identifiers in the address, finds the product, and redirects the person scanning to the right content. When choosing the destination, it can take two kinds of information into account: information about the person scanning, such as the browser language, and information encoded in the code, such as the batch or serial number.
The code on the packaging never changes. Only the resolver configuration does, so content can be updated without reprinting labels.
What a GS1 Digital Link address looks like
The address encoded in a 2D code consists of a domain and a path built from GS1 Application Identifiers (AIs) and their values. For example:
https://gtin.at/01/00012345000058/10/ABC123?17=271231
This is a working address of a demo product in the Thing Identity resolver. You can open it and see where it leads.
Each part has its own meaning:
Address part | What it means | Role in the resolver |
|---|---|---|
| Resolver domain | Determines who answers the scan |
| GTIN, the primary key | The resolver uses it to find the product |
| Batch or lot number | Qualifier: lets the resolver show content for a specific batch, such as a recall notice |
| Expiry date as an attribute | Extra data passed in the query string. It does not change which product is identified |
The example contains one qualifier and one parameter, but there can be more. The path can continue after the batch number with, for example, a serial number (/21/...), and the query string can carry further attributes such as net weight or production date. To see what each number, such as /10/ or /21/, stands for, use our GS1 Digital Link generator. Open the list of qualifiers or attributes to see a description of every identifier.
The same address is both an identifier and a link. A 2D-ready checkout reads the GTIN, batch number, and expiry date from it without going online. A customer's phone opens it like any other web page, and that is where the resolver comes in.
We explain how the same GTIN looks in an EAN-13 barcode and in 2D codes in our article GTIN vs. EAN.
What the resolver does, step by step
It usually takes a fraction of a second from scanning the code to showing the page, but in that time the resolver makes several decisions:
- Validates the address. It checks the GS1 Digital Link syntax, the order of qualifiers, and the GTIN check digit. An invalid address, such as this one with a wrong check digit, ends with a message saying it is not a valid GS1 Digital Link, not with a random page.
- Finds the product. It looks up the record linked to the GTIN and, if the address contains qualifiers, content assigned to a specific batch or item. If there is no such product, the person scanning sees a message that the page was not found.
- Determines the type of information. If the scan does not ask for anything specific, it picks the default link, usually the product page. If the address contains a
linkTypeparameter, it looks for content of that type. - Picks the language. It compares the languages set on the phone (the
Accept-Languageheader) with the language versions the brand publishes and chooses the best match. The same address https://gtin.at/01/00012345000058 opens the page in English in a browser set to English and in Polish in a browser set to Polish. - Responds. A person with a browser gets a redirect to the destination page. A system that asks for data gets a list of all available links in JSON format.
Link types: one code, many destinations
The GS1 standard allows one product to have many related resources, each with a defined type. The types come from the GS1 Web Vocabulary and take the form gs1:name. Below are some of the most common ones; you will find the full list in the GS1 link type vocabulary.
Link type | Where it leads |
|---|---|
gs1:pip | Product information page |
gs1:allergenInfo | Allergen information |
gs1:recipeInfo | Recipes using the product |
gs1:instructions | Instructions for use or assembly |
gs1:sustainabilityInfo | Recycling and environmental impact information |
gs1:certificationInfo | Certificates and declarations of conformity |
gs1:recallStatus | Product recall status |
gs1:epil | Electronic patient information leaflet |
An app or system that knows what it is looking for adds the type to the address and goes straight to the right content. The demo product has several such pages: ?linkType=gs1:certificationInfo leads to certificates and ?linkType=gs1:quickStartGuide to the quick start guide. If you ask for a type the product does not have, such as ?linkType=gs1:recipeInfo, the resolver replies that the page was not found. An ordinary scan with a phone camera adds nothing, so it goes to the default link. That is why the default link should lead to a page from which the other content is easy to reach.
Scan it: this code always opens the demo product's quick start guide
The link type can also be fixed in the 2D code itself. Such a code always leads to one specific page, whatever it is scanned with. This is useful on wine labels, for example. The brand prepares several pages about the wine and puts two codes on the bottle. The code on the front has no link type and leads to a page with marketing information. The code on the back, labelled as ingredients and nutrition information, has the gs1:ingredientsInfo type encoded in it and opens that page directly.
Linkset: an answer for machines
Not every scan is made by a person. A retailer, a nutrition app, or a recycling system wants the full list of resources from the resolver, not a redirect to a page.
That is what a linkset is for: a structured list of all links related to the product, defined in RFC 9264. A system requests it with the linkType=linkset parameter or the Accept: application/linkset+json header. In response, it gets every link type with its destination address, title, and language. This is what the demo product's linkset looks like. The data can also be read as JSON-LD, which makes it easier to combine with product data in other systems.
This way, one code serves two very different audiences: a consumer with a phone and trading partners' software.
The resolver domain: a decision for years to come
The domain is the only part of the address that cannot be changed once the packaging is printed. Choosing a resolver therefore means choosing who will answer scans for the product's whole life on the market, and often longer.
You have three options:
- the service provider's domain, such as
gtin.at, the fastest way to start. Thegtin.atdomain belongs to Thing Identity, which guarantees that addresses on it will always be available and can be redirected to any destination, including another company's resolver, - the brand's own domain or subdomain, pointed at the provider's resolver, so that changing providers only takes a DNS update. Thing Identity also offers its resolver on the brand's own domain, so a brand called Tomato, for example, can print codes with the address
id.tomato.comwhile using Thing Identity's infrastructure, - the global GS1 resolver at
id.gs1.org, which can redirect the scan to the resolver chosen by the brand owner.
The Thing Identity resolver
Thing Identity works as a resolver compliant with the GS1-Conformant Resolver standard for addresses with the 01 key, including on the short gtin.at domain, which all the examples in this article use. In practice, this means that:
- every scan ends with a redirect to the product page in the language that best matches the customer's phone,
- every product page is a separate link type, and the default page handles ordinary camera scans,
- partners' systems can fetch the linkset as JSON or JSON-LD,
- once changes are published, the next scans go straight to the new content, without reprinting the packaging.
You can check the address structure for your own GTIN in the free GS1 Digital Link generator.
Frequently asked questions
Summary
A 2D code with GS1 Digital Link is a permanent identifier, and the resolver is the layer that gives it meaning at the moment of the scan. Thanks to the resolver, a single printed code serves many types of content, many languages, and both consumers and trading partners' systems.
Want to see how the resolver would handle your product? Create a code in the GS1 Digital Link generator or book a free consultation.
Official GS1 resources
Read next
- GTIN vs. EAN: The Difference Between a Product Number and a BarcodeA practical explanation of the difference between GTIN and EAN: number variants, barcode symbologies, numbering rules, and why the distinction matters when implementing GS1 Digital Link.
- 2D codes on packaging and the new SEO: product visibility in the AI eraA practical guide for manufacturers and brands: how a 2D code with GS1 Digital Link connects a physical product with structured data that supports SEO and AI answers.
- GS1 QR Code, GS1 DataMatrix, or GS1 Digital Link: Which 2D Code Should You Choose?A practical comparison of data encoding, smartphone support, point-of-sale use, and the size of four 2D codes used in the GS1 system.
