Skip to content
ForgePlug — Logo
barcode100% Browser-BasedNo SignupNo WatermarkUpdated Jul 2026

Barcode Scanner

A premium barcode scanner that works entirely in your browser. Scan barcodes using your webcam or mobile camera with live continuous scanning, upload an image file, drag and drop an image, or paste from clipboard. Automatically detects CODE128, CODE39, CODE93, Codabar, EAN-13, EAN-8, UPC-A, UPC-E, ITF, MSI, and Pharmacode barcodes. All processing happens locally using ZBar WebAssembly — your images never leave your device.

Choose Scan MethodLoading Scanner...

No Uploads

Everything stays in your browser

Powered by ZBar

WASM-based scanning library

Zero Tracking

No analytics, no cookies, no data collection

Works Offline

No internet needed after first load

Supported Barcode Formats

All barcode symbologies that the scanner can automatically detect and decode

CODE128

High-density alphanumeric — shipping & logistics

CODE39

Variable-length alphanumeric — government & military

CODE93

Compact alphanumeric — enhanced CODE39

Codabar

Numeric with start/stop — libraries & blood banks

EAN-13

13-digit retail — global standard (except US/CA)

EAN-8

8-digit retail — small product packages

UPC-A

12-digit retail — US & Canada

UPC-E

6-digit compressed — small retail packages

ITF-14

14-digit shipping — outer cartons & pallets

MSI

Variable numeric — warehouse inventory

Pharmacode

Variable numeric — pharmaceutical tracking

How Barcode Scanning Works

Barcode scanning uses image processing algorithms to detect and decode the pattern of parallel bars and spaces in a barcode image.

01

Image Acquisition

The scanner captures an image from your camera, an uploaded file, a dragged image, or a clipboard paste. The image is rendered to an HTML canvas element for pixel-level access.

02

Grayscale & Edge Detection

The color image is converted to grayscale and enhanced to make the bar edges more distinct. Edge detection algorithms identify transitions between dark bars and light spaces.

03

Barcode Localization

The ZBar library scans the image looking for patterns characteristic of barcodes — alternating dark and light parallel lines with specific width ratios. The orientation and location of the barcode are determined.

04

Symbol Decoding

Once the barcode is located, the pattern of bar and space widths is measured and decoded according to the specific symbology (e.g., CODE128, EAN-13). Each symbology has unique encoding rules for representing characters.

05

Check Digit Verification

Many barcode formats include a check digit that is mathematically calculated from the preceding digits. The scanner verifies the check digit to ensure the barcode was read correctly and the data is valid.

06

Result Display

The decoded value is displayed along with the detected barcode type, format details, and scan timestamp. Action buttons allow you to copy, download, or share the result — all without leaving your browser.

Barcode Scanner Use Cases

Practical ways to use barcode scanning in your daily workflow

Retail Product Lookup

Scan EAN-13 or UPC-A barcodes on retail products to identify items, check prices, or verify product information during inventory.

Warehouse Management

Scan CODE128 and ITF-14 barcodes on shipping cartons and pallets for receiving, putaway, picking, and shipping operations.

Inventory Tracking

Use MSI and CODE39 barcodes to track inventory items, assets, and equipment across multiple locations with quick scan-and-verify.

Shipping & Logistics

Scan shipping labels with CODE128 barcodes to track packages, verify addresses, and update delivery status in real time.

Verify Barcode Security

Scan unknown barcodes to preview their content before using them — useful for supply chain security and anti-counterfeiting.

Quick Data Capture

Upload or paste barcode images from screenshots, photos, or emails to instantly extract encoded data without manual typing.

Barcode Types Explained

Understanding different barcode symbologies and where they are used

Retail Barcodes (EAN/UPC)

EAN-13, EAN-8, UPC-A, and UPC-E are the standard barcodes found on retail products worldwide. They encode a product's GTIN (Global Trade Item Number) and are scanned at checkout. These barcodes use fixed-length numeric encoding with check digit verification for reliable scanning.

Logistics Barcodes (CODE128, ITF)

CODE128 and ITF are used in shipping and warehousing. CODE128 is the most versatile barcode standard — it supports the full ASCII character set and offers the highest data density. ITF is specifically designed for outer carton packaging with built-in bearer bars for industrial scanners.

Specialty Barcodes (Pharmacode, MSI, Codabar)

Pharmacode is used for pharmaceutical tracking and tamper-evident packaging, MSI for warehouse inventory control, and Codabar for libraries and blood banks. Each was designed for specific industry requirements and regulatory compliance.

