Use the image scanner when
- You have a screenshot, exported label, product photo, or document image.
- You need time to rotate, zoom, or inspect the selected image.
- The camera cannot focus reliably on the physical symbol.
Use an uploaded image when you already have a file, or use the camera when the physical barcode is in front of you. In either case, the decoder still needs a supported format, clear modules or bars, sufficient contrast, and an image that the browser can read.
Choose one JPG, PNG, WebP, or SVG image no larger than 10 MB. Corrupt files and unsupported image types produce an error instead of a fabricated decode.
Include all bars or modules plus the surrounding quiet area. Tight cropping can remove boundaries that the decoder needs.
The browser-side engine returns the decoded value and reported format when it finds a supported symbol. A successful decode confirms what the image represents mathematically, not the truth of the associated product or destination.
The browser must expose a camera stream to the page. If permission is denied, revoked, blocked by the browser context, or another application is using the device, the camera tool reports an error.
Move closer or farther until the bars or modules are sharp. The useful distance depends on the lens, focus mode, symbol size, and lighting; there is no single distance that works for every device.
The shared camera session pauses after a fresh result so the value can be reviewed. Resume the scanner when you are ready for another symbol.
Hold the device steady and wait for the camera to settle. On devices that support it, tapping the preview may help the browser or operating system refocus.
Move the light source, tilt glossy packaging slightly, or adjust screen brightness so reflections do not erase bars, modules, or finder patterns.
Use an image where the symbol is clearly separated from its background. Faded printing, shadows, and compression artifacts can merge adjacent elements.
Avoid extreme angles and curved distortion. A moderate change in angle may reduce glare, but excessive perspective makes module geometry harder to recover.
Successful scans can be added to the browser-local history. When localStorage is available, history can remain after a reload until browser data is cleared; private browsing or storage restrictions may prevent persistence. The current scanner components do not send selected images or decoded values to an image-upload endpoint.
For multiple items, use the batch scanner and CSV export. It keeps a separate browser-local table with quantities, notes, sources, and timestamps.
Phones can scan without this site too, but the built-in camera usually only reads QR codes. For product barcodes and step-by-step instructions, see barcode scan on iPhone or barcode scan on Android.
Treat decoded content as untrusted input
Use the troubleshooting guide to check damage, quiet zones, unsupported formats, image quality, camera permissions, and other common failure points.
Troubleshoot a failed scan