Free QR tools · Decoder
Every decoder tells you the string.
This one tells you the rest.
Drop in a photo, point a camera at a label, or paste what your scanner spat out. You get the payload, the symbol's own facts, and · when it is GS1 · every application identifier named, decoded and checked against the dictionary. Read in your browser, on your machine.
nothing uploaded · no signup · 541 application identifiers, checked field by field
nothing is uploaded
Past the string
The string is the easy half.
The rest is the job.
- The symbol's own facts · which symbology and which version, the error correction level the encoder chose, the data mask it landed on, and how many bytes the payload actually costs. These come from the reader that just read it, not from guessing at the artwork.
- The margin you have left · we report how much of the error-correction budget the read did not need. That number is the difference between a code that survives a scuff on a corrugated box and one that stops scanning the first time a forklift touches it.
- Which convention the payload follows · a URL, a WiFi join, a contact card, a calendar event, a two-factor secret. Each one is a vendor convention with its own escaping rules, and each one is pulled apart with the right ones.
- The GS1 layer in full · primary key, qualifiers in canonical order, data attributes from the query string, the company prefix range, and the check character recomputed rather than trusted. The same parser our resolver runs in production.
The GS1 part
Two shapes of the same identity,
and both are read here.
The Digital Link URI
/01/09506000134352/10/LOT-A/21/SN-42 is a GTIN, a batch and a serial written as a web address. The decoder parses it with the same code path our resolver uses to answer a real scan, so a URI it calls malformed is a URI that would earn an HTTP 400 in production · including the ordering rules people trip on, like a qualifier written out of canonical sequence.
Compressed URIs are expanded too. GS1 packs the whole element string into one base64url segment to keep a serialised symbol small enough to print, and an unexpanded one is unreadable to a human by design.
The element string
(01)09506000134352(17)261231(10)LOT-A is what a hardware scanner transmits from a GS1-128, a DataBar or a GS1 DataMatrix. Paste either that form or the raw one, invisible FNC1 separators and all · the parser walks it using the predefined-length table rather than guessing where each field ends.
Dates get their century resolved, measurements get their implied decimal point, and any value that does not fit its AI's format is called out instead of being displayed as though it were fine.
publishing side: the GS1 Digital Link resolver · how it works
The honest part
A read here is not
a read on a shop floor.
This reader runs with every recovery option turned on: rotation, inversion, downscaling, denoising. That is the right setting for "please read my blurry photo", and the wrong one for predicting a scan. A code that only comes back with all of that switched on is a code a fixed scanner at a till may well refuse. If what you need is the print verdict rather than the contents, the studio's scan check measures the opposite thing on purpose: a stock reader, default settings, at descending sizes.
And nothing here is a conformance certificate. We report what the characters say and what the GS1 dictionary says they mean. We do not fetch the URL, resolve the identifier, or ask a registry whether that company prefix is licensed to whoever printed it · none of which can be answered from an image, by us or by anyone. A real ISO 15415 grade needs a hardware verifier reading printed reflectance.
also free: the generator · WiFi codes · vCard codes