ZXing Barcode Scanner vs. Scandit

Published

In short:

  • Our Product Engineering team compared the open-source ZXing barcode scanner to the Scandit SDK using what we believe are the following key measures: scan speed, accuracy, maximum scan range, rotation envelope, supported symbologies, advanced features, and software support.
  • The test environment comprised ZXing and Scandit SDK versions as of May 2022, running on a Samsung Galaxy S9 device; physical mockups for manual testing; and robotic hardware for repetitive testing.

Our Product Engineering team compared the ZXing barcode scanning library with the Scandit SDK by conducting a suite of tests under real-world enterprise conditions.

We explain the tests and present their results here.

Does this matter to you? For enterprise workflows, where staff scan thousands, if not millions, of barcodes a day, we believe that performance measures such as speed and accuracy are critical. Likewise, as business needs grow, our experience shows that barcode scanning software should support scaling up without sacrificing ease of use.

Basic history first: ZXing was released in 2008 as an open-source Java project and ported to JavaScript in 2017. Many third-party projects were spun off from it over the years, and it was the basis for the Barcode Scanner app for Android.

ZXing is officially in maintenance mode, and, as of December 2025, its README states that “only bug fixes and minor enhancements will be considered.”

The Scandit SDK is a commercial library that’s been in continual development for over 15 years. It has been deployed by over 2,100 customers. SDK 8.0 was released in November 2025, and support is available for all developers.

Comparing the ZXing barcode scanner vs. the Scandit SDK

The following sections compare the two SDKs across various criteria. These results were taken from side-by-side comparison testing conducted by our Product Engineering team in May 2022.

The test environment was:

  • Software: The most recent versions of the Scandit SDK and ZXing library as of May 2022.
  • Hardware: Both SDKs were tested on the Samsung Galaxy S9. At time of testing this was a high-end Android device. At time of writing it is now considered mid-range.
  • Barcode symbologies: Code 128.
  • Physical mockups for barcode labels, placement, and motion.

Robot-based testing was used for repetitive performance tests, while handheld scanning was used for less intensive test procedures. Note that robot-based testing is not practical for all scenarios when testing barcode scanning capabilities.

The tests in this blog are based on the software versions current in May 2022. ZXing has had patches, and the Scandit SDK has had major releases since these tests were run.

To see this data for yourself, contact us to request an in-depth look at the Scandit barcode scanning SDK's performance, including data for more recent software versions.

To get more details on these techniques and apply them to your own barcode scanner tests, see our guide on how to measure barcode scanning performance.

What is the performance of the ZXing barcode scanner vs. Scandit?

Speed

One way to determine barcode scanning speed — and the way we did so here — is to measure the total time to successfully scan labels. This is from the moment the user positions the device over the label until the software sends barcode data to the app.

To replicate a real-world enterprise scenario, our Product Engineering team spread out several barcodes in different orientations across a surface — just like a warehouse loading dock or the back of a delivery truck.

Using a smartphone held by a robotic arm, the test showed that ZXing scans the sequence of barcodes in 6.93 seconds, while Scandit took 4.0 seconds. Results may vary under different testing conditions and with different hardware configurations.

Accuracy

One measure of scanning accuracy — and what we tested here — is the number of false positives during a scanning test. A false positive occurs when the scanning software “thinks” it has scanned a barcode successfully, but actually decoded it incorrectly.

Using our smartphone-wielding robot, our team ran 1,000 scans on five barcodes typically used in the shipping industry. The robot’s arm was programmed to introduce random inclinations and perspective changes, which we believe mimic a user’s actual behavior.

The test showed that:

  • Scandit software had a 0% false positive rate across all five barcodes.
  • ZXing had a 5% false positive rate.

Unfortunately, labels in the real world aren’t always flat, clearly printed, and fully visible. To better align with the environments users actually scan, our team also created a “tough codes” test. This compared how each SDK handled 11 specific labels that were damaged, low contrast, degraded, marked, had quiet zone violation, were incomplete, were poorly printed or very small.

Other factors — not tested here — that can make barcodes hard to scan are glare and curved or crinkled surfaces.

In our testing methodology, ZXing scanned only 2 of the 11 “tough codes” successfully. The Scandit SDK scanned all 11 barcodes successfully. Of course, different testing methodologies may yield different results.

Scan range and rotation

Other facets of real-world scanning conditions are range and orientation. Users may be standing far away from a package label, or the label itself may be horizontal, vertical, or at any degree of rotation in between.

We tested the maximum scanning range of each SDK by mounting a Code 128 barcode on a platform that moved away from a fixed smartphone at a constant rate. The test stopped when the SDK could no longer successfully scan the label.

The test showed that ZXing’s maximum range was 37 cm (14.6 inches or 1.2 feet) and Scandit’s was 168 cm (66.1 inches or 5.5 feet).

Orientation was tested by rotating the Code 128 barcode by 360 degrees and recording the angles at which the SDK successfully scanned it.

This test showed that:

  • Scandit captured the barcode at a full 360-degree rotation successfully.
  • ZXing captured the barcode only within a narrow band around the horizontal orientations (0° and 360°).

Battery efficiency

It’s nearly impossible to compare battery efficiency across any SDK, as there are too many variables to account for. Device type and age, operating system and version, application architecture and design, and the impact of other apps running on the same device all contribute to battery consumption.

We therefore believe that the only key comparison we can make is between battery management features. The Scandit SDK has a built-in standby mode that minimizes power consumption during idle periods and triggers instant camera reactivation when needed. ZXing does not appear to have this feature, so developers may need to implement their own battery management logic.

