GS1 Digital Link · Resolver Standard 1.2.0· 20/20 on the test suite
Type your GTIN.
Get press-ready artwork.
The barcode stays. Beside it goes a Digital Link QR carrying the same GTIN, and one artwork carries both with their centres inside the 50 mm GS1's point-of-sale guideline allows. Symbology picked from the identifier, sizes in millimetres, quiet zone measured rather than assumed. Sunrise 2027 is piloting 2D codes at checkouts in 48 countries, 88% of world GDP, and pack artwork locks long before a shelf date.
The artwork studio needs no account. Publishing a key needs the GS1 Company Prefix you licensed from your Member Organisation · your first catalogue item is granted.
Conformant to GS1-Conformant Resolver Standard 1.2.0 · 20/20 on our conformance run, 1 Aug 2026 · self-asserted, because there is nothing to be certified by
A GS1 Digital Link is a web address that is also a barcode payload. The identifiers you already print are the path.
Hover or focus a highlighted identifier.
Ask for a serial and get the serial's answer; ask for something we hold nothing specific about and the resolver walks up on its own. How the resolver walks the hierarchy.
The code has to survive
a printing press.
The failure mode here is not "it looks bad", it is a pallet that will not scan. So the defaults are the standard's, not ours: a four-module quiet zone we measure in a test rather than assume, error correction M with Q and H available through the API, and a 0.495mm X-dimension target on a print sheet dimensioned in millimetres. Every code leaves with a spec sheet your press can work from.
What actually goes in the symbol, and why a GS1 QR code is an ordinary QR code carrying a Digital Link rather than a different kind of mark · including the primary keys beyond GTIN that most resolvers in this category never read.
And we will not put your logo in the middle of a GS1 carrier. On a marketing code, go ahead: we quietly raise error correction to H to pay for it. On a code that has to clear a till, no. It is the one place in the product where we say no to something you asked for.
Already printed something? Read it back, free, in your browser · or if the destination is wrong on a code that is already on a shelf, that is fixable too.
| minimum | 0.396 mm X | 14.7 mm |
|---|---|---|
| target | 0.495 mm X | 18.3 mm |
| maximum | 0.99 mm X | 36.6 mm |
Where the code lands
A page for the pack.
14 of them, ready to go.
Point a Digital Link at one of these and we render it ourselves, on your own domain, for one credit. Because we render rather than redirect, the page can still read the batch and the serial off the code that was scanned · a redirect drops them, since they are path segments and a 302 carries only the query string. Every section is its own resource too, so ?linkType=gs1:allergenInfo lands on the allergens.
These are not screenshots. Every card renders in the engine that serves a scan, byte for byte. All 14 in the gallery · how to attach one.
How it works
We check the GTIN is yours.
Then we derive the serials.
A resolver that lets you publish any GTIN you can type will happily let you publish someone else's. Declare your GS1 Company Prefix once and every key is checked against it, on every origin, every time. Restricted-circulation ranges are refused outright: internal 02 and 04, in-store 2-series, coupons, Bookland. Accepting those would help you make a mess that ships on a pallet. How prefix checking works. What a serialized run costs, and why the serial has to survive the redirect.
Serials are derived, not stored. A run of a hundred thousand writes a single job row and every serial is recomputed on demand from it. Lose the CSV and re-derive it from the job id, free, byte-identical. Your first catalogue item is free; after that an item is 200 credits once and minting is 1 credit per serial, so a hundred thousand serials is about $60 at the $799 Volume rate. Serials, start to finish · or drive it from the API and MCP server.
Conformance
There is no badge.
So here is the run.
GS1 does not certify resolvers. No badge, no registry, no accreditation, which means every "GS1 certified" claim in this category is decorative. Ours is self-asserted too. The difference is that the test suite is GS1's own and public, and so are the result below and both columns under it.
The longer version, including what to ask a vendor instead of asking for a badge, is on the resolver page. If you want to check a URI before it goes to print, paste it into the parser · it answers with the resolver's own reasons, rejections included.
20 of 20 · no warnings · run 1 Aug 2026 against https://tap01.link/01/09506000134352
Those are our checks, reimplemented from GS1's own suite, so they can run from a terminal against production rather than once a year in a browser. The suite itself last ran by hand on 19 Jul 2026: 27 of 27, no warnings. It checks a resolver, not a claim, and it is free · you can point it at the URI above yourself.
Every check, and what it answered +
| Level | Check | Answered |
|---|---|---|
| SHALL | SHALL support HTTP GET | status 302 |
| SHALL | SHALL support HTTP HEAD | status 302 |
| SHALL | SHALL support HTTP OPTIONS | status 204 |
| SHALL | SHALL support CORS | Access-Control-Allow-Origin: * |
| SHALL | SHALL report a malformed DL URI with 400 | status 400 |
| SHALL | SHALL NOT report an error with 200 OK | status 400 |
| SHOULD | SHOULD tolerate a trailing slash | 302 vs 302 |
| SHALL | linkType=linkset SHALL return a linkset | status 200, application/linkset+json |
| SHALL | Accept: application/linkset+json SHALL return a linkset | status 200, application/linkset+json |
| SHALL | linkType=all SHALL NOT redirect | status 200 |
| SHALL | SHALL 404 an unregistered linkType | status 404 |
| SHALL | SHALL redirect to the default link | 302 -> https://taproute.io |
| SHOULD | SHOULD advertise the linkset in a Link header | <https://tap01.link/01/09506000134352?linkType=linkset>; rel="linkset" |
| SHALL | SHALL walk up the qualifier hierarchy | status 302 |
| SHALL | SHALL publish /.well-known/gs1resolver | status 200, resolverRoot=https://tap01.link |
| SHALL | linkset SHALL be anchored entries with relations | 1 entries · https://ref.gs1.org/voc/pip, https://ref.gs1.org/voc/default |
| SHOULD | sets HSTS on the redirect | max-age=63072000; includeSubDomains |
| SHOULD | sets nosniff on the redirect | nosniff |
| SHOULD | sets HSTS on the linkset | max-age=63072000; includeSubDomains |
| SHOULD | sets nosniff on the linkset | nosniff |
Thirteen checks and seven known gaps, on the same page and the same visual plane · the gaps column is the reason the other one is believable.
One of those 57 link types is gs1:dpp, so a passport attached to a product, a lot or a single unit resolves today, wherever that passport is hosted. That is the whole of what "DPP-ready" honestly means right now, for us or for anyone.
Three defects we found in GS1's own reference implementation
- parseInt on a 17- or 18-digit key silently compressed every SSCC, GSIN, ITIP and GSRN to a different identifier.
- The GRAI check digit was verified at the wrong position, so the toolkit threw on valid GRAIs.
- Character-set-82 fields were narrowed to digits, blocking compression of ordinary lots and serials.
We read the reference implementation closely enough to find three defects in it. Every compressed URI we produce is decompressed again and compared to its input before it is printed · a wrong identifier on a pack cannot be recalled. Why each one was wrong · the full conformance document, versions cited and gaps included, is the one to hand a compliance team.
Cost
A million units, a million scans.
About $1,500 a year.
Not an estimate, and not a quote form: the rate card doing arithmetic in front of you. Scans are the meter and the number that moves the total, so the headline names its scan count rather than quietly assuming one. Drag it to your own run.
Your run
1.0 per unit.
Each scan is 1 credit, and scans are the meter. Minting a serial is 1 credit, once. The product master a run hangs off is 200 credits, once per SKU, not per unit and not per year. Nothing here renews.
The arithmetic
- 1,000,000 × scan
- 1,000,000
- 1,000,000 × mint
- 1,000,000
- 1 × product master
- 200
- credits
- 2,000,200
1 × Volume·2 × Scale·1 × Pro·1 × Basic
$1,515
bought once, for the year. Credits are valid 18 months, and the packs leave 1,800 credits of headroom.
The QR platforms that advertise unlimited codes cap you at somewhere between 3 and 50 of them at any price. So the useful claim is not that ours are cheaper. It is that a run this size is a thing you can do here at all. The full rate card.
Questions
Are you GS1 certified?
No, and nobody is. GS1 issues no certification, badge or registry for Digital Link resolvers, so every "GS1 certified" claim in this market is decoration. What is real: our resolver targets the GS1-Conformant Resolver Standard 1.2.0 and we verify it against GS1's own public test suite. Self-asserted, exactly like everyone else's, and the difference is that we say so. Both the suite and our resolver are public, so you can run one against the other.
What does a serialized run actually cost?
Your first catalogue item is free. After that a catalogue item, meaning the product record with its attributes and resolver entries, is 200 credits once: between $0.12 and $0.77 depending on your pack. Every serial beneath it is 1 credit to mint, so a hundred thousand serials is roughly $60 at the $799 Volume rate, and re-deriving a run you already bought is free. We price the product data, not the count of identifiers. At scale, a million serialized units answering a million scans across the year is about $1,500, against enterprise GS1 quotes of $5,000 to $50,000. Scans are the part that grows, which is why the calculator on this page puts them first.
Do I need my own GS1 Company Prefix?
Yes, and we check it. Declare your prefix in the dashboard and every key you publish is validated against it, on every origin, every time. With registry credentials we verify the prefix against the GS1 registry; without them it is recorded as attested rather than verified, and we show you which of the two you are on.
Can the resolver run on my own domain?
Yes, on every pack: a custom domain is a matter of credits here, not of tier. Point a subdomain you own at us with one CNAME and your Digital Links resolve under your own hostname. From the Growth pack up, the first one is included free. This matters more for GS1 than anywhere else, because the URI is printed on the pack and will outlive the campaign.
The pack ships in 2027.
The artwork ships sooner.
Rolling out across a catalogue? Talk to us · or hand your compliance team the conformance document.