jsbarcode vs bwip-js
JavaScript Barcode Generation Libraries Comparison
1 Year
jsbarcodebwip-jsSimilar Packages:
What's JavaScript Barcode Generation Libraries?

Barcode generation libraries in JavaScript provide developers with the tools to create various types of barcodes for applications, websites, and inventory systems. These libraries simplify the process of generating barcodes by offering customizable options for different barcode formats, sizes, and styles. They can be used in both client-side and server-side applications, making them versatile for various use cases, from e-commerce to logistics. The choice between libraries like bwip-js and jsbarcode often depends on specific project requirements, such as barcode types, customization needs, and ease of integration.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
jsbarcode396,2905,581563 kB127a year agoMIT
bwip-js163,6772,17011.7 MB286 months agoMIT
Feature Comparison: jsbarcode vs bwip-js

Supported Barcode Formats

  • jsbarcode:

    jsbarcode primarily supports standard 1D barcode formats such as Code128, EAN-13, and UPC. While it covers the essentials for most applications, it lacks support for more complex barcode formats compared to bwip-js.

  • bwip-js:

    bwip-js supports a comprehensive range of barcode formats, including 1D barcodes like Code39, Code128, and EAN, as well as 2D barcodes like QR codes, PDF417, and Data Matrix. This versatility makes it suitable for applications requiring various barcode types.

Customization Options

  • jsbarcode:

    jsbarcode provides basic customization options such as width, height, and display text. However, it is more limited in terms of advanced features compared to bwip-js, making it less suitable for projects requiring intricate design adjustments.

  • bwip-js:

    bwip-js offers extensive customization options, allowing developers to adjust barcode size, orientation, and colors. It also supports advanced features like text labels and image formats, making it highly adaptable for different design requirements.

Ease of Use

  • jsbarcode:

    jsbarcode is designed for simplicity and ease of use, making it an excellent choice for developers who need to quickly implement barcode generation without extensive configuration or learning.

  • bwip-js:

    bwip-js has a steeper learning curve due to its extensive features and options. Developers may need to spend more time understanding its API and capabilities to fully leverage its potential for complex barcode generation.

Performance

  • jsbarcode:

    jsbarcode is lightweight and performs well in client-side environments, making it ideal for applications that require quick barcode rendering without significant overhead.

  • bwip-js:

    bwip-js is optimized for generating barcodes on the server side, which can be resource-intensive. However, it can handle large volumes of barcode generation efficiently when configured correctly, making it suitable for high-demand applications.

Integration

  • jsbarcode:

    jsbarcode is primarily focused on client-side integration, making it easy to use within web applications. Its straightforward API allows for quick implementation, but it may not be suitable for server-side barcode generation.

  • bwip-js:

    bwip-js can be integrated into both client-side and server-side applications, providing flexibility for developers. It can generate barcodes as images or SVGs, making it versatile for different use cases.

How to Choose: jsbarcode vs bwip-js
  • jsbarcode:

    Choose jsbarcode if you are looking for a lightweight and easy-to-use library that focuses primarily on generating standard barcode formats like Code128 and EAN. It is ideal for client-side applications where simplicity and quick integration are priorities.

  • bwip-js:

    Choose bwip-js if you need extensive support for a wide range of barcode formats, including complex ones like PDF417 and Data Matrix. It is also suitable for projects that require server-side rendering of barcodes, as it can generate images dynamically on the server.

README for jsbarcode

JsBarcode

Build Status Scrutinizer Code Quality CDN License

Introduction

JsBarcode is a barcode generator written in JavaScript. It supports multiple barcode formats and works in browsers and with Node.js. It has no dependencies when it is used for the web but works with jQuery if you are into that.

Demo

Barcode Generator

Simple CodePen Demo

Settings CodePen Demo

Supported barcodes:

Examples for browsers:

First create a canvas (or image)

<svg id="barcode"></svg>
<!-- or -->
<canvas id="barcode"></canvas>
<!-- or -->
<img id="barcode"/>

Simple example:

JsBarcode("#barcode", "Hi!");
// or with jQuery
$("#barcode").JsBarcode("Hi!");
Result:

Result

Example with options:

JsBarcode("#barcode", "1234", {
  format: "pharmacode",
  lineColor: "#0aa",
  width:4,
  height:40,
  displayValue: false
});
Result:

