ZapPebble
ZapPebble

QR & Barcode Scanner

Scan QR codes, EAN, UPC, and Code 128 barcodes from image files or camera video. Inspect detected content securely before opening.

Generators & ScannersProcessed locallyNo account needed

Drag & drop files here, or click to browse

Upload or drop any photo or screenshot containing a QR code or barcode

PNG, JPG, WEBP, GIFUp to 50MB100% Private
100% Client-Side Scan Engine • No images sent to any serverSafe Preview Active

Decoded Results

Upload an image or start camera to scan

Supported FormatsClient Software Engine
QR CodeEAN-13EAN-8UPC-AUPC-ECode 128Code 39ITF

How to use QR & Barcode Scanner

Simple steps to get your task done in seconds

01

Choose Upload or Camera Mode

Select Upload Image to scan screenshots, photos, or graphics, or select Scan with Camera to scan physical codes with your webcam.

02

Provide Image or Start Camera

Drop or select your image file, or click Start Camera and align the QR code or barcode within the on-screen viewfinder reticle.

03

Inspect Decoded Value & Open or Copy

Review the detected format and plain text result. Copy the value to your clipboard with one click, or safely open verified HTTP/HTTPS web links.

Browser-Based QR & Barcode Scanning

ZapPebble lets you scan QR codes and supported 1D barcodes directly inside your browser from an image file or your live device camera. All visual analysis and decoding execute 100% locally in browser memory without uploading your pictures or streaming your camera feed to remote servers.

Image & Camera Modes

Drag and drop screenshots, photos, and saved graphics, or click to activate your device camera for real-time viewfinder scanning.

Multi-Format Decoding

Decode 2D QR Codes alongside popular 1D retail and logistics barcodes: EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, and ITF.

Safe Link Inspection

Scanned values are displayed as plain text first. The scanner never auto-redirects, letting you inspect URLs before choosing to open them.

How to Scan a QR Code or Barcode

Scan and extract data from any code in three straightforward steps:

1

Choose Upload or Camera Mode

Select Upload Image if you have an image file, screenshot, or downloaded graphic. Select Scan with Camera if you want to scan a physical label, printed ticket, or screen using your device webcam.

2

Provide Image or Start Camera

In upload mode, drop or browse your image file (PNG, JPG, WebP, GIF). In camera mode, click Start Camera, grant the browser permission prompt, and hold the code inside the blue viewfinder reticle.

3

Review Decoded Result

The detected code format, timestamp, and decoded value appear immediately. Click Copy Value to copy to your clipboard, or click Open Link if the result is a verified web URL.

Upload an Image or Scan With Your Camera

ZapPebble provides two distinct input paths to accommodate both digital files and real-world physical codes:

Image Upload Mode

Upload mode is engineered for digital graphics and previously captured photos. When an image file is selected, ZapPebble mounts the image in an off-screen HTML5 canvas element, renders it over a solid white background to eliminate transparency issues, and runs multi-scale decoding passes.

  • Best for: Screenshots from messaging apps, downloaded QR codes, scanned PDF graphics, saved photos, and digital shipping invoices.
  • Supported formats: PNG, JPG/JPEG, WebP, and non-animated GIF.
  • Multi-code support: If an image contains multiple codes, ZapPebble attempts to report all detected results simultaneously.

Camera Scan Mode

Camera mode turns your laptop webcam or smartphone rear camera into an interactive scanner. Camera access is never started automatically; you must explicitly click Start Camera and confirm your browser's permission prompt.

  • Best for: Printed QR codes on posters, event badges, restaurant menus, retail product packaging, and barcodes on physical books or packages.
  • Performance throttled: Video frames are analyzed at an optimized 180ms interval to maintain responsive UI and minimize battery and CPU consumption.
  • Auto-stop on detection: Once a code is recognized, the camera stream stops immediately and releases hardware tracks, preserving device privacy and power.

Supported QR and Barcode Formats

ZapPebble decodes both 2D matrix symbols and 1D linear barcodes commonly used across web links, consumer retail, and supply chain operations:

