BarcodeDetector: BarcodeDetector() constructor

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The BarcodeDetector() constructor creates a new BarcodeDetector object which detects linear and two-dimensional barcodes in images.

Syntax

js
new BarcodeDetector()
new BarcodeDetector(options)

Parameters

options Optional

An options object containing a series of BarcodeFormats to search for in the subsequent detect() calls. The options are:

formats Optional

An Array of barcode formats as strings. If not provided, detect() calls search for all supported formats. Limiting to specific formats is therefore recommended for performance reasons. To see a full list of supported formats see the supported barcode format.

Exceptions

TypeError

Thrown if the formats is specified and the parameter is empty or contains unknown.

Examples

This example creates a new barcode detector object, with specified supported formats and tests for browser compatibility.

js
// check compatibility
if (!("BarcodeDetector" in globalThis)) {
  console.log("Barcode Detector is not supported by this browser.");
} else {
  console.log("Barcode Detector supported!");

  // create new detector
  const barcodeDetector = new BarcodeDetector({
    formats: ["code_39", "codabar", "ean_13"],
  });
}

Specifications

Specification
Accelerated Shape Detection in Images
# dom-barcodedetector-barcodedetector

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
BarcodeDetector() constructor
Experimental
Chrome – Partial support
Chrome 83 – 87 (Release date: 2020-05-19)
footnote Partial support
footnote Supported on macOS only.
Chrome – Partial support
Chrome 88 (Release date: 2021-01-19)
footnote Partial support
footnote Supported on ChromeOS and macOS only.
Edge – Partial support
Edge 83 (Release date: 2020-05-21)
footnote Partial support
footnote Supported on macOS only.
Firefox – No support
Firefox
footnote
footnote See bug 1553738
Opera – Partial support
Opera 69 (Release date: 2020-06-24)
footnote Partial support
footnote Supported on macOS only.
Safari – No support
Safari 17 (Release date: 2023-09-18)
disabled
disabled From version 17 users must explicitly set the Shape Detection API preference to true.
Chrome Android – Full support
Chrome Android 83 (Release date: 2020-05-19)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote
footnote See bug 1553738
Opera Android – Full support
Opera Android 59 (Release date: 2020-06-30)
footnote Full support
Safari on iOS – No support
Safari on iOS 17 (Release date: 2023-09-18)
disabled
disabled From version 17 users must explicitly set the Shape Detection API preference to true.
Samsung Internet – Full support
Samsung Internet 13 (Release date: 2020-12-02)
footnote Full support
WebView Android – Full support
WebView Android 83 (Release date: 2020-05-19)
footnote Full support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.