The URI form.

The URI grammar from the path down, canonical and compressed forms, and the conformant resolver semantics behind it.

The web-address form, blown out.

https://barcoding.dev the door any conformant door can serve the same address — the identity lives in the path
/01/0950600013435 product code the same GTIN, now a URL path — minus its last digit
2 check still the GTIN's own check digit — mod10 pass
/10/LOT42 batch / lot qualifier order is fixed by the grammar
/21/987 serial number this one item, not just this product

the same identity, two label forms — one keystroke apart:

element string   (01)09506000134352(10)LOT42(21)987
digital link     https://barcoding.dev/01/09506000134352/10/LOT42/21/987

resolve(generate(x)) === x  — the round-trip law, asserted over the golden corpus
GTIN   0950600013435 · check 2
sum     0×3 + 9×1 + 5×3 + 0×1 + 6×3 + 0×1 + 0×3 + 0×1 + 1×3 + 3×1 + 4×3 + 3×1 + 5×3 = 78
check   (10  78 mod 10) mod 10 = 2   → mod10 pass

The row.

schemegs1.digital-link
grammarAn https URI whose path carries AI key/value pairs — /01/<gtin>/21/<serial> — with qualifier order fixed by the Digital Link grammar; canonical (uncompressed) and compressed forms are both defined, both directions.
check digitThe carried AIs bring their rails (AI 01 mod-10); the URI grammar itself is structural.
canonical formThe canonical uncompressed URI, byte-round-trippable with the element-string form of the same AI map.
symbologiesQR and GS1 DataMatrix are the Sunrise 2027 carriers; the URI is also a plain link
enrichment— (a form of GS1 keys; enrichment attaches to the resolved key)
join ruleResolution: GS1-Conformant Resolver 1.2.0 — description file at /.well-known/gs1resolver, RFC 9264 linksets, gs1:defaultLink; 400 for an invalid URI, 404 for an absent linkType.
pinned digestgs1.digital-link sha256:d1bebebada37a8d48554954335427b3437d25079ef7e81bf81cb4055659e9b03
as data/schemes/dl.json

In practice.

The delegating door lives on the engine origin (api.barcoding.dev) — resolution itself is id.org.ai's, served through it — serves every link inside a provenance object — source, dataset version, license class, fetched-at — and resolves brand-published redirects through, never over: pass-through is a license class, not a cache.

On the blog.

  • GS1 Digital Link, explained from the URI down

    A Digital Link URI is the same AI map as an element string, spelled as an HTTP path — /01/{gtin}/10/{lot}/21/{serial} — which is what makes a barcode web-resolvable without making the web its master. The grammar, the round trip, and what resolution adds.

  • Sunrise 2027, stated exactly: what GS1's program requires, and the six things it doesn't

    GS1's own program expects retail POS to scan and process 2D barcodes by end of December 2027, baseline GTIN extraction. Almost everything else said about it in vendor copy fails a GS1-literate reader's check. The six standing corrections, each paired with its primary source.

  • QR or GS1 DataMatrix? One question decides it: who scans

    GS1 DataMatrix clears the POS lane; QR is what a consumer's phone camera reliably decodes. Symbology choice is an audience choice, it belongs to the GTIN owner, and the same GTIN and AIs render as either symbol — two squares, one identity, proven by round-trip.

  • Linksets: the resolver answer is a list of doors, and every door carries its provenance

    RFC 9264 linksets turn "where does this barcode go" into typed navigation. A linkset whose every link carries source, license class, and freshness is a combination no resolver in the field ships — and it is the difference between a list of URLs and an answer an agent can act on.

  • Resolved through brand doors, never over them

    Where a brand publishes its own Digital Link redirect, a neutral resolver's duty is to carry that link in the linkset and resolve through it — because allocation is homed with the issuer, and a resolver that replaces the brand's door is just another walled network with better manners.

Get an API key.

The local verbs run from npx barcoding.dev today with no key. A key opens the network half of the verb set.