Skip to main content

QR codes and the resolver

Every published battery product carries a QR code that links the physical item to its Digital Product Passport. Scanning it with any phone camera opens the passport in a browser, no app required. This page explains the journey from scan to passport.


The QR code encodes a GS1 Digital Link URL. This is an open industry standard for turning a product's identifiers into a web address. On Traceable the link takes the form:

https://app.traceable.digital/01/{gtin}

where {gtin} is the product's Global Trade Item Number. When a scanner opens this address, Traceable looks up the GTIN, finds the matching product, and renders its passport straight away. The GS1 URL stays in the browser's address bar (there is no redirect to a different-looking link), which keeps the address predictable and shareable.

If a GTIN ever matches more than one product, the resolver renders a chooser page listing the matching products so you can pick the right one, rather than silently serving the oldest match. In normal operation this should not happen, because a GTIN can belong to only one product across the platform; the chooser exists so that an ambiguous link is never resolved by guesswork.


Serial and batch level

The link can be more specific than a single product model. Extra segments identify an individual unit or a production batch:

https://app.traceable.digital/01/{gtin}/21/{serial}
https://app.traceable.digital/01/{gtin}/10/{batch}
  • 21/{serial} identifies a specific serial number.
  • 10/{batch} identifies a batch or lot.

Traceable matches these against the product's own serial number and batch identifier. If the combination is not recognised, or the link is malformed, the resolver returns a Product Not Found page (HTTP 404) rather than guessing at a match.

Serial and batch values follow the GS1 rule for these Application Identifiers: at most 20 characters, printable ASCII, no spaces. A link whose serial or batch segment breaks that rule returns 404 by design; the platform now enforces the same limit when operators enter these identifiers, so a published passport's item-level link and its printed QR code always agree.


Machine clients

The same link serves both people and software. A browser receives the human-readable passport page. A machine client that asks for structured data (by sending an Accept: application/ld+json request header) is instead sent to the passport's JSON-LD endpoint, following GS1 Digital Link content negotiation. This lets automated systems read the passport data directly.


Opaque item codes (/i/<code>)

A second, shorter resolver address exists alongside the GS1 Digital Link:

https://app.traceable.digital/i/{code}

{code} is a 14-character opaque code (not a GTIN) that serves as the item-level identifier for products being prepared for the EU Digital Product Passport Registry, and as a fallback carrier for products that do not have a GTIN. It behaves the same way as /01/{gtin}: the code stays in the browser's address bar, and a machine client asking for application/ld+json is sent to the same JSON-LD endpoint instead of the HTML page.

When a code exists

A code is minted when the manufacturer prepares a product for EU-registry registration in their operator portal, so only products in registry preparation have one. A code that does not exist, is malformed, or belongs to a product that is not publicly served returns the same Product Not Found page; the resolver never distinguishes "hidden" from "nonexistent". Most passports today are still reached through their GTIN-based /01/{gtin} link.

Voluntary passports

Some battery categories have no passport obligation under EU Battery Regulation 2023/1542 Article 77(1): SLI batteries, portable batteries, and industrial batteries with a capacity of 2 kWh or below. A manufacturer can still publish a passport for such a battery voluntarily, and the passport tells you so in two places:

  • A notice at the top of the page: "Voluntary passport: a battery passport is not required for this battery category under Regulation (EU) 2023/1542 Art. 77(1). The manufacturer publishes this product information voluntarily."
  • In place of the regulation-conformance score that mandated passports carry, a chip reading "BattReg N/A (voluntary DPP)", because conformance scoring against the mandatory-passport rules does not apply to a category outside the mandate.

A voluntary passport is otherwise a normal passport: the same viewer, the same QR resolution, the same document access rules.


Withdrawn products

If a product has been withdrawn by its manufacturer, the human-readable page shows a styled notice explaining that the passport has been withdrawn, along with any withdrawal reason, details, and manufacturer contact the manufacturer supplied.

The machine-readable JSON endpoint for a withdrawn product returns HTTP 410 Gone, the correct signal to automated clients and search engines that the resource has been intentionally removed.


Was this page helpful?