Common Barcode Scanning Problems

Troubleshooting tips for better scan results

  • Blurry or out-of-focus images — the barcode bars must be sharp and distinct for reliable decoding
  • Insufficient lighting — dark or shadowed barcodes are harder for the scanner to distinguish
  • Extreme angles — barcodes scanned at steep angles may appear distorted to the decoding algorithm
  • Partial barcode — if the barcode is cut off or partially obscured, the full pattern cannot be read
  • Low contrast — light-colored bars on a white background or low-contrast color combinations reduce readability
  • Reflection or glare — glossy surfaces can create reflections that obscure the barcode pattern
  • Damaged or worn barcodes — scratches, smudges, or fading can make barcodes unreadable

Frequently Asked Questions

Everything you need to know about scanning barcodes with ForgePlug

Why won't a barcode scan even though I can clearly see it's not damaged?
Usually distance, angle, or lighting rather than the barcode itself. 1D barcodes (UPC, EAN, Code 128) are sensitive to how straight-on the scan line hits the bars — try holding the phone 15-20cm away, parallel to the code, with the flashlight on if lighting is dim. If it still won't go, upload a single sharp photo instead of scanning live video — one clean frame often succeeds where a shaky feed fails.
Is the camera feed or an uploaded image sent anywhere?
No — decoding runs on ZBar compiled to WebAssembly, entirely inside your browser tab. Nothing about the video feed, an uploaded image, or a pasted clipboard image is transmitted anywhere.
What barcode formats does it actually recognize?
11 formats: CODE128, CODE39, CODE93, Codabar, EAN-13, EAN-8, UPC-A, UPC-E, ITF, MSI, and Pharmacode. Format is auto-detected — you don't need to tell it what kind of barcode you're pointing at.
Can I scan straight from a clipboard paste instead of uploading a file?
Yes — copy a barcode image from anywhere and paste with Ctrl+V / Cmd+V directly into the scanner. Useful when the barcode is already in a screenshot rather than a saved file.
Does it keep a record of what I've scanned?
Only for the current tab session, in memory — closing the tab clears it, and nothing is ever written to a server. Clear it manually anytime with the Clear button if you don't want it sitting there during the session.

Why some barcodes just won't scan, no matter how you angle the camera

It's almost never the scanner's fault — here's what's actually going on.

I added camera scanning to this tool after realizing the upload-an-image flow was too slow for the actual use case people had — standing in front of a product or a shipping label and just wanting the number, right now. But camera scanning surfaces a specific set of failure modes that image upload mostly avoids, and it's worth understanding why before you assume the barcode itself is broken.

How it works

Under the hood this uses ZBar, compiled to WebAssembly, running entirely in your browser tab. For a 1D barcode (the classic parallel-bars kind — UPC, EAN, Code 128), the decoder is measuring the exact widths of each bar and space along a scan line and matching that pattern of widths against the symbology's known encoding table. For 2D formats like QR codes, it's a different process — the decoder first locates the three large square "finder patterns" in the corners to establish orientation and scale, then reads the grid of small data modules inside. This is why 1D barcodes are far more sensitive to the angle of the scan line than QR codes are — a UPC code tilted 45° relative to the scan line can fail to decode, while a QR code held at almost any rotation still works, because the finder-pattern step corrects for orientation before the actual data gets read.

A real example

A worn shipping label with a Code 128 barcode where the middle third has faded from handling — the bars are still technically visible but the contrast has dropped enough that a phone camera in dim warehouse lighting can't distinguish bar from background reliably. Switching on the flashlight toggle and holding the phone 15cm from the label (closer than feels natural) usually fixes it, because it increases the light hitting the faded area enough to restore contrast. If that doesn't work, uploading a photo taken with a proper camera flash and letting the tool process a static image — rather than a live, slightly-shaky video feed — often succeeds where live scanning fails, since a single sharp frame beats a stream of slightly-blurred ones.

Common mistakes

  • Scanning too close or too far. Every barcode format has bar widths tuned to a expected scanning distance. Too close and the camera can't fit the full code in frame with margin; too far and the bars blur below the camera's resolvable width. Start around 15-20cm and adjust.
  • Not leaving quiet zone margin around the barcode. If the camera frame or a crop cuts right up against the first and last bars with no white space margin, decoders can misread the boundary. A little empty space on either side of the code, included in frame, actually helps.
  • Assuming a scan failure means the barcode is invalid. Most failures are lighting, angle, or distance — not a broken barcode. Before concluding the code itself is bad, try the upload-image path with a well-lit, straight-on photo; if that also fails consistently, then the barcode itself likely has print or damage issues.

