Barcode Scanner — Read Barcodes From Camera or Image
Read EAN, UPC, Code 128, Code 39 and other barcodes from your camera or an image. Free, no sign-up, and your files never leave your device.
Free, with no sign-up and no watermark. The file is processed in your browser and never uploaded.
Read EAN-13, EAN-8, UPC-A/E, Code 128, Code 39, Code 93, ITF, Codabar, Data Matrix, PDF417 and QR codes with your camera or from an image. The browser's built-in detector is used where available (e.g. Chrome on Android and macOS); otherwise the open-source ZXing decoder runs on your device.
Step by step
- Start the camera: Click Start camera and point it at the barcode, horizontally across the bars.
- Or scan an image: Click Scan an image or drop a photo.
- Copy the result: The code, its format and recent scans are shown.
Handy for
Stock checks
Read product codes without a hardware scanner.
Testing labels
Confirm printed barcodes scan correctly.
Looking up products
Get the EAN to search for a product.
Documents
Read PDF417 or Data Matrix codes on tickets and labels.
Good to know
Fill most of the frame with the barcode and avoid glare.
Blurry phone photos of small barcodes are the most common cause of failures.
Questions
Is anything uploaded?
No — decoding happens entirely on your device.
More Developer Tools tools
- JSON Formatter & Validator — Beautify, minify and validate JSON with exact error positions, key sorting and a collapsible tree view.
- JSON to CSV Converter — Turn a JSON array into CSV with nested fields flattened to dot paths and a choice of delimiter.
- CSV to JSON Converter — Convert CSV or TSV into a JSON array, with header detection, type inference and nested keys from dot paths.
- JSON to XML Converter — Convert JSON into well-formed, indented XML with configurable root element and attribute handling.
- XML to JSON Converter — Parse XML into JSON, keeping attributes under a prefix you choose and converting numbers and booleans.
- YAML to JSON Converter — Convert YAML (including multi-document files) into JSON using a safe loader that never runs custom tags.