Skip to content

An annotated textile Digital Product Passport

Twenty two rows for one garment, grouped the way a passport groups them, with the rows that resolved and the rows that did not sitting next to each other. The garment and every value in it are invented. The row structure, the resolution states and the reasons on the empty rows are the ones ActivateDigital ships.

Sources as at
26 August 2026
On this page

What you are looking at, and what you are not

The passport below is an example rather than a live artefact. The merchant does not exist, the garment does not exist and every value in it is invented, including the identifier. What is real is the shape: the five groups, the twenty two rows, the resolution states and the kinds of reason that sit on an empty row.

Two reasons for that, and neither is decorative. Published examples here use invented product details as a standing rule, because a worked example on somebody's real product is a statement about their product. And our own live passport service is not yet in a state we would offer as public proof: it currently returns a shell that needs JavaScript before there is anything to read, and an identifier it does not hold does not yet answer with a not-found. Both are being fixed. Until they are, pointing a reader at it as evidence would be asking them to take our word for something we can see is not ready.

Real textile passports exist, ours and other people's, and several are reachable by URL today. This page is not making a comparison between them. It exists because a passport is easier to argue about than to picture, and the argument only becomes concrete when you can see which rows filled in, which did not and what the difference between those two cases actually looks like.

How a scan gets here

The code on the garment carries an address, and the address carries the identifier. For our worked example that address reads:

dppcode.org/p/01/05012345678900

It is written here as text rather than as a link, deliberately. The identifier is invented, so it resolves to nothing, and the live service is not yet in a state we would cite as proof. The shape is the real one. The 01 is the standard application identifier for a product identifier, the number is a GTIN written in fourteen digit form, and the check digit at the end is part of the identifier rather than a formatting convenience.

Three behaviours matter more than the shape. A request that is malformed and a request for something nobody holds are two different answers, and a resolver that gives the same reply to both cannot be told apart from a template. A link type nothing is held for should also come back empty rather than redirecting to whatever page exists, because a recycler asking for end-of-life handling and quietly receiving a marketing page has no way of knowing there was nothing there.

And the identifier is permanent. A code printed into a garment cannot be reassigned, so a wrongly printed one is burned and has to keep answering for as long as the garment exists.

The twenty two rows

Fourteen rows carry an answer. Eight are empty. The annotations under the empty ones are the point of the page.

One convention before the table. A row that is not shown has not been established, which is not the same as a statement that there is nothing to show. On this passport nothing is hidden, so all twenty two appear.

Who is responsible

  • Economic operatorResolved

    Hartwell & Fold Ltd

    Given by the merchant once, then corroborated against a public register. In this case the VAT registration returned the company name, which happens in some Member States and not in others. Where a register returns a validity flag without a name, the value stays as the merchant gave it and the corroboration is recorded as unavailable rather than as failed.

  • Operator contactResolvedPartial

    Unit 4, Bewley Yard, Leeds LS9

    Permanently partial, on every product we have ever run. No public route corroborates a trading address, so the value is as good as the person who typed it and the passport says so rather than implying a check that did not happen.

What the product is

  • Product identifierResolved

    05012345678900

    The check digit is recomputed on every run and never corrected. A corrected identifier passes the check and may identify somebody else's product, which is a worse outcome than an invalid one that is visibly invalid.

  • Model, style and variantResolved

    Rye Overshirt, ecru, M

    The selected options are kept as a structure rather than flattened into one string, because the colour option does real work further down this table.

  • Commodity codeResolvedPartial

    6203.32

    Six digits, offered from a fetched nomenclature and checked against it. Never ten, because at ten digits one cotton garment has twenty candidate codes and choosing between them is a customs decision. A merchant's declared code is not a customs ruling and is never treated as one. The nomenclature is republished annually, so this row ages on a known cycle.

  • Fibre compositionResolved

    Cotton 100%

    Read from a structured field rather than from the description. Ecru is declared as the colour, so it is not read as a fibre name, which it also is. Several rows below inherit this denominator. See fibre composition.

  • Country of originResolved

    PT

    Recorded from the store, never searched for and never adjudicated. Where variants of one product disagree, no product-level origin is produced at all, which is legitimate and more common than people expect.

  • Product weightResolved

    0.412 kg

    Net product mass, without packaging. Seven kinds of mass exist and only this one publishes. Where a merchant says their weights include packaging, the value is withheld rather than adjusted, because there is no tare table behind an adjustment and an invented one would propagate into four calculated rows.

  • Care instructionsResolvedPartial

    Machine wash 30, do not tumble dry, warm iron

    Three of the five care dimensions, read from the merchant's own words. Bleaching and professional care were not stated and are not inferred. No care symbol is displayed anywhere, because the symbols are licensed and we do not hold a licence.