Frequently Asked Questions

Everything you need to know about scanning barcodes

Why won't a barcode scan even though I can clearly see it's not damaged?
Usually distance, angle, or lighting rather than the barcode itself. 1D barcodes (UPC, EAN, Code 128) are sensitive to how straight-on the scan line hits the bars — try holding the phone 15-20cm away, parallel to the code, with the flashlight on if lighting is dim. If it still won't go, upload a single sharp photo instead of scanning live video — one clean frame often succeeds where a shaky feed fails.
Is the camera feed or an uploaded image sent anywhere?
No — decoding runs on ZBar compiled to WebAssembly, entirely inside your browser tab. Nothing about the video feed, an uploaded image, or a pasted clipboard image is transmitted anywhere.
What barcode formats does it actually recognize?
11 formats: CODE128, CODE39, CODE93, Codabar, EAN-13, EAN-8, UPC-A, UPC-E, ITF, MSI, and Pharmacode. Format is auto-detected — you don't need to tell it what kind of barcode you're pointing at.
Can I scan straight from a clipboard paste instead of uploading a file?
Yes — copy a barcode image from anywhere and paste with Ctrl+V / Cmd+V directly into the scanner. Useful when the barcode is already in a screenshot rather than a saved file.
Does it keep a record of what I've scanned?
Only for the current tab session, in memory — closing the tab clears it, and nothing is ever written to a server. Clear it manually anytime with the Clear button if you don't want it sitting there during the session.

Tool Overview

A closer look at Barcode Scanner — how it works, who it's for, and where it fits in your workflow.

Retail staff, warehouse teams, and inventory managers live in a world of barcodes — and the fastest way to read one is a scanner that never needs installation. The Barcode Scanner reads codes from your webcam with live continuous scanning, from uploaded images, via drag-and-drop, or straight from your clipboard. It decodes the formats that actually appear in the wild: CODE128, CODE39, CODE93, Codabar, EAN-13, EAN-8, UPC-A, UPC-E, ITF, MSI, and Pharmacode.

Because decoding runs locally using ZBar WebAssembly, the scanner behaves like dedicated hardware without one: point, scan, and the value appears with its format identified. That's useful for spot-checking product labels, verifying a generated barcode before it goes to print, reconciling a shipment, or handling the occasional code your phone's camera app refuses to read. Results can be copied instantly for entry into a spreadsheet or POS system.

Barcodes can contain internal SKUs and serial data you'd rather not share, so all scanning happens in your browser. Images never leave your device, there's no account to create, and the scanner works offline once the page is loaded.

Key Features

Everything you get with this tool, at a glance.

Live Camera Scanning

Continuous webcam decoding for real-world, on-the-go scanning.

Upload & Drag-and-Drop

Read barcodes from saved images, screenshots, or dropped files.

Clipboard Paste

Paste a copied barcode image and get the value instantly.

11 Symbologies

CODE128/39/93, Codabar, EAN-13/8, UPC-A/E, ITF, MSI, Pharmacode.

Format + Copy Results

See the detected format and copy the value in one click.

ZBar, Fully Local

Decoding runs in-browser via WebAssembly — zero uploads.

How to Use Barcode Scanner

Get from zero to done in four quick steps — no account, no learning curve.

  1. Choose your input

    Use live camera, upload a photo, drag a file in, or paste from clipboard.

  2. Frame the barcode

    Position the code within view — it decodes automatically and continuously.

  3. Check the value

    Review the decoded value and detected format before using it.

  4. Copy or use

    Copy the value into your spreadsheet, system, or verification check.

Practical Examples

Real input and output pairs so you know exactly what to expect.

Scan a product label

Input

Image containing an EAN-13 barcode

Output

Detected: EAN-13 · value 5901234123457

Verify before print

Input

Image of a CODE128 shipping label

Output

Detected: CODE128 · value 1A-2026-8841

Poor quality image

Input

Blurry, low-contrast barcode photo

Output

No barcode detected — use a sharper image

Guides & Articles

Learn how to get the most out of this tool with our in-depth guides.

Was this tool helpful?

Your feedback helps us improve Barcode Scanner for everyone.

Share this tool

Share
Runs in your browser100% privateNo data uploaded