Skip to main content
Develop Tools
← Return to usage guide

Read Barcode Images | Complete guide to use, settings, and troubleshooting

Barcodes received through email, PDFs, or web pages can be analyzed directly from the image without using another device's camera. Retain the original image and margins, and verify both the raw value and format.

Choose a barcode format based on the input value and intended use, then generate and verify scanning
Choose a barcode format based on the input value and intended use, then generate and verify scanning

Generate barcodes in the Browser and read them from images or a camera

Generate and scan supported formats on the same page without sending input values, images, or Camera Frames externally.

Read barcode images

Conclusion: Read the original image before recompression and compare raw values and format with the source material

You can select, Drop, or paste PNG, JPEG, WebP, GIF, or BMP from the Clipboard; supported Browsers try BarcodeDetector and then the bundled ZXing.

When an image contains multiple barcodes, the native API may return multiple results, but the fallback or image conditions may yield only the first one, so batch detection is not guaranteed.

Check number validity, image generation, successful scanning, and compliance with business standards separately.

Check the image file and barcode area separately

First, check whether the image opens as a supported format; next, whether the entire barcode and left/right margins are included; and finally, whether the lines are distinct and have contrast.

HEIC and PDF files themselves are not handled directly as image input. If necessary, use image conversion or a screenshot to create PNG / JPEG, and save it without cropping out the barcode.

Account to checkHow to checkjudgment
FileExtension and MIMESupported images
CompositionLeft/right margins and overallNo clipping
ResultRaw value / formatOriginal document match
MultipleCount and positionAlso check each item individually

How to check using the barcode generation and reading tool

  1. Select, drop, or paste an image.
  2. Check the entire Barcode and margins in Preview.
  3. Check the format and Raw values of the analysis result.
  4. Copy the value and compare it with the original material or another reader.

Before uploading images containing confidential management or membership numbers to an external reader, check the handling conditions.

Isolating image reader issues

SymptomInitial checkNext steps
The image does not openFile formatConvert to PNG / JPEG
Do not detectSpacing and line widthTry again with the original image
The values differDetected formatCompare with a different reader.
Miss multiple itemsPlacement and countCrop one item at a time.

Choose a barcode format based on the value's use and character set

FormatMain inputHow the current tool handles it
JAN-13 / EAN-13A 12-digit body value or a completed 13-digit valueAdd a check digit for 12 digits; validate for 13 digits.
JAN-8 / EAN-8A 7-digit body value or a completed 8-digit valueAdd for 7 digits; validate for 8 digits.
UPC-AAn 11-digit body value or a completed 12-digit valueAdd for 11 digits; validate for 12 digits.
ITF-14A 13-digit body value or a completed 14-digit valueAdd for 13 digits; validate for 14 digits.
Code 128Alphanumeric characters, symbols, and moreFlexibly represent management numbers and similar values. Also check the encoder specification for allowed input characters
Code 39Uppercase alphanumeric characters, space, .-$/+%Convert lowercase to uppercase before generating
ITFAn even number of digitsTreat odd digit counts and non-digits as errors
Codabar / NW-7Numbers and some symbols; start and end characters A–DValidate rules that include start and end characters

Even for the same value, the bar-and-space pattern changes if the format differs. Check not only the raw value returned by the reader but also the detected format, and match the format accepted by the POS register, handheld scanner, and logistics system you use.

Do not confuse a check digit with the official identification number

JAN / EAN / UPC / ITF-14 numbers end with a check digit calculated from the preceding digits. DevelopTools calculates the final digit for body digits and verifies a match for complete digits. This mechanism finds input errors; it does not prove that a number has been officially assigned to a product.

  • GTIN-13 (standard JAN type) consists of a 12-digit body value and a 1-digit check digit
  • GTIN-8 (short JAN type) consists of a 7-digit body value and a 1-digit check digit
  • GTINs used for product distribution must follow GS1 company prefix and product information registration rules
  • Generating an image from arbitrary numbers does not acquire or register an official JAN code.

Check Quiet Zone, line width, height, and Contrast in the final medium.

For one-dimensional barcodes, establish reading conditions including unprinted quiet zones on both sides, the X-dimension that is the width of the narrowest bar or space, bar height, and contrast with the background. They may be readable on screen but fail after scaling, image interpolation, print bleeding, gloss, folds, or low resolution.