Supply chain

  • Production facilitiesNot established

    empty

    The merchant has not named a facility, and nothing here searches for one. A supply chain assembled from a name match would look completely convincing and would sometimes be somebody else's factory. There are public records that would help, and confirming one of them anonymously and free of charge is not possible, which is an access problem rather than a claim that the data is missing from the world.

  • Recycled contentNot established

    empty

    No recycled claim was made about this garment. That is not a finding of zero per cent, and virgin is never inferred from the absence of recycled. Silence is not zero, and publishing an unevidenced zero would be a sustainability claim rather than a blank.

  • Safety certificatesNot established

    empty

    No certificate number was supplied. Having no certificate is entirely lawful, so this row never shares a visual treatment with a legal duty that has not been met. Where a number is supplied it is checked against the scheme's own register, and the answer recorded is that a certificate exists, who checked and when, rather than that the product is certified.

Modelled impact

  • Carbon footprintResolvedModelled

    7.72 kg CO2e

    Ecobalyse's own answer at version 7.0.0, recorded and republished unaltered with a link that reproduces it. It is the French government calculator's figure and not ours, it is modelled rather than measured, and it is French rather than European. Three significant figures are shown. The calculator returns six, which is serialisation rather than accuracy.

  • Water impactResolvedModelled

    0.611 m³ eq

    A scarcity weighted figure, not litres of water. Scarcity factors vary enormously between watersheds, and a garment's country of origin is not the country its fibre was grown in, so using the making country's factor for cotton grown elsewhere would be wrong by a wide margin and would look entirely plausible.

  • Durability coefficientResolvedModelled

    0.93

    A dimensionless multiplier from a French regulatory formula. It incorporates no test result, no fibre property and no fabric weight, so it is not a physical measurement of how long the garment lasts. Where our figure disagrees with the one the calculator itself divided by, the adjusted result is withheld and the calculator's undivided figure is published instead.

  • Microfibre sheddingResolvedModelled

    72.8 impact points

    A semi quantitative supplement under the French official methodology, reproduced against that methodology's own worked example. It is not milligrams per wash, not grams of plastic released and not a measured emission. Where an input is missing the whole figure is withheld, because a sum with a term dropped out of it gets smaller, stays publishable and is wrong.

  • Recyclability routeProvisional method

    not published

    No agreed method for scoring textile recyclability exists yet, and the standards committee working on one has not reported. Anyone publishing a recyclability score today is publishing their own opinion. Ours carries a provisional flag internally and does not go onto a public passport while that is true.

Compliance

  • Conformity declarationsNot applicable

    No declaration required

    Ordinary apparel falls outside the regimes that require a declaration of conformity. That reading is ours rather than a statement any instrument makes, and it is labelled as ours. Not applicable is a finished answer here rather than a gap, and the row leads with it and then says why.

  • Substances of concernNot established

    empty

    No supplier declaration has been received. Nothing here turns that silence into a reassuring sentence about the garment. Absence of a word is not absence of a thing.

  • SCIP referenceNot established

    empty

    A reference can be recorded by whoever notified. It cannot be discovered from a product identifier by anybody, and the reasons are properties of the database rather than of our search. See SCIP reference.

  • Repair routeNot established

    empty

    Nothing could have answered this from data. It is a commercial arrangement that a business either has or does not have, and this one has not told us about one.

  • Producer registrationNot established

    empty

    Waiting on a declared market list. Registration duties are per market and the registers are national, so the question of which markets is answered before any register is queried. Shipping settings are not treated as an answer to it.

How to read a passport like this

Start with the empty rows rather than the full ones. Eight of the twenty two here are empty and they are empty for five distinct reasons, which is more informative than the fourteen that resolved.

Two of them are waiting on a supplier. One is a structural dead end that no amount of software fixes. One is waiting on a standards body. One is a business decision the brand has not made. And the modelled rows, which look like the most sophisticated part of the artefact, are the ones most dependent on two of the simplest rows above them, being the composition and the weight.

That is the honest shape of a textile passport today. Most of the difficulty is not in the technology, and most of the empty boxes are not defects.

Sources

One source this page depends on is not listed below. The address grammar the example uses is defined in a standard that is in the registry and has not been read: the entry records that the link resolves and nothing more. Naming a standard we have not opened would be a citation the reading behind it does not support, so this page describes the behaviour instead and the standard is cited nowhere until a person has reviewed it.