A worked example, rendered from real sample data. Sign in to run the tool on your own input.
5901234123457═══ What this tool did ═══
✗ No image was scanned. There is no camera and no image decoder on this page. This page runs entirely on the server that rendered it and makes no outbound network calls.
ℹ It works on the digits you typed: the check digit is recomputed from scratch, the symbology is deduced from the length and structure, and the GS1 prefix is looked up in a table that ships with this page.
═══ Symbology ═══
Digits: 13
Most likely symbology: EAN-13 (GTIN-13)
═══ Check digit ═══
Algorithm: GS1 modulo 10 — weight each digit 3, 1, 3, 1 … from the right, sum, then the check digit is whatever makes the total a multiple of 10.
Body: 590123412345
Printed check digit: 7
Computed check digit: 7
✓ Valid — this number is internally consistent. It does not mean the product exists; only GS1 and the brand owner know that.
═══ What the number means ═══
GTIN-14 normal form: 05901234123457
GS1 prefix 590: GS1 Poland
ℹ The prefix is the GS1 member organisation that allocated the company prefix. It is where the number was registered, not where the product was made.
═══ Commands that read a real barcode image ═══
zbarimg --quiet --raw barcode.png
zbarimg --quiet -Sean13.enable -Sisbn13.enable barcode.jpg
python3 -c "from pyzbar.pyzbar import decode; from PIL import Image; print(decode(Image.open('b.png')))"
zint -b 13 -d '5901234123457' -o ean13.png # generate one to test with
ℹ zbarimg reports the symbology it actually found, which is the part no amount of digit analysis can tell you.
═══ What a check digit can and cannot tell you ═══
• A valid check digit means t
…
Verify EAN, UPC, ITF-14 and SSCC check digits, expand UPC-E, decode GS1 element strings and look up the GS1 prefix. Part of the DevTools Surf developer suite. Browse more tools in the Images collection.