What the resolver does
A GS1 Digital Link is a web address with your product identifiers in fixed positions: https://id.yourbrand.com/01/09506000134352/10/ABC123. A 2D-capable checkout scanner reads the GTIN straight out of that path, offline, without fetching anything. A phone opens it like any other link — and then something has to answer.
That something is a resolver. QRKIT can be yours. It answers at the identifier path itself rather than at a short code, so the printed symbol keeps carrying the GTIN — which is the whole point, and the reason a plain redirect link cannot stand in for one.
On a scan, the resolver:
- Parses the address and walks from the most specific identifier (GTIN plus lot plus serial) back to the plain GTIN, taking the first record it finds.
- Picks a destination: an override for the exact lot or serial that was scanned, then a link matching the requested linkType, then your default link.
- Redirects, passing the original query string through so the destination sees what was on the printed code.
- Or, when the caller asks for a linkset, returns every registered link for that identifier as a JSON document (RFC 9264) instead of redirecting — that is how a retailer's or regulator's software discovers what you publish.
The resolver is GS1 Digital Link compatible: it serves a linkset, honours linkType requests, answers cross-origin requests, supports HEAD and OPTIONS, decompresses compressed Digital Link URIs, publishes a /.well-known/gs1resolver description, and distinguishes a malformed address (400) from an unknown one (404) from its own failure (503) rather than collapsing them into a redirect.
Plan availability
- Static Digital Link codes are free, on every plan including Free. The QR encodes your own address and you host the resolver yourself. Nothing on this page is required to use them.
- The hosted resolver starts at Starter. Free accounts keep static GS1 only.
- Your own domain starts at Plus. Starter accounts run on the shared qrkit.to scan host, which is a fine way to try the mechanics but not what you want on artwork. Plus and Pro include one custom domain, Ultra two, Agency four.
See plan comparison for everything else each plan includes.
Use your own domain
GS1's own guidance is to publish Digital Links on a domain the brand controls, not a vendor's. The setup is the same one-record change described in custom domains, and the same domain then serves both your ordinary dynamic QR codes and your Digital Links.
- Pick a subdomain. The convention for this is id.yourbrand.com. Root domains aren't supported, and you would not want one here anyway — a dedicated host keeps product links independent of your marketing site.
- Add one CNAME. In Settings → Domains, enter the subdomain, then create a CNAME for it at your DNS provider pointing to cname.qrkit.to. On Cloudflare set the record to DNS only (gray cloud), not proxied.
- Wait for Active. QRKIT validates the record and issues a TLS certificate automatically. Nothing about your main website, DNS hosting or email changes.
- Pick it when you create the code. The domain is baked into the printed image, so choose it before artwork, not after.
Once the domain is live, your Digital Links resolve at https://id.yourbrand.com/01/<GTIN>, and https://id.yourbrand.com/.well-known/gs1resolver describes your resolver to anyone who asks — naming your domain as the resolver root, not ours.
Identifiers cannot be edited after creation. The GTIN and its qualifiers are printed on packaging, so QRKIT treats them the way it treats a custom short code: fixed for the life of the record, and reserved even after the code is deleted, so nobody else can register an identifier your boxes still point at. Everything the identifiers resolve to stays editable.
Link types
One identifier can publish several destinations, each labelled with a link type from the GS1 web vocabulary — product information page, instructions, allergen information, electronic instructions for use, sustainability information, recall status, and so on. QRKIT offers the vocabulary's full published list.
Which one a scan gets depends on who is asking. A phone camera with no preference gets your default link. Software that asks for a specific type — a pharmacy system asking for the patient leaflet, a retailer's app asking for ingredients — gets that one, or a 404 if you have not registered it, which is the honest answer rather than dumping the visitor on a generic page.
You can also hand the whole record over as a file. The Export action downloads the linkset for one code or for every GS1 code in the workspace, in the same RFC 9264 shape the resolver serves. If you ever move to a different resolver, that file is what you take with you.
Lots, serials & recalls
A batch or serial number printed after the GTIN is not a separate QR code in QRKIT — it is an override inside the product's record. That matters for two reasons: one code counts once against your plan no matter how many runs you produce, and the entire product line is editable from one place.
An override says “when the scanned address carries /10/ABC123, send that one somewhere else.” Everything else keeps resolving normally. The Recall this lot action is that primitive with the fields pre-filled: give it the lot and a notice URL, and every unit from that run redirects to the notice while the rest of your stock is untouched. It also registers a recallStatus link, so software that asks the resolver a structured question gets a structured answer instead of having to read your notice page.
Scans record the lot, the serial and the requested link type, so per-QR analytics can break scans down by production run as well as by the usual time and place.
Downgrades & cancellation
A GS1 code never goes dark. Printed packaging outlives subscriptions, and the loudest complaint in this category is codes that stop working after the print run. So GS1 codes are excluded outright from the downgrade rules that pause ordinary dynamic codes over a plan limit — on downgrade or cancellation they keep resolving to their last saved destination, frozen: no edits and no per-scan analytics beyond the total count until you upgrade again.
Nor does a consumer ever see a QRKIT page on the way through. GS1 codes carry no branded interstitial and are not subject to the free plan's scan cap, on any plan — a scan at a shelf goes straight to your destination.
The one thing that is not frozen is your domain. A custom domain removed or downgraded out of your plan is suspended after a 30-day grace period, as custom domains describes — and a Digital Link printed on that host stops resolving with it. Budget the domain for as long as the packaging is in circulation.
Printing the symbol
A code that will be read by a fixed imager at a till has physical requirements a marketing QR code gets away with ignoring. The Print tab computes them from the actual symbol rather than from a rule of thumb.
- X-dimension 0.396 mm to 0.990 mm, target 0.495 mm. The X-dimension is the width of one module on the printed page. Choose it and QRKIT gives you the overall size that follows from your symbol's module count; go outside the range and it says so.
- Quiet zone of 4 modules, enforced. Clear space on every side, derived from the module count rather than left at a fixed pixel margin — which is what a short Digital Link URI needs and what a general-purpose QR renderer usually gets wrong.
- Error correction M, Q or H — your choice, Q by default. L is not offered: packaging gets scuffed, folded and frozen, and 7% recovery has no business there.
- No logo, no inversion, no low contrast. A logo covers modules that a till has to read, so it is disabled on GS1 codes; light-on-dark and weak colour pairs are flagged before export.
- Export at an exact millimetre size. The SVG carries real mm units, so it lands in Illustrator at the size your print brief specifies instead of at some pixel dimension you have to rescale. PDF export is unchanged and is not sized in millimetres — take the SVG for artwork.
- Companion symbols from the same record. Dual marking is normal during the 2D transition, so the panel also renders the GS1 DataMatrix of the same data, plus the EAN-13 or UPC-A of the same GTIN where the GTIN allows it — EAN-13 needs a consumer-unit GTIN and UPC-A a US or Canadian one, so a case-level or non-US number has no linear form and the panel says so rather than truncating one into existence — all derived from the record, not retyped.
What none of this is: a print grade. ISO/IEC 15415 grades a physical printed symbol using calibrated measuring hardware. It is a service performed on your actual packaging by a lab or a verifier, and QRKIT does not do it and does not claim to. The rules above are design-time guard rails that stop the obvious failures before they reach a press. If you are printing at scale, still get a proof verified — and scan a real proof, on the real substrate, at the real size.
Frequently asked questions
Is a hosted Digital Link still a conformant GS1 code?
Yes, because the identifiers stay in the address. The failure mode to avoid is a code that encodes a short redirect link instead of your GS1 URI: it still opens on a phone, but the GTIN is no longer in the symbol and a checkout scanner has nothing to read. QRKIT answers at the identifier path itself, so that never happens.
Do I still need a GTIN from GS1?
Yes. GTINs are licensed through your local GS1 member organisation. QRKIT builds and hosts the link around the GTIN you already hold; it does not issue identifiers.
Can I change the GTIN later?
No. Identifiers are fixed once the code exists, because they are printed. Duplicating a GS1 code copies the links, not the identifier, and a deleted identifier stays reserved so it cannot be claimed by someone else while your packaging is still in circulation. The destinations behind the identifier are editable at any time.
What does a checkout scan look like in my analytics?
It does not appear at all. A 2D point-of-sale scanner reads the GTIN out of the printed symbol offline and never requests a page, so there is nothing for any resolver to record. What you see are the phone scans that actually reach the resolver — with the lot, serial and link type they carried.
What if I want to leave and run my own resolver?
Export the linkset. It is a standard RFC 9264 document naming your identifiers, link types and destinations, and it is designed to be enough to stand the same behaviour up elsewhere. Your domain is yours throughout; you would repoint the CNAME and keep the printed codes working.
Ready to publish a Digital Link?
Build the code and pick the resolver domain in the same step — or start with a free static one to get the identifiers right.
