GS1 Digital Link syntax validator
Check a Digital Link URL
A QR code on packaging usually encodes a GS1 Digital Link URI. If the structure is wrong, the scan dead-ends or points at the wrong item. Paste the full URL, exactly as it would be encoded:
This tool supports the uncompressed form with a GTIN primary key. Compressed forms and non-GTIN keys are out of scope for now.
How a Digital Link URI is put together
A GS1 Digital Link is an ordinary HTTPS URL whose path carries GS1 Application Identifiers. Every part has a fixed role:
| Part | Example | Role |
|---|---|---|
| Domain | https://id.example.com | Yours to choose. It is printed on the pack, so it is the hardest part to change later |
| Primary key | /01/09506000134376 | AI 01, the GTIN. Required, and 14 digits |
| Qualifiers | /10/ABC123/21/0001 | Optional path segments that narrow the identifier: CPV (22), then batch or lot (10), then serial (21), in that order |
| Data attributes | ?17=271231&3103=000189 | Query parameters carrying facts about the item, such as expiry date or net weight |
Put together: https://id.example.com/01/09506000134376/10/ABC123?17=271231
The errors that actually show up
- A GTIN shorter than 14 digits.
/01/9506000134376looks reasonable and is not conformant. The primary key is zero padded on the left to 14. - Qualifiers out of order. Serial before lot parses as a different structure, or fails outright. The sequence is fixed: 22, then 10, then 21.
- A data attribute in the path instead of the query. Expiry date is
?17=271231, never/17/271231. - A value that does not match its AI's format. AI 17 is exactly six digits, YYMMDD. AI 10 is up to twenty characters.
- Unescaped characters in a lot code. A bare
%or/inside a batch value breaks decoding. Percent encode it. - http instead of https. The syntax is legal. The cost is a redirect on every single scan, and some scanning apps refuse plain http outright.
What a passing result does not mean
This is a syntax check. It reads the URL and confirms the structure matches the GS1 Digital Link grammar. It does not fetch the URL, and it makes no claim about conformance for any resolver, including ours. In particular it cannot tell you:
- Whether the URL resolves. A perfectly formed Digital Link pointing at a domain with no resolver behind it is a dead scan. See what a GS1 resolver actually does.
- Whether the GTIN is yours, or even assigned. Use the GTIN check digit checker for the arithmetic, and your GS1 member organization for the assignment.
- Whether the destination is right for the batch or serial in the URL. A resolver can return a valid response that sends a shopper to the wrong page.
- Whether the printed symbol encodes this URL. Artwork and data drift apart. Artwork preflight decodes the symbol in a print file and compares.
To check a whole catalog rather than one URL, the free readiness audit applies these same rules to every row and reports the ones that fail.
Check your own catalog
Run a free check for invalid GTINs, duplicates, and destination problems. An account is not required.
Run the free audit