How to Verify a GS1-Conformant Resolver
By Diljit Ramachandran · LinkedIn · /about
Published August 21, 2026 · Updated October 4, 2026 · 12 min read
A GS1 Digital Link on packaging is only as trustworthy as the resolver behind it. A scanner or a brand IT team does not have to take “we put a GTIN in the URL” at face value: the GS1-Conformant Resolver standard defines a discovery protocol they can probe.
You can run the checks below yourself, using QRCodeStack’s live description file at https://qrcodestack.com/.well-known/gs1resolver as a concrete example. It pairs with our GS1 Digital Link tool page and the comparison of Digital Link vs a normal QR code.
What “conformant resolver” means
The standard expects more than an HTTPS redirect that contains digits:
- A Resolver Description File at
/.well-known/gs1resolverso a client can discover the service at all. - Resolution of Digital Link URIs such as
/01/{gtin}(with optional path prefixes permitted by URI Syntax §4.11). - Support for
linkTypeselection, a fulllinkset, and correct handling of unknown types. - HTTP
Linkheaders are optional. The current release no longer requires a resolver to expose its links in a header when redirecting, though it may, and QRCodeStack’s does. - Content negotiation for linksets (for example
application/linkset+jsonper RFC 9264).
If your stack only 302s shoppers to a campaign page, it fails the discovery test even when the QR looks professional.
Step 1: Open the well-known description file
In a browser or with curl, request:
GET https://qrcodestack.com/.well-known/gs1resolver
You should receive a JSON (or JSON-LD) description that identifies the resolver and how it is reached. GS1 URI Syntax names this location as one way to test for a conformant resolver. If the file is missing, clients should not treat the origin as one.
Custom domains: when packaging prints https://brand.com/01/{gtin}, checkers probe https://brand.com/.well-known/gs1resolver, not the SaaS vendor’s apex. Your white-label / scan domain must expose the file on the brand origin.
Step 2: Resolve a GTIN path
For a registered GTIN, GET /01/{gtin} (or /gs1/01/{gtin} where that prefix is used) should return a redirect to the default link, typically a product information page (pip). The standard does not fix the status code; QRCodeStack’s resolver answers with HTTP 307.
Confirm:
- GET, HEAD, and OPTIONS are allowed (CORS preflight matters for browser clients).
- If the resolver sends
Linkheaders, the resources they advertise actually resolve. - Query parameters other than
linkTypeare passed through on redirect, which the standard requires by default.
Step 3: Exercise linkType behaviour
?linkType=pip(or another published type) → redirect to that specific link.?linkType=linkset→ the full link set as JSON.?linkType=unknown→ 404. The standard says a resolver SHALL return 404 Not Found when the requested type of link is not available. That is a change from GS1 Digital Link 1.1, where the resolver fell back to the default link and handed the client the wrong resource.
Also try content negotiation: Accept: application/linkset+json or application/ld+json on the GTIN URI should reach the linkset without relying only on the query string.
Step 4: Check the URI syntax as well as the redirect
Resolver conformance assumes the Digital Link URI itself is conformant: 14-digit GTINs, application identifiers in the mandated path order, attributes such as expiry in the query string where URI Syntax 1.7.0 places them. Generate codes from a tool that validates against the ratified text. The GS1 Digital Link generator on QRCodeStack is built for that.
For EU packaging that must stay open and editable after print, pair the resolver with a dynamic destination and review EU Digital Product Passport requirements so the same URI can later point at a DPP record.
Quick checklist
GET /.well-known/gs1resolverreturns a description file on the origin printed on pack.GET /01/{gtin}redirects to the default link.linkTypeselects specific links;linksetreturns the set; unknown types 404.- CORS allows GET/HEAD/OPTIONS for public resolver data.
- Generated URIs match GS1 Digital Link URI Syntax.
- Brand custom domains serve their own well-known file, because checkers do not fall back to the SaaS apex.
How QRCodeStack implements this
QRCodeStack mounts a GS1-conformant resolver at the origin root and under /gs1, publishes the description file at /.well-known/gs1resolver, and supports linkType, linksets, and custom-domain resolution scoped to the brand that owns the hostname.
Try the generator on /gs1-digital-link. Paid plans (public on /pricing) add editable destinations, analytics, and custom domains. The 7-day free trial needs no credit card and includes 5 dynamic QR codes, 0 static, 25 short links. Static QR codes in your account require a paid plan.
Frequently asked questions
What is a GS1-conformant resolver?
An HTTPS endpoint that resolves Digital Link URIs per the GS1 resolver standard. Clients discover it via /.well-known/gs1resolver and expect linkType behaviour and linksets. A GTIN-shaped marketing redirect does not qualify.
Where is the Resolver Description File?
At https://your-domain/.well-known/gs1resolver. Live example: https://qrcodestack.com/.well-known/gs1resolver.
What should linkType=unknown return?
HTTP 404. It should not fall back to the default product page.
Is a marketing QR redirect enough for Sunrise 2027?
No. Packaging that must identify products at POS needs conformant URI syntax plus a discoverable resolver. See Digital Link vs normal QR and the Sunrise 2027 guide.
Build on a conformant resolver
Generate Digital Link QR codes, verify /.well-known/gs1resolver, and use editable destinations. 7-day free trial, no credit card — 5 dynamic, 0 static, 25 short links. From $9/mo.
Related Articles
GS1 Digital Link generator
Create conformant URIs and QR codes for packaging.
GS1 Digital Link vs normal QR
When POS needs structure and when a marketing QR is enough.
GS1 Sunrise 2027 guide
Retail timeline and packaging decisions for 2026–2027.
EU Digital Product Passport
Open product URLs without vendor lock-in.