# ZXing: what changed from 2 to 3 - Product: ZXing (https://whatsnew.fyi/product/zxing) - Vendor: ZXing - Range: changelog entries numbered after 2.3.0 up to and including 3.5.4, stable releases only - Entries below: 16 releases (newest first) - Resolved: 2 is 2.3.0 and 3 is 3.5.4, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 4 - Page: https://whatsnew.fyi/product/zxing/compare/2...3 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (65 changes, grouped by kind) ### Added #### 3.5.4 (2025-11-11) - Add hint to correct wrong dimension - Add input validation for pixel array length in RGBLuminanceSource to avoid ArrayIndexOutOfBoundsException - Add 90-degree rotation support to RGBLuminanceSource - Add GrayscaleLuminanceSource #### 3.5.3 (2024-01-31) - Support for platforms where SJIS is unavailable #### 3.5.0 (2022-05-01) - New minimal encoding mode #### 3.3.3 (2018-05-29) - Add Java 9+ support #### 3.3.2 (2018-01-31) - Add workaround for Gradle + Android build issues #### 3.3.1 (2017-10-25) - Add Java 9 support #### 3.3.0 (2016-09-16) - Add `Result.getNumBits` method to core API - Add raw bytes support for Aztec format - Add TIFF support in online decoder #### 3.2.0 (2015-02-15) - Barcode Scanner can now disable history ### Changed #### 3.5.4 (2025-11-11) - Be more stringent on email validation rules - PDF417: check that input is made of 0...127 chars when using Compaction.TEXT, throw an explicit exception if not the case - Loosen ITF max variance for 3x module widths #### 3.5.3 (2024-01-31) - Remove the forced content limit check for Code128Writer - Update GS1 AIs according to 2023 specification #### 3.5.2 (2023-07-30) - Enhanced Code 128 barcode encoding and decoding - Enhanced PDF417 barcode encoding and decoding #### 3.5.0 (2022-05-01) - Various improvements and fixes to Aztec, PDF417, DataMatrix decoding #### 3.4.0 (2019-05-18) - Requires Java 8+, and Android apps using this version must target API 24 or higher - core and javase modules now declare a Java 9+ module - HtmlAssetTranslator and StringsResourceTranslator legacy utilities moved to .client.j2se subpackage - Minor improvements to QR code detection #### 3.3.2 (2018-01-31) - Improve WPA2 wi-fi configuration support in Barcode Scanner - Various translation updates and minor improvements #### 3.3.1 (2017-10-25) - Improve speed and robustness of zxing.org decoder - Update translations for Barcode Scanner - Require Android SDK 19+ for core library when used in an Android app #### 3.3.0 (2016-09-16) - Make small changes for Java 9 compatibility - Update Barcode Scanner to 4.7.6 with Android API 23 support #### 3.0.0 (2014-02-28) - Java 7 now used for all Java-based modules - Project moved to github.com/zxing/zxing ### Fixed #### 3.5.4 (2025-11-11) - Fix container inefficiency in RSSExpandedReader - Fix SYMBOLOGY_IDENTIFIER loss in QRCodeMultiReader to ensure data integrity and functional consistency with QRCodeReader - Fix issue #1831 - Fix distortion calculation for isosceles right triangles #### 3.5.3 (2024-01-31) - Fix MaxiCode handling of vertical quiet zone - Detect RSS Expanded finder pattern false positives by checking sequences - Prevent --raw CLR option from failing if result.getRawBytes() is null - Avoid RSS Expanded finder pattern false positive scenarios - Avoid decoding stacked row 1 of N independently #### 3.5.2 (2023-07-30) - Restored compatibility with older JDKs #### 3.5.1 (2022-11-02) - Various minor bug fixes from oss-fuzz - Avoid very long detection of QR codes in two types of pathological cases - Don't fail QR code decoding if GB2312 not supported by JDK #### 3.5.0 (2022-05-01) - Many edge-case fixes and improvements from oss-fuzz #### 3.4.1 (2020-09-30) - Wifi QR codes now recognize PH2: instead of H: for phase 2 method #### 3.4.0 (2019-05-18) - Minor bug fixes to Code93Writer #### 3.3.3 (2018-05-29) - Apply minor fixes and improvements #### 3.3.2 (2018-01-31) - Minor DataMatrix bug fixes #### 3.3.1 (2017-10-25) - Fix Code 128 encoding - Fix Code 39 encoding - Fix DataMatrix decoding #### 3.3.0 (2016-09-16) - Fix many small bugs and typos #### 3.2.1 (2015-08-19) - Small bug fixes (also in 3.1.0) #### 3.2.0 (2015-02-15) - Fixed multiple parsing bugs in Data Matrix barcode format - Fixed multiple parsing bugs in PDF417 barcode format #### 3.0.0 (2014-02-28) - Many small bug fixes and improvements ### Removed #### 3.3.1 (2017-10-25) - Remove Google Glass app - Remove ZXing Test app #### 3.2.0 (2015-02-15) - Removed jruby binding #### 3.1.0 (2014-05-22) - Retire actionscript port #### 3.0.0 (2014-02-28) - Retire iphone/, cpp/, objc/, and glass-mirror/ modules _One release carries no categorized changes yet: 3.0.1._ ## Release notes ### 3.5.4 — ZXing 3.5.4 - Date: 2025-11-11 - Version: 3.5.4 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.5.4 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.5.4 - **fixed** — Fix container inefficiency in RSSExpandedReader - **fixed** — Fix SYMBOLOGY_IDENTIFIER loss in QRCodeMultiReader to ensure data integrity and functional consistency with QRCodeReader - **changed** — Be more stringent on email validation rules - **changed** — PDF417: check that input is made of 0...127 chars when using Compaction.TEXT, throw an explicit exception if not the case - **fixed** — Fix issue #1831 - **added** — Add hint to correct wrong dimension - **fixed** — Fix distortion calculation for isosceles right triangles - **added** — Add input validation for pixel array length in RGBLuminanceSource to avoid ArrayIndexOutOfBoundsException - **added** — Add 90-degree rotation support to RGBLuminanceSource - **added** — Add GrayscaleLuminanceSource - **changed** — Loosen ITF max variance for 3x module widths ##### What's Changed * Fix container inefficiency in RSSExpandedReader.java by @cinsttool in https://github.com/zxing/zxing/pull/1782 * Fix SYMBOLOGY_IDENTIFIER Loss in QRCodeMultiReader to Ensure Data Integrity and Functional Consistency with QRCodeReader by @xiebaiyuan in https://github.com/zxing/zxing/pull/1839 * Be more stringent on email validation rules by @ftiercelin in https://github.com/zxing/zxing/pull/1870 * PDF417: Check that input is made of 0...127 chars when using Compaction.TEXT, throw an explicit exception if not the case by @ftiercelin in https://github.com/zxing/zxing/pull/1878 * Fixing issue #1831 by @ftiercelin in https://github.com/zxing/zxing/pull/1879 * Add hint to correct wrong dimension by @magethle in https://github.com/zxing/zxing/pull/1901 * Fix distortion calculation for isosceles right triangles by @magethle in https://github.com/zxing/zxing/pull/1908 * Add input validation for pixel array length in RGBLuminanceSource to avoid ArrayIndexOutOfBoundsException by @leofernandesmo in https://github.com/zxing/zxing/pull/1961 * Add 90-degree rotation support to RGBLuminanceSource by @gredler in https://github.com/zxing/zxing/pull/2012 * Add GrayscaleLuminanceSource by @gredler in https://github.com/zxing/zxing/pull/2013 * Loosen ITF max variance for 3x module widths by @gredler in https://github.com/zxing/zxing/pull/2014 **Full Changelog**: https://github.com/zxing/zxing/compare/zxing-3.5.3...zxing-3.5.4 ### 3.5.3 — ZXing 3.5.3 - Date: 2024-01-31 - Version: 3.5.3 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.5.3 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.5.3 - **fixed** — Fix MaxiCode handling of vertical quiet zone - **changed** — Remove the forced content limit check for Code128Writer - **fixed** — Detect RSS Expanded finder pattern false positives by checking sequences - **changed** — Update GS1 AIs according to 2023 specification - **fixed** — Prevent --raw CLR option from failing if result.getRawBytes() is null - **fixed** — Avoid RSS Expanded finder pattern false positive scenarios - **fixed** — Avoid decoding stacked row 1 of N independently - **added** — Support for platforms where SJIS is unavailable ##### What's Changed * Fix MaxiCode handling of vertical quiet zone by @gredler in https://github.com/zxing/zxing/pull/1671 * Removing the forced content limit check for Code128Writer.java by @himanshushukla254 in https://github.com/zxing/zxing/pull/1675 * Detect RSS Expanded finder pattern false positives by checking sequences by @gredler in https://github.com/zxing/zxing/pull/1680 * Update GS1 AIs according to 2023 specification by @gredler in https://github.com/zxing/zxing/pull/1681 * Prevent --raw CLR option from failing if result.getRawBytes() is null by @dlenski in https://github.com/zxing/zxing/pull/1683 * Avoid 2 more RSS Expanded finder pattern false positive scenarios by @gredler in https://github.com/zxing/zxing/pull/1692 * Avoid decoding stacked row 1 of N independently by @gredler in https://github.com/zxing/zxing/pull/1693 * Support for platforms where SJIS is unavailable by @blakepuhak in https://github.com/zxing/zxing/pull/1747 ##### New Contributors * @himanshushukla254 made their first contribution in https://github.com/zxing/zxing/pull/1675 * @blakepuhak made their first contribution in https://github.com/zxing/zxing/pull/1747 **Full Changelog**: https://github.com/zxing/zxing/compare/zxing-3.5.2...zxing-3.5.3 ### 3.5.2 — ZXing 3.5.2 - Date: 2023-07-30 - Version: 3.5.2 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.5.2 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.5.2 - **changed** — Enhanced Code 128 barcode encoding and decoding - **changed** — Enhanced PDF417 barcode encoding and decoding - **fixed** — Restored compatibility with older JDKs - Minor enhancements for Code 128 and PDF417 - Restore compatibility with older JDKs See https://github.com/zxing/zxing/milestone/15?closed=1 ### 3.5.1 — ZXing 3.5.1 - Date: 2022-11-02 - Version: 3.5.1 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.5.1 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.5.1 - **fixed** — Various minor bug fixes from oss-fuzz - **fixed** — Avoid very long detection of QR codes in two types of pathological cases - **fixed** — Don't fail QR code decoding if GB2312 not supported by JDK - Various minor bug fixes, including more from oss-fuzz - Avoid very long detection of QR codes in two types of pathological cases - Don't fail QR code decoding if GB2312 not supported by JDK See https://github.com/zxing/zxing/milestone/14?closed=1 ### 3.5.0 — ZXing 3.5.0 - Date: 2022-05-01 - Version: 3.5.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.5.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.5.0 - **fixed** — Many edge-case fixes and improvements from oss-fuzz - **changed** — Various improvements and fixes to Aztec, PDF417, DataMatrix decoding - **added** — New minimal encoding mode - Many edge-case fixes and improvements from [oss-fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list) - Various improvements and fixes to Aztec, PDF417, DataMatrix decoding - New 'minimal' encoding mode from @AlexGeller1 (https://github.com/zxing/zxing/issues/1444) See https://github.com/zxing/zxing/milestone/13?closed=1 ### 3.4.1 — ZXing 3.4.1 - Date: 2020-09-30 - Version: 3.4.1 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.4.1 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.4.1 - **fixed** — Wifi QR codes now recognize PH2: instead of H: for phase 2 method - Wifi QR codes now recognize PH2:, not H:, for phase 2 method - Minor bug fixes and improvements See https://github.com/zxing/zxing/milestone/12?closed=1 ### 3.4.0 — ZXing 3.4.0 - Date: 2019-05-18 - Version: 3.4.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.4.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.4.0 - **changed** — Requires Java 8+, and Android apps using this version must target API 24 or higher - **changed** — core and javase modules now declare a Java 9+ module - **changed** — HtmlAssetTranslator and StringsResourceTranslator legacy utilities moved to .client.j2se subpackage - **fixed** — Minor bug fixes to Code93Writer - **changed** — Minor improvements to QR code detection - Requires Java 8+. Note: Android apps using this version must target API 24 or higher. - `core`, `javase` modules declare a Java 9+ module - `HtmlAssetTranslator` and `StringsResourceTranslator` legacy utilities are moved to a `.client.j2se` subpackage - No more releases of the Barcode Scanner app - Minor bug fixes to `Code93Writer` - Minor improvements to QR code detection ### 3.3.3 — ZXing 3.3.3 - Date: 2018-05-29 - Version: 3.3.3 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.3.3 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.3.3 - **added** — Add Java 9+ support - **fixed** — Apply minor fixes and improvements - Minor fixes and improvements - Java 9+ support https://github.com/zxing/zxing/milestone/11?closed=1 ### 3.3.2 — ZXing 3.3.2 - Date: 2018-01-31 - Version: 3.3.2 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.3.2 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.3.2 - **added** — Add workaround for Gradle + Android build issues - **fixed** — Minor DataMatrix bug fixes - **changed** — Improve WPA2 wi-fi configuration support in Barcode Scanner - **changed** — Various translation updates and minor improvements - Add workaround for Gradle + Android build issues - Minor DataMatrix bug fixes - Improve WPA2 wi-fi configuration support in Barcode Scanner - Various translation updates and minor improvements https://github.com/zxing/zxing/milestone/10?closed=1 ### 3.3.1 — ZXing 3.3.1 - Date: 2017-10-25 - Version: 3.3.1 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.3.1 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.3.1 - **fixed** — Fix Code 128 encoding - **fixed** — Fix Code 39 encoding - **fixed** — Fix DataMatrix decoding - **changed** — Improve speed and robustness of zxing.org decoder - **added** — Add Java 9 support - **changed** — Update translations for Barcode Scanner - **removed** — Remove Google Glass app - **removed** — Remove ZXing Test app - **changed** — Require Android SDK 19+ for core library when used in an Android app - Various fixes to Code 128, 39 encoding; DataMatrix decoding - Improvements to speed and robustness of zxing.org decoder - Java 9 support - Various translation updates for Barcode Scanner - Removed Google Glass, ZXing Test apps - Barcode Scanner 4.7.7 - Note: `core` library will require Android SDK 19+ when used in an Android app https://github.com/zxing/zxing/issues?q=is%3Aclosed+milestone%3A3.3.1 ### 3.3.0 — ZXing 3.3.0 - Date: 2016-09-16 - Version: 3.3.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.3.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.3.0 - **added** — Add `Result.getNumBits` method to core API - **added** — Add raw bytes support for Aztec format - **added** — Add TIFF support in online decoder - **changed** — Make small changes for Java 9 compatibility - **changed** — Update Barcode Scanner to 4.7.6 with Android API 23 support - **fixed** — Fix many small bugs and typos - Minor core API additions like `Result.getNumBits`, raw bytes for Aztec - Small changes for Java 9 compatibility - Barcode Scanner 4.7.6 release with Android API 23 support - TIFF support in online decoder - Many small bug fixes, typo fixes and project build improvements https://github.com/zxing/zxing/issues?q=is%3Aclosed+milestone%3A3.3.0 ### 3.2.1 — ZXing 3.2.1 - Date: 2015-08-19 - Version: 3.2.1 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.2.1 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.2.1 - **fixed** — Small bug fixes - Small bug fixes https://github.com/zxing/zxing/issues?q=is%3Aclosed+milestone%3A3.2.1 ### 3.2.0 — ZXing 3.2.0 - Date: 2015-02-15 - Version: 3.2.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.2.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.2.0 - **fixed** — Fixed multiple parsing bugs in Data Matrix barcode format - **fixed** — Fixed multiple parsing bugs in PDF417 barcode format - **removed** — Removed jruby binding - **added** — Barcode Scanner can now disable history - Several bug fixes, especially for Data Matrix and PDF417 parsing - Retired jruby binding - Barcode Scanner can now disable history https://github.com/zxing/zxing/issues?q=is%3Aclosed+milestone%3A3.2.0 ### 3.1.0 — ZXing 3.1.0 - Date: 2014-05-22 - Version: 3.1.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.1.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.1.0 - **removed** — Retire actionscript port - **fixed** — Small bug fixes - Retire actionscript port - Small bug fixes https://github.com/zxing/zxing/issues?milestone=3&state=closed ### 3.0.1 — ZXing 3.0.1 - Date: 2014-04-18 - Version: 3.0.1 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.0.1 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.0.1 - Several small bug fixes https://github.com/zxing/zxing/issues?milestone=2&state=closed ### 3.0.0 — ZXing 3.0.0 - Date: 2014-02-28 - Version: 3.0.0 - Original notes: https://github.com/zxing/zxing/releases/tag/zxing-3.0.0 - Permalink: https://whatsnew.fyi/product/zxing/releases/3.0.0 - **removed** — Retire iphone/, cpp/, objc/, and glass-mirror/ modules - **changed** — Java 7 now used for all Java-based modules - **changed** — Project moved to github.com/zxing/zxing - **fixed** — Many small bug fixes and improvements - iphone/, cpp/, objc/, and glass-mirror/ are retired - Java 7 now used for all Java-based modules - Project moved to github.com/zxing/zxing - Many small bug fixes and improvements