Result

More advanced use case:

JsBarcode("#barcode")
  .options({font: "OCR-B"}) // Will affect all barcodes
  .EAN13("1234567890128", {fontSize: 18, textMargin: 0})
  .blank(20) // Create space between the barcodes
  .EAN5("12345", {height: 85, textPosition: "top", fontSize: 16, marginTop: 15})
  .render();
Result:

Result

Or define the value and options in the HTML element:

Use any jsbarcode-* or data-* as attributes where * is any option.

<svg class="barcode"
  jsbarcode-format="upc"
  jsbarcode-value="123456789012"
  jsbarcode-textmargin="0"
  jsbarcode-fontoptions="bold">
</svg>

And then initialize it with:

JsBarcode(".barcode").init();
Result:

Result

Retrieve the barcode values so you can render it any way you'd like

Pass in an object which will be filled with data.

const data = {};
JsBarcode(data, 'text', {...options});

data will be filled with a encodings property which has all the needed values. See wiki for an example of what data looks like.

Setup for browsers:

Step 1:

Download or get the CDN link to the script:

| Name | Supported barcodes | Size (gzip) | CDN / Download | |------|--------------------|:-----------:|---------------:| | All | All the barcodes! | 10.1 kB | JsBarcode.all.min.js | | CODE128 | CODE128 (auto and force mode) | 6.2 kB | JsBarcode.code128.min.js | | CODE39 | CODE39 | 5.1 kB | JsBarcode.code39.min.js | | EAN / UPC | EAN-13, EAN-8, EAN-5, EAN-2, UPC (A) | 6.6 kB | JsBarcode.ean-upc.min.js | | ITF | ITF, ITF-14 | 5 kB | JsBarcode.itf.min.js | | MSI | MSI, MSI10, MSI11, MSI1010, MSI1110 | 5 kB | JsBarcode.msi.min.js | | Pharmacode | Pharmacode | 4.7 kB | JsBarcode.pharmacode.min.js | | Codabar | Codabar | 4.9 kB | JsBarcode.codabar.min.js |

Step 2:

Include the script in your code:

<script src="JsBarcode.all.min.js"></script>

Step 3:

You are done! Go generate some barcodes :smile:

Bower and npm:

You can also use Bower or npm to install and manage the library.

bower install jsbarcode --save
npm install jsbarcode --save

Node.js:

With canvas:

var JsBarcode = require('jsbarcode');

// Canvas v1
var Canvas = require("canvas");
// Canvas v2
var { createCanvas } = require("canvas");

// Canvas v1
var canvas = new Canvas();
// Canvas v2
var canvas = createCanvas();

JsBarcode(canvas, "Hello");

// Do what you want with the canvas
// See https://github.com/Automattic/node-canvas for more information

With svg:

const { DOMImplementation, XMLSerializer } = require('xmldom');
const xmlSerializer = new XMLSerializer();
const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');

JsBarcode(svgNode, 'test', {
    xmlDocument: document,
});

const svgText = xmlSerializer.serializeToString(svgNode);

Options:

For information about how to use the options, see the wiki page.

| Option | Default value | Type | |--------|---------------|------| | format | "auto" (CODE128) | String | | width | 2 | Number | | height | 100 | Number | | displayValue | true | Boolean | | text | undefined | String | | fontOptions | "" | String | | font | "monospace" | String | | textAlign | "center" | String | | textPosition | "bottom" | String | | textMargin | 2 | Number | | fontSize | 20 | Number | | background | "#ffffff" | String (CSS color) | | lineColor | "#000000" | String (CSS color) | | margin | 10 | Number | | marginTop | undefined | Number | | marginBottom | undefined | Number | | marginLeft | undefined | Number | | marginRight | undefined | Number | | valid | function(valid){} | Function |

Contributions and feedback:

We :heart: contributions and feedback.

If you want to contribute, please check out the CONTRIBUTING.md file.

If you have any question or suggestion create an issue or ask about it in the gitter chat.

Bug reports should always be done with a new issue.

License:

JsBarcode is shared under the MIT license. This means you can modify and use it however you want, even for comercial use. But please give this the Github repo a :star: and write a small comment of how you are using JsBarcode in the gitter chat.