What barcode symbologies do ZXing and Scandit support?

The supported symbologies as of December 2025, according to the respective SDKs' publicly available documentation, are listed below. For the most up-to-date list, refer to ZXing’s supported formats and the Scandit SDK's supported symbologies.


ZXing

Scandit SDK

Supported symbologies

1D formats:

Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E, UPC/EAN Extension 2/5

2D formats:

Aztec, Data Matrix, MaxiCode, PDF417, QR Code, RSS-14, RSS-Expanded


1D formats:

Codabar, Code 11, Code 25, Code 32, Code 39, Code 93, Code 128, EAN-2, EAN-5, EAN-8, EAN-13, GS1 DataBar, IATA 2 of 5, ITF, JAN, Matrix 2 of 5, MSI Plessey, UPC-A, UPC-E

2D formats:

ArUco, Aztec, Data Matrix, Data Matrix Direct Part Marking (DPM), Data Matrix Rectangular Extension, DotCode, Micro PDF417, MaxiCode, Micro QR Code, PDF417, QR Code, Rectangular Micro QR Code

GS1 Composite Codes (A, B, C)

Postal codes:

Australia Post, French Postal Code (La Poste), KIX (Klant index), Posi LAPA 4 State Code, Royal Mail 4 State Customer Code (RM4SCC), Swiss Post, UPU (Universal Postage Union) S18 4-State, USPS Intelligent Mail

Additional formats:

GS1 Data Carrier, 3D barcodes


How does user experience development differ between the ZXing barcode scanner and Scandit?

User experience significantly impacts speed and accuracy, as difficult-to-use controls or prolonged, multi-step actions increase user taskloads. They can also frustrate users, leading to adoption and abandonment issues (“I’ll just enter the barcode manually”).

Based on our review of publicly available documentation, ZXing does not appear to include user interface components in its library. Developers must integrate its barcode scanning functions into their existing applications.

The Scandit SDK includes a range of UI controls, feedback mechanisms, and other components. It offers various levels of customization, from selecting modes and colors to leveraging fully pre-built components, so developers can choose the best option that fits their resource capacity and skills.

Versions 7 and 8 of the Scandit SDK, which weren't used for this comparison, also include AI-powered barcode scanning. This dynamically adjusts to scanning environments and user intent to reduce user frustration, interruption, and errors.

What advanced barcode scanning features do ZXing and Scandit offer?

To support different use cases and performance needs, developers may need features beyond basic barcode scanning. For example, workers can benefit from a barcode scanner that captures multiple barcodes simultaneously or from augmented reality (AR) overlays that guide precise, consistent workflows. Newer SDKs also include AI-driven capabilities, such as context-based scanning that reduces unwanted scans by up to 100%.

The following table provides a quick comparison of how we believe each SDK supports common advanced features based on publicly available information. This compares the Scandit SDK to the known features of the ZXing project and does not include any third-party ZXing components.

Category

ZXing

Scandit SDK

Automatic symbology detection

Multiple barcode scanning

*

**

Works with any orientation

Gesture support

Augmented reality (AR) overlays

Simultaneous barcode and text scanning data capture

Context-based scanning using AI

Pre-built app

✅ (Barcode Scanner for Android)***

✅ (Scandit Express)

On-device processing

Works without network connectivity

Customizable viewfinder

*According to the ZXing documentation, it detects multiple barcodes by repeatedly decoding portions of the image. After one barcode is found, the areas left, above, right, and below it are scanned recursively.

**The Scandit SDK detects multiple barcodes in full-frame images in real-time, and tracks their positions as they move in and out of frame.

***According to the ZXing documentation, “The Barcode Scanner app can no longer be published, so it's unlikely any changes will be accepted for it. It does not work with Android 14 and will not be updated.”


The ZXing README lists several third-party projects, including:

  • QZXing, a port to the Qt framework
  • Zxing_cpp.rb, a bindings library for Ruby
  • ZXing .NET, a port to .NET and C#
  • Php-zxing, a PHP wrapper

Support and maintenance

Developers using ZXing appear to rely on the community for support through its discussion forum, issues tracker, and third-party libraries.

ZXing does not appear to have a set cadence for patches and security fixes, nor does it offer direct support. As per its README, “The project is in maintenance mode, meaning, changes are driven by contributed patches. Only bug fixes and minor enhancements will be considered.”

Scandit offers enterprise-grade support for all its software products. The support team helps resolve barcode scanning integration challenges with a median first reply time of around 3 calendar hours.

This support includes formal service-level agreements (SLAs) for software updates, security patches, and bug fixes, together with enterprise-grade customer success offerings such as innovation workshops, process optimizations, and UI/UX reviews for eligible customers.

The Scandit SDK has a frequent release cadence.

Choose barcode scanning software based on data, not feelings

Choosing the right barcode scanning SDK is as much a developer decision as it is a business one, and it should be data-driven.

The right choice comes from measurable results — speed benchmarks, false positive rates, and scalability under real-world conditions. The SDK should shorten integration time, reduce technical debt, and prevent costly refactoring when scaling performance.

Retail teams need high-speed, accurate scans. Delivery drivers depend on performance in bright and low light, as well as offline reliability. Warehouse staff require long-range, multi-angle capture that won’t break under pressure.

Spending time on a proper evaluation now ensures barcode scanning software delivers for both users and the engineering team.