AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I scan or read a barcode on my computer?

Open AnyTool Barcode Reader. Choose “Scan with camera” to point a barcode at your webcam — it decodes live and names the format — or choose “Upload image” to drop, paste or pick a photo or screenshot of a barcode and decode it once. It reads 1D barcodes (EAN-13, UPC-A, Code 128, Code 39 and more) and 2D codes (QR, Data Matrix, Aztec, PDF417), shows the value with a format badge, and lets you copy it. Everything runs in your browser, so the camera feed and images are never uploaded — and it reads the code only, it does not look up the product.

  • Scan live from your camera or decode a barcode from an uploaded image
  • Uses your browser’s native BarcodeDetector when available, with a bundled ZXing fallback for every browser
  • Reads 1D codes (EAN-13/8, UPC-A/E, Code 128/39/93, Codabar, ITF) and 2D codes (QR, Data Matrix, Aztec, PDF417)
  • Shows the decoded value and the matched format, with copy and a per-tab scan history
  • 100% client-side — the camera feed and images are processed locally and never leave your device

What is

GTIN (Global Trade Item Number)

A GTIN is the number encoded in a retail product barcode such as EAN-13 or UPC-A — a globally unique identifier for a trade item. A barcode reader decodes the bars into this number, but the number alone is just an identifier: looking up the product, brand or price behind it requires a separate database. AnyTool Barcode Reader decodes the GTIN locally and shows it to you, but deliberately does not query any product database, so nothing about the code ever leaves your device.

Generators

Related terms

EAN-13UPC-ABarcodeDetector APIZXing

Frequently Asked Questions

Yes. The camera feed and any image stay in your browser and are never uploaded; the tool reads the code locally and looks nothing up.

AnyTool Barcode Reader decodes entirely on your device — the camera stream and any image you upload are processed in your browser and are never recorded or sent to a server, so there is no account, no upload and no storage. Scanning a code only reads its value; it does not contact any product database or open anything automatically. If a barcode happens to encode a web link, the tool shows you the address so you can check it before opening, because a code can point to a malicious site.

Yes. Switch to Upload image, then drop, paste or pick a photo or screenshot of the barcode to decode it.

Choose “Upload image” and drop a file onto the page, paste an image from your clipboard, or click to pick one. The picture is decoded once on your device and the matched value and format are shown. This is ideal when a barcode is hard to hold steady in front of a camera, is already on your screen, or you only have a photo of it. The image is processed in your browser and is never uploaded.

Usually the code is too small, blurry, damaged or low-contrast, or the angle is off. Improve the light, hold steady, keep 1D barcodes horizontal, or upload a sharp photo.

A barcode reads best when it is sharp, well-lit, flat and fills the frame. 1D barcodes (EAN, UPC, Code 128/39) scan most reliably held horizontally with the bars upright and unblurred. Scans fail most often from motion blur, glare, dim light, a damaged or partially covered code, or a code printed too small. Try steadying your hand, improving the lighting, moving closer, or — if the live scan struggles — taking a clear photo and using the Upload image mode instead. Some browsers (Firefox and Safari) lack the fast native barcode detector, so AnyTool falls back to a bundled ZXing decoder that reads the same formats a little more slowly.

No. It reads the number or text in the code; it never looks up the product, price or brand, because that would need a network database.

A product barcode such as EAN-13 or UPC-A encodes a GTIN — a unique number — but the number on its own does not say what the product is. Identifying the product requires querying a database over the network, which this tool deliberately does not do, so nothing about the code ever leaves your device. AnyTool Barcode Reader decodes the value and tells you the format and that it looks like a product code, and you can copy the number and search it wherever you like.

Detailed Explanation

Technical Details

How the Barcode Reader Decodes

