Barcode Scanner Online

Read every 1D / 2D barcode in a PNG or JPEG: EAN-13 / 8, UPC, Code 128 / 39 / 93, ITF, QR, DataMatrix, PDF417, Aztec, with position and GS1 country.

Free tool: 20 requests per minute.

Result

Press “Run” to see the result.

Upload a photo or a scan and get all the barcodes found in it, with their format, decoded text, corner positions and orientation. Linear codes: EAN-13, EAN-8, UPC-A, UPC-E, ISBN, Code 128 (shipping labels), Code 39, Code 93, Codabar, ITF / ITF-14 and GS1 DataBar. Matrix codes: QR, Micro QR, rMQR, DataMatrix (medicines, electronic parts), PDF417 (tickets, ID documents), Aztec and MaxiCode. Rotated, mirrored and inverted (light on dark) codes are tried automatically; formats=ean13,code128 limits the search (faster, fewer false hits) and max caps the number of codes.

Retail codes come with the GTIN-14 and the GS1 prefix country (893 = Vietnam), the same table as /v1/gtin-check. QR codes are classified (URL, Wi-Fi, vCard…) and VietQR payment codes are decoded into bank, account and amount. Binary payloads are returned in base64.

Decoding uses zxing-cpp compiled to WebAssembly (zxing-wasm, MIT / Apache-2.0), running inside our servers: images are not sent to any third party nor stored. Images over 2400 px are scaled down first; limit 30 megapixels within the file size of your plan. Sharp, well-lit photos where the code is at least ~2 px per bar read best.

Use this in your code

curl -X POST "https://apibox.io.vn/v1/barcode-read" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "0=@./my-file"

API documentation → Get a free API key

FAQ

Can it read several codes in one image?

Yes, up to 50 (20 by default), each with its corners in pixels of the original image.

Why is a UPC-A code returned as EAN-13?

A UPC-A code is an EAN-13 starting with 0; the reader reports the 13-digit form, which is also the valid GTIN.

Which image formats are accepted?

PNG and JPEG. Convert HEIC / WebP first (for example with /v1/image-resize).