SymbologyDimensionEncoding CapabilityPrimary Real-World Usage
QR Code2D MatrixUp to 7,089 numeric or 4,296 alphanumeric charactersWeb URLs, WiFi credentials, contact cards (vCard), authentication tokens, digital payments
EAN-13 & EAN-81D Linear13 or 8 numeric digits with modulo-10 checksumInternational consumer retail products, books (ISBN-13), groceries, and packaging worldwide
UPC-A & UPC-E1D Linear12 numeric digits (UPC-A) or 8-digit compressed (UPC-E)Standard North American retail point-of-sale inventory tracking and consumer goods
Code 1281D LinearHigh-density full 128 ASCII character setE-commerce parcel tracking, logistics, shipping containers (GS1-128), and inventory management
Code 391D Linear43 characters (uppercase letters A–Z, numbers 0–9, punctuation)Automotive, defense, healthcare equipment, identification badges, and internal warehouse labels
ITF (Interleaved 2 of 5)1D LinearContinuous paired numeric digitsCorrugated cardboard shipping cartons, carton master packs (ITF-14), and industrial manufacturing

How the Scanner Decodes Your Code

ZapPebble employs a tiered scanning pipeline designed to deliver optimal decoding speed and broad browser compatibility:

Tier 1: Native Browser BarcodeDetector API

On supported modern browsers (such as Chrome and Edge on desktop and Android), ZapPebble accesses the standard BarcodeDetector interface. This browser-level API analyzes image buffers directly, often taking advantage of hardware-accelerated operating system routines to detect barcodes in milliseconds with minimal CPU utilization.

Tier 2: Multi-Pass Client-Side QR Decoder

If the native API is unavailable or fails to detect a code, ZapPebble activates its client-side software engine. For QR codes, it executes a three-pass resolution strategy:

  1. Original resolution pass: Clamped to a maximum of 1,600px to prevent browser freezing on high-resolution smartphone photos.
  2. Downscaled pass (800px): Filters out high-frequency subpixel sensor noise and micro-blur typical of handheld camera captures.
  3. Upscaled pass (640px): Enhances small low-resolution thumbnails below 320px with nearest-neighbor sampling to sharpen individual modules.

Tier 3: Software 1D Scanline Analysis

For 1D linear barcodes (such as Code 39 and EAN-13), the fallback engine extracts horizontal scanline runs at 35%, 50%, and 65% image heights. It calculates relative bar-and-space widths, calculates guard and center patterns, and verifies checksum algorithms in memory.

QR Codes vs Traditional Barcodes

Understanding the architectural differences between two-dimensional matrix codes and one-dimensional linear barcodes helps explain how each format functions:

2D QR Codes

QR (Quick Response) codes store data in two dimensions across a grid of dark and light squares called modules. Three prominent finder pattern squares in the corners allow scanners to establish orientation, skew angle, and size instantly.

  • High data capacity: Can store complex strings like full URLs, multi-line contact cards, or cryptographic tokens.
  • Reed-Solomon error correction: Built-in redundancy allows the code to remain readable even if up to 30% of the graphic is damaged or obscured.
  • Omnidirectional: Can be scanned from any angle ($360^\circ$) without needing to align horizontally.

1D Linear Barcodes

Traditional barcodes (EAN, UPC, Code 128, Code 39) encode data in one dimension through varying widths of parallel bars and spaces. They function primarily as numerical or alphanumeric identifiers that map to records in external databases.

  • Compact identifiers: Highly optimized for short numeric product codes (8 to 14 digits) or serial numbers.
  • Checksum validation: Most 1D formats include a mandatory trailing check digit (such as modulo-10 or modulo-43) to prevent misreads.
  • Directional alignment: The scanline must cut cleanly across all vertical bars and spaces simultaneously to decode.

What Happens After a Code Is Detected?

When ZapPebble recognizes a code, it renders a detailed result card in the workspace right column:

Format Badge

e.g. QR CODE, EAN 13

Timestamp

Exact detection time

Copy Value

One-click clipboard copy

Safe Open Link

Explicit manual button

No Automatic Navigation

ZapPebble never automatically navigates or redirects your browser window upon detecting a code. The decoded payload is always presented as plain text first so you can inspect the full destination before choosing to interact with it.

Why Does the Scanner Ask Before Opening a Link?

QR codes encountered on public posters, flyers, or unsolicited messages can be manipulated to redirect unsuspecting users to malicious or phishing destinations (a practice often referred to as “QRishing”). ZapPebble implements strict URL safety boundaries:

Strict Protocol Validation

The Open Link button appears only if the decoded text passes strict URL parsing and matches the http: or https: protocol scheme.