AnyTool Barcode Reader works two ways, both entirely in the browser. For live scanning it calls navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } }) to open a back-facing camera into a muted, playsInline video element. Where the native Barcode Detection API is present (Chromium-based browsers and Android) it creates a BarcodeDetector configured for many formats and runs a requestAnimationFrame loop that draws each frame to an offscreen canvas and calls detector.detect(canvas); where it is not (notably Firefox and Safari) it lazily imports @zxing/browser and uses BrowserMultiFormatReader.decodeFromVideoDevice(deviceId, video, callback), which owns the stream and reports each hit with result.getText() and result.getBarcodeFormat(). For image decoding it draws a dropped, pasted or uploaded picture to a canvas and decodes it once with the same native-first, ZXing-fallback path (BrowserMultiFormatReader.decodeFromImageElement). ZXing is lazily imported into its own chunk so it is never part of the app shell, and on a hit the tool optionally plays a short WebAudio beep.

  • Camera: getUserMedia → native BarcodeDetector rAF loop, or ZXing decodeFromVideoDevice
  • Image: dropped, pasted or uploaded picture decoded once on a canvas / image element
  • Native BarcodeDetector (Chromium / Android) with an @zxing/browser fallback everywhere
  • ZXing is lazily imported into its own chunk, so it is not in the app shell
  • Reads 1D (EAN, UPC, Code 128/39/93, Codabar, ITF) and 2D (QR, Data Matrix, Aztec, PDF417)
Methodology

Formats, Results and the No-Lookup Promise

On a successful decode the tool shows the raw value and a format badge — EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93, Codabar, ITF, QR Code, Data Matrix, Aztec or PDF417 — labelled as a 1D linear code or a 2D matrix code, normalising the differing format names returned by the native detector and by ZXing’s BarcodeFormat enum. When the format is a retail product code (EAN/UPC), it notes that the value looks like a GTIN but is candid that it reads the number only and does not look up the product, price or brand, because that would require a network database; nothing about the code is ever sent anywhere. If a barcode encodes a web link, the value is shown with a caution to verify the address before opening. Results can be copied, and every scan is kept in a per-tab history with a copy and, for links, an open shortcut.

  • Names the matched format and whether it is a 1D or 2D code
  • Normalises native-detector and ZXing BarcodeFormat names to one set of labels
  • EAN/UPC flagged as a likely GTIN, but the product is never looked up (no network)
  • Barcodes that encode a link are shown with a verify-before-opening caution
  • Copy any value; per-tab scan history with copy and safe open
Privacy & Security

Privacy and Honest Limitations

All decoding happens on the device: the camera stream and any uploaded image are processed in the browser and are never recorded or sent to a server, there is no account or storage, no product database is queried, and the scan history lives only in the open tab. The camera runs only while scanning is active — stopping the scan or leaving the page stops every media track (turning the camera light off), resets the ZXing reader, cancels the animation-frame loop and revokes object URLs. The tool is candid about its limits: damaged, tiny, blurry or low-contrast codes may not read, so good light, a steady hold and filling the frame help, and 1D barcodes scan best held horizontally with the bars upright; a sharp photo via Upload image is a reliable alternative; the fast native BarcodeDetector is absent in Firefox and Safari, where the bundled ZXing fallback is slightly slower; live scanning requires camera permission and a secure (https) page; and it reads the code only — it does not identify the product.

  • Camera feed and images are processed locally and never uploaded
  • Stopping or leaving the page releases the camera, resets ZXing and cancels the loop
  • Scan history is per-tab only — nothing is stored on a server, no database is queried
  • Damaged, tiny or low-contrast codes may not read — use light, steadiness or a photo
  • Live scanning needs camera permission and a secure (https) context
Barcode reading: in-browser (AnyTool) vs typical online scanners
CapabilityAnyToolTypical online scanners
ProcessingRuns in your browser, no CDNOften uploads the image to a server
PrivacyCamera feed & images never leave the deviceImage may be uploaded and stored
InputLive camera + uploaded/pasted imageOften image upload only
DecoderNative BarcodeDetector + bundled ZXing fallbackServer-side library
Formats1D (EAN, UPC, Code 128/39…) + 2D (QR, Data Matrix, PDF417…)Often limited
Product lookupNone — reads the code only, by designSometimes, via a server database
Cost / signupFree, no signup, no watermarkOften gated or ad-heavy

AnyTool decodes every barcode locally in the browser and uploads nothing — neither the camera feed nor any image — and never looks up the product.