Hysen Labs
Library / SDK
zxing/zxing avatar
zxing

zxing

ZXing ("Zebra Crossing") barcode scanning library for Java, Android

34,068 stars9,433 forksJavaApache-2.0
01
DEEP OPEN-SOURCE ANALYSIS

ZXing: the barcode library that scans it all

ZXing decodes 1D and 2D barcodes from images in Java, with ports in other languages, though the core project now only accepts fixes and minor changes.

02
DEEP OPEN-SOURCE ANALYSIS

What ZXing is

ZXing, which the README glosses as zebra crossing, is an open source multi format 1D and 2D barcode image processing library implemented in Java with ports to other languages. The repository is aimed at barcode scanning in Java and Android. A getting started guide for development is linked from the README. For well over a decade it has been the default answer to the question of how to read a barcode in Java.

03
DEEP OPEN-SOURCE ANALYSIS

The maintenance reality

The README is direct about where the project sits. It is in maintenance mode, meaning changes are driven by contributed patches and only bug fixes and minor enhancements will be considered. The Barcode Scanner app can no longer be published, does not work with Android 14, and will not be updated. There is otherwise no active development or roadmap. That is a hard message for users to read, but it is more honest than letting a flagship app rot quietly.

04
DEEP OPEN-SOURCE ANALYSIS

Formats and modules

The format coverage is broad. 1D product formats include UPC-A, UPC-E, EAN-8, and EAN-13. 1D industrial formats include Code 39, Code 93, Code 128, Codabar, and ITF. 2D formats include QR Code, Data Matrix, Aztec, PDF 417, and MaxiCode. On the module side, core is the image decoding library, javase holds JavaSE client code, android is the Barcode Scanner client, and zxingorg powers a related site. Previous releases also included C++, iPhone, and Objective-C ports.

05
DEEP OPEN-SOURCE ANALYSIS

The ports that live on

Third party ports keep the project relevant beyond Java. QZXing is a Qt port. zxing-cpp is described as the active C++ port. jsqrcode is a JavaScript port, and python-zxing is a Python binding. While the core project is in maintenance mode, these ports carry the work forward in other languages. Anyone evaluating ZXing today should probably look at the port for their language first, since that is where the newer activity lives.

07
DEEP OPEN-SOURCE ANALYSIS

Official sources

08
Community notes

Community notes