ZXing: Open-source barcode image processing library
Multi-format 1D/2D barcode decoder in Java.
Learn more about zxing
ZXing is an open-source barcode image processing library implemented primarily in Java that provides multi-format detection and decoding capabilities for both one-dimensional and two-dimensional barcode symbologies. The library employs image analysis algorithms that process bitmap data to locate barcode patterns within images, then applies format-specific decoding logic to extract the encoded information. It supports a comprehensive range of barcode standards including linear formats such as UPC, EAN, Code 39, Code 128, and Codabar, as well as two-dimensional matrix codes including QR Code, Data Matrix, Aztec, and PDF 417. The core decoding engine is architected as a standalone module that can be integrated into platform-specific implementations, with the project historically providing native ports for Android, JavaSE, C++, Objective-C, and JavaScript environments.
Multi-Format Barcode Detection
Decodes 1D barcodes (UPC, EAN, Code 128) and 2D matrix codes (QR, Data Matrix, Aztec) from bitmap data using image analysis algorithms. Handles multiple encoding standards in a single library without external dependencies.
Modular Core Architecture
Core decoding logic operates independently from platform code, enabling integration into pure Java applications or server environments. Android and JavaSE modules provide optional platform-specific features while maintaining separation from core algorithms.
Maintenance Mode Stability
Mature codebase focused on reliability and bug fixes rather than feature expansion. Accepts community patches for minor enhancements while maintaining stable APIs for production deployments.
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import javax.imageio.ImageIO;
BufferedImage image = ImageIO.read(new File("qrcode.png"));
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Result result = new MultiFormatReader().decode(bitmap);
System.out.println("Decoded text: " + result.getText());Maintenance release with stricter input validation, new luminance sources, and improved barcode detection accuracy.
- –PDF417 encoder now throws explicit exception when TEXT compaction receives characters outside 0–127 range.
- –Add GrayscaleLuminanceSource and 90-degree rotation support to RGBLuminanceSource for flexible image handling.
Maintenance release fixing MaxiCode quiet zone handling, RSS Expanded false positives, and adding SJIS fallback for constrained platforms.
- –Remove forced content-length check in Code128Writer to allow longer payloads; update GS1 AI definitions to 2023 spec.
- –Handle platforms without SJIS encoding support and prevent CLI --raw crashes when getRawBytes() returns null.
Restores compatibility with older JDKs and adds minor enhancements to Code 128 and PDF417 barcode formats.
- –Verify your JDK version if you previously encountered compatibility issues with older Java runtimes.
- –Review Code 128 and PDF417 decoding behavior for edge cases; release notes do not specify exact changes.
Top in Mobile & Desktop
Related Repositories
Discover similar tools and frameworks used by developers
react-native-vector-icons
Vector icon fonts rendered as native React Native components.
expo
React Native framework with managed tooling and runtime.
react-native
JavaScript framework rendering React as native iOS and Android UI.
react-native-svg
Native SVG rendering for React Native applications.
HakuNeko
Cross-platform desktop application for downloading manga chapters from multiple sources with automated organization and offline reading capabilities.