confirmationStates likely to failRecommended Action
Quiet ZoneThere are characters, borders, or images immediately before the bars.Regenerate and reposition while retaining left and right whitespace
line widthThin lines collapse when reduced or scaled at non-integer ratiosGenerate at the target size without changing the aspect ratio.
ContrastThin bars, dark backgrounds, and multicolored barsPrioritize dark solid bars and a light solid background
Image qualityJPEG recompression, blur, reflection, low resolutionRecreate it from the original PNG / SVG and test with the actual item
printingUnintentional scaling with Fit to pageMeasure the actual dimensions and verify with the scanner that will be used

Validate from generation through actual use with a round trip

  • Confirm the input value and format, then check the displayed value and check digit after generation.
  • Save PNG and SVG, then return them to the tool's image Reader to compare Raw values and formats.
  • Read again after actual steps such as rotation, scaling, screenshots, and printing
  • Do not stop with self-testing using the same library; also check with the planned scanners and devices.
  • When scanning fails, isolate format, digit count, quiet zone, line width, contrast, and image quality one item at a time.

Generating with the same browser and reading it with that same browser is a useful regression test, but it does not guarantee compatibility including store scanners, logistics scanners, printers, and paper quality. For business use, make validation with the target device and physical label a completion criterion.

Process input values, images, and camera video in the browser.

The current tool runs bundled libraries in the browser and does not send generated values, read images, camera frames, or decoded raw values to the DevelopTools server or third-party APIs. It releases object URLs created during image selection after use and stops MediaStream tracks when the camera stops.

  • Do not automatically send Raw values to the product search API.
  • Request camera permission only after the user presses the start button
  • Even when measuring scan-success events, do not include raw values or the image itself in analytics.
  • Barcodes are not encryption, so do not encode and publish secret information

What the current tool can generate and read

FunctionSupport in the current Tool
Generation formatCode 128, Code 39, JAN-13 / EAN-13, JAN-8 / EAN-8, UPC-A, ITF, ITF-14, Codabar / NW-7
Generation settingsHorizontal scale, height, left and right quiet zones, human-readable text display, bar color, and background color
Generated resultDisplay confirmed values, check digits, and formats; save as PNG or SVG
Image inputSelect, drop, or paste PNG, JPEG, WebP, GIF, or BMP from the Clipboard.
Scanning processOn supported browsers, try BarcodeDetector first; if detection fails, fall back to the bundled ZXing
CameraAfter an explicit action, start with preference for the rear camera, and release the MediaStream when stopped.
UnsupportedGeneration of UPC-E, GS1-128, GS1 DataBar, and DataMatrix; product Database search; professional Barcode quality verification

The image reader displays the detected format and raw value. However, formats returned by BarcodeDetector vary by browser, and the bundled ZXing image fallback generally handles only the first detected result. It does not promise batch detection of multiple codes or equal reading accuracy for every standard.

Check standards and Web APIs using primary sources

For official GTIN settings and barcode dimensions, prioritize GS1 / GS1 Japan; for browser support, use actual BarcodeDetector.getSupportedFormats() and compatibility tables; for camera permission, use the getUserMedia specification; and for library APIs, use the official documentation for the version in use. DevelopTools uses bwip-js as its generation library; do not confuse JsBarcode article examples with the current implementation.

Example: Read a management number from a report screenshot

Save a screenshot while the whitespace on both sides of the barcode remains, then drop it into the reader.

Check the detected format and raw value, and compare them with the human-readable text printed on the report.

  1. Save original image
  2. Drop
  3. Format and value verification
  4. Compare with the printed value

Resizing Screenshots again or resaving them on social media blurs thin lines, so use the original image when possible.

Frequently asked questions

Can a JAN code be created from any numbers you like?
Image generation alone can draw numbers with valid digit counts and check digits, but it does not make them GTINs that can be formally used for commercial products. Check GS1 company prefix and product information setup and registration rules.
If it can be read on screen, will it always be readable after printing?
Cannot guarantee. Print Size, Quiet Zone, minimum line width, bleeding, paper/Label reflectivity, and Scanner performance vary, so check with full-size printouts and the intended device.
Can the product name also be identified from the scan result?
The current Tool retrieves only the Raw value encoded in the barcode and the detected format. It does not connect to external product Databases that retrieve product names or prices.