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());Bug fixes for barcode readers with improved validation and error handling.
- –Fix container inefficiency in RSSExpandedReader.java
- –Fix SYMBOLOGY_IDENTIFIER Loss in QRCodeMultiReader to ensure data integrity
- –Be more stringent on email validation rules
- –PDF417: Check input chars 0-127 for TEXT compaction, throw explicit exception if not
- –Various bug fixes and improvements
Improved barcode detection accuracy with fixes for MaxiCode, RSS Expanded, and Code128.
- –Fix MaxiCode handling of vertical quiet zone
- –Remove forced content limit check for Code128Writer.java
- –Detect RSS Expanded finder pattern false positives by checking sequences
- –Update GS1 AIs according to 2023 specification
- –Prevent --raw CLR option from failing if result.getRawBytes() is null
Minor enhancements for Code 128 and PDF417 with restored compatibility for older JDKs.
- –Minor enhancements for Code 128 and PDF417
- –Restore compatibility with older JDKs
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
Grbl
Real-time motion control firmware for Arduino-based CNCs.
Powerline Fonts
TrueType font binaries and metadata organized by license.
Moq
Mock .NET objects using lambda expressions and LINQ.
Pygame
Python wrapper for SDL enabling 2D game development.
Axios
Promise-based HTTP client with unified browser and Node.js interface.