Execution schemes such as javascript:, data:, file:, and vbscript: are strictly rejected and treated as plain text to prevent script injection and unintended local file execution.

What URL Validation Does & Does Not Do

What it does: Verifies that the decoded string forms a syntactically valid web URL with a standard HTTP/HTTPS protocol, and isolates navigation to a new browser tab with rel="noopener noreferrer".

What it does not do: The scanner cannot check if the destination website is trustworthy, free of malware, or authentic. Always review the full domain name and URL path displayed in the text box before opening external links.

What If the QR Code Contains Text Instead of a Link?

Not all QR codes point to websites. Many encode plain text, credentials, or structured metadata:

WiFi Credentials

Formatted as WIFI:S:MyNetwork;T:WPA;P:password;;. ZapPebble displays the full text so you can copy the network password directly.

Contact Cards (vCard)

Structured text starting with BEGIN:VCARD containing names, phone numbers, and emails. Easily copy the block to paste into your contacts manager.

Plain Text & Serial Numbers

Serial numbers, tracking IDs, cryptographic addresses, or plain notes. Displayed safely in a scrollable, selectable monospace box.

Why Isn't My QR Code or Barcode Scanning?

If an uploaded image or camera feed fails to recognize a code, check these common causes and practical fixes:

1. Image Is Blurry or Out of Focus

Camera lenses require adequate focal distance. Move your device slightly farther away (6 to 12 inches) so the auto-focus can lock onto the code.

2. Low Contrast or Inverted Colors

QR codes require sharp contrast between dark modules and light backgrounds. Codes with light gray on white or low-contrast custom colors may fail edge detection.

3. Glare and Surface Reflections

Scanning codes on glossy monitors, smartphones, or plastic packaging frequently creates bright glare spots that wash out modules. Tilt the screen or package slightly to disperse reflections.

4. Missing Quiet Zone (White Border)

Both QR codes and 1D barcodes require a clean margin (quiet zone) around the perimeter. If an image is cropped tightly against the bars or modules, the scanner cannot locate the code boundary.

5. Barcode Is Angled or Curved

1D barcodes (such as UPC on bottles or cans) must have a horizontal line of sight cutting through all bars. Flatten packaging or align the barcode parallel to the camera horizontal axis.

6. Unsupported Symbology

Specialized 2D matrix formats (like PDF417 on driver's licenses, Aztec, or Data Matrix) are decoded if your browser supports the native BarcodeDetector, but are not supported by the software fallback.

Camera Permission Troubleshooting

If you encounter a “Camera Permission Denied” or “Camera Unavailable” notice, follow these resolution steps:

1

Check the Browser Address Bar

Look for a camera icon with a red slash or a lock/tune icon on the left side of your browser URL bar. Click it to view site permissions.

2

Reset Permission to “Allow”

Toggle the camera permission toggle from “Block” to “Allow” (or “Ask”). Refresh the page and click Start Camera again.

3

Use Upload Image as Fallback

If your device lacks a camera or browser permissions are restricted by your operating system, simply take a photo with your device's native camera app and upload the file in the Upload Image tab.

Your Images & Camera Feed Stay in Your Browser

QR codes frequently contain sensitive personal information: home WiFi credentials, two-factor authentication backup keys, confidential document links, or private shipping details. ZapPebble is engineered with strict client-side privacy:

Zero Remote Processing Guarantee
  • No image uploads: Uploaded images are loaded into local browser memory via object URLs. No image data is ever transmitted to remote servers.
  • No video recording or transmission: Camera frames are processed in-memory frame-by-frame. No video clips or photos are recorded or stored.
  • Immediate hardware release: Stopping the camera or closing the browser tab immediately calls MediaStreamTrack.stop(), releasing your webcam hardware indicator light.
  • No telemetry or tracking: Decoded strings and URLs are never logged, analyzed, or sent to third-party analytics services.

Combine the scanner with other client-side ZapPebble utilities to streamline your digital workflows:

Frequently Asked Questions

Yes. Switch to the Upload Image tab and drag and drop or browse any PNG, JPG, WebP, or non-animated GIF image containing a QR code or supported barcode. ZapPebble renders the graphic onto an off-screen canvas and runs multi-pass decoding immediately in your browser.

Other utilities that pair well with QR & Barcode Scanner

View all tools