Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
mubaidr/Javascript-Barcode-Reader: Simple and Fast Barcode decoder with support of Code128, Code93, Code39, Standard/Industrial 2 of 5, Interleaved 2 of 5, Codabar, EAN-13, EAN-8 barcodes in javascript.

mubaidr/Javascript-Barcode-Reader: Simple and Fast Barcode decoder with support of Code128, Code93, Code39, Standard/Industrial 2 of 5, Interleaved 2 of 5, Codabar, EAN-13, EAN-8 barcodes in javascript.

10 hours ago

Javascript-Barcode-Reader

Simple & Fast Barcode decoder for Browsers and Node.js capable of reading multiple barcode formats including Code128, Code93, Code39, Code 11, Standard/Industrial 2 of 5, Interleaved 2 of 5, Codabar, EAN-13, EAN-8, UPC-A, UPC-E, MSI, and Pharmacode.

Build Status</a> codecov</a> npm version</a> License: MIT</a>

NPM</a>

Try now

https://codesandbox.io/s/javascript-barcode-reader-liium

Available decoders

  • EAN-13
  • EAN-8
  • UPC-A
  • UPC-E
  • Code-39
  • Code-93
  • Code-11
  • Code-2of5
- standard - Interleaved
  • Codabar
  • Code-128
  • MSI
  • Pharmacode

Features

  • Pure JavaScript/TypeScript implementation
  • Works in both Node.js and browser environments
  • Supports multiple barcode formats
  • Adaptive thresholding for challenging images
  • Single-pass mode (affects line-detection failure behavior)
  • Optional barcode region detection (locateBarcode)
  • Optional rotation retry scanning (detectRotation, 90/180/270)
  • Optional EAN/UPC check-digit validation (validateChecksum)
  • TypeScript support

Installation

Recommended way to install is by using package manager (npm, yarn etc):

npm i javascript-barcode-reader

or use cdn:

<script src="//unpkg.com/javascript-barcode-reader"></script>

or download manually:

javascript-barcode-reader

Usage

Node.js

import javascriptBarcodeReader from 'javascript-barcode-reader'

javascriptBarcodeReader({ / Image file Path || {data: Uint8ClampedArray, width, height} || HTML5 Canvas ImageData / image: source, barcode: 'code-2of5', // barcodeType: 'industrial', // for code-2of5: 'industrial' or 'interleaved' options: { // useAdaptiveThreshold: true // for images with shaded/ gradient portions // singlePass: true // detectRotation: true // auto-detect and correct rotation // locateBarcode: true // auto-locate barcode region }, }) .then((code) => { console.log(code) }) .catch((err) => { console.log(err) })

Browser

javascriptBarcodeReader will be available as global in Browsers.

javascriptBarcodeReader({
  / Image ID || HTML5 Image || HTML5 Canvas || HTML5 Canvas ImageData || Image URL /
  image: source,
  barcode: 'code-2of5',
  // barcodeType: 'industrial', // for code-2of5: 'industrial' or 'interleaved'
  options: {
    // useAdaptiveThreshold: true // for images with shaded/ gradient portions
    // singlePass: true
    // detectRotation: true // auto-detect and correct rotation
    // locateBarcode: true // auto-locate barcode region
  },
})
  .then((code) => {
    console.log(code)
  })
  .catch((err) => {
    console.log(err)
  })

Supported Barcode Types

| Barcode Type | Value | | ------------ | -------------- | | EAN-13 | 'ean-13' | | EAN-8 | 'ean-8' | | UPC-A | 'upc-a' | | UPC-E | 'upc-e' | | Code-39 | 'code-39' | | Code-93 | 'code-93' | | Code-11 | 'code-11' | | Code-2of5 | 'code-2of5' | | Codabar | 'codabar' | | Code-128 | 'code-128' | | MSI | 'msi' | | Pharmacode | 'pharmacode' |

Options

  • useAdaptiveThreshold: Apply adaptive thresholding for images with shading or gradients
  • singlePass: Affects line-detection failure behavior (stops at first scan point that finds no lines)
  • detectRotation: Retry scanning at 90/180/270 orientations if the normal scan yields no complete result
  • locateBarcode: Crop to the detected barcode region before scanning
  • validateChecksum: Validate EAN/UPC check digit (default false; invalid check yields no result)

Note

  • For best results, ensure barcode is relatively straight in the image
  • Works best when barcode occupies most of the image
  • UPC-E is returned as its raw 8-digit value (number system + six payload digits + check digit)

Contributing

See CONTRIBUTING.md for development setup, committing conventions, and how releases are published to npm.

License

MIT

Chat with me