Why the browser is a fast, enterprise-ready platform for barcode scanning, and how to pick an SDK you can rely on in production.
The web is a mature platform for application development. Modern browser APIs give web apps access to the camera, the GPU and near-native performance via WebAssembly. That makes it possible to write capable apps that interface with the physical world while running directly in the browser, on devices your users already own.
Instead of buying, managing and replacing a fleet of dedicated barcode scanners, your team can use the smartphones and tablets it already has. Especially for smaller businesses, the cost savings can be significant. Read how JDM Software helped a client eliminate barcode scanning hardware with STRICH.
A web app runs on any device with a camera and a browser, so scanning is no longer limited to the people who were handed a scanner. Staff can use their own phones, and external partners, seasonal workers and even your customers can start scanning with nothing more than a link. At Kaufleuten in Zurich, event staff scan tickets on their own smartphones, and Zeercle's customers scan their books at home before bringing them to the store.
Instead of separate apps for iOS and Android, a web app is a single codebase in JavaScript or TypeScript, the most widely used programming languages. Your team most likely already has the skills, and AI coding agents are particularly good at building web apps. Scanning also fits right into the web apps you already run, instead of requiring a separate app next to them.
A common assumption is that a native app will scan barcodes faster than a web app. In practice, it doesn't make a material difference. Here is STRICH running in a mobile browser:
“STRICH scans so fast that on a high-end iPhone the barcode never fully makes it into the frame before it's already decoded. I literally demo on a slower Android just to give the audience a chance to see it work.”
Scott Richins, Founder @ Kinein
What determines how fast a code is read is mostly physics: how quickly the camera focuses, the lighting, and the quality of the printed code. Those factors are identical for web and native apps. A native app can give you access to a few advanced camera controls, but for typical scanning workflows, the user won't notice a difference.
App stores are built for consumers. Larger organizations already run platforms on which their business apps live, and those platforms are built on web technology. A web-based scanning app fits into that landscape instead of working around it.
Enterprise application platforms, such as SAP Fiori, OutSystems and many others, are built on web technology. A JavaScript SDK plugs right in, with access to the authentication and ERP data they already provide.
Ship scanning apps through the same CI/CD pipeline, review process and hosting as the rest of your software. No third-party gatekeeper.
Use your existing single sign-on and access policies. No app store accounts for employees, no developer accounts to manage.
Managed devices, personal devices and partner devices: if it has a browser and a camera, it can scan. No MDM rollout required.
Manufacturing · SAP Fiori
The world's leading provider of industrial machine needles replaced stationary PCs on the factory floor with mobile SAP Fiori apps. Groz-Beckert wrapped STRICH in a reusable SAPUI5 library so any Fiori app can scan production orders, machine numbers and shelf locations.
“After trying to optimize scanning via other libraries for a long time without much success in terms of speed and accuracy, we came across STRICH. The library scans the barcodes so quickly that we were asked to implement a delay, so the users can be sure that they scan the correct barcode when multiple barcodes are placed close together.”
Transport · Angular PWA
Switzerland's national railway tracks luggage with a barcode scanning PWA. It is used by SBB staff and by external partners such as hotels, on devices SBB doesn't manage. A native app would have been impractical. A link is all it takes.
“Migrating our app from QuaggaJS to STRICH was a painless experience and done in under a day. The performance of our app has improved, and the number of malfunctioning devices and support requests have decreased. Overall I can highly recommend STRICH to anyone looking for a cost-effective and reliable web-based barcode scanning solution.”
Native apps are published through the vendor's app store. A lot of time goes into preparing screenshots in a variety of dimensions, completing privacy statements and agreeing to ever-changing terms of service. If the platform operator decides your app no longer complies with its guidelines, it can be removed. For a business-critical app, that is a horror scenario.
Every new version also has to pass an opaque review process, adding risk and an unpredictable delay to something that should be instant.
| Step | Web app | Native app |
|---|---|---|
| Build | AutomatedOne web app bundle | AutomatedAAB for Android and IPA for iOS |
| Code signing | Not needed | AutomatedSeparately for each platform |
| Upload | AutomatedDeploy to your own hosting | AutomatedTo the Play Store and the App Store |
| Store metadata and assets | Not needed | ManualScreenshots and descriptions for each store |
| Privacy and legal forms | Not needed | ManualFor each store |
| App review | Not needed | ManualAt least once per release, repeated if rejected |
| Time to release | Seconds | Days to weeks |
Deploying a web app completes in seconds and is fully under your control. Your app won't suddenly become unavailable because of a missed deadline, and you never have to ask Apple or Google to speed up the review of a critical fix.
Discovery is often mentioned as an advantage of app stores. For consumer apps, that's a fair point. But nobody finds their company's warehouse app by browsing the App Store. Employees and partners use the apps they are told to use, and they get to them through onboarding, the intranet, an SSO portal or a link from IT.
A web app fits right into these channels: it's just a URL. Some businesses go a step further and put QR codes on site, for example in a vehicle or at a warehouse location, that open the app with the right context pre-selected.
There are free, open-source JavaScript barcode libraries like ZXing-JS, QuaggaJS and html5-qrcode. They are a great way to prototype and validate an idea, and we value them enough to support them: we sponsor ZXing-JS, which now recommends STRICH to anyone looking for a maintained library with commercial support. For an overview of the options, see our comparison of open-source JavaScript barcode scanner libraries.
But when scanning becomes part of a business process, the question changes from "does it scan?" to "can we rely on it for the next five years?"
| Open-source library | Commercial SDK | |
|---|---|---|
| Best for | Prototypes, experiments | Production, business-critical apps |
| Maintenance | Volunteers, often unmaintained | Active, with regular releases |
| New browsers and devices | Best effort | Tested before each release |
| Difficult codes | Struggles with damaged codes and low light | Built for real-world conditions |
| Support | Community, issue tracker | Direct, from the vendor |
| Cost | Free license, your team's time | Subscription |
Swiss Federal Railways (SBB) is a good example. The first version of their baggage scanning app used QuaggaJS, which made sense for validating the idea. In production, unreliable scans in poorly lit environments led to malfunctioning devices and support requests, so they switched to STRICH. Read the SBB case study.
The Swiss digital agency required had a similar experience with ZXing-JS. Their ticket scanner for Zurich's Kaufleuten runs on the staff's own smartphones, and with ZXing-JS, picking the right camera on each device and scanning reliably in the dim light of evening events proved difficult. Since switching to STRICH, tickets scan reliably on every phone at the door. Read the Kaufleuten case study.
For a detailed, data-driven look, read our comparison of STRICH with ZXing-JS and QuaggaJS.
For practical purposes, yes. A well-optimized SDK decodes a barcode from a camera frame in a few milliseconds using WebAssembly and the GPU. The limiting factor is the camera itself (frame rate, focus and lighting), and a web app uses the same camera hardware as a native app. STRICH users regularly report that scanning is faster than they need it to be.
Scanning speed is the same: both decode on the device in real time, using the same camera. The differences are in distribution and maintenance. A web app is opened via a link or QR code, while a native app is installed from an app store or via MDM. Web app updates reach users on the next page load, native app updates have to pass app store review and be installed by every user. A web app is a single JavaScript or TypeScript codebase instead of separate iOS and Android apps, integrates directly into the enterprise platforms your business already runs, and works for partner and guest users on any device with a browser.
No. Users open a link or scan a QR code and can start scanning right away, without an app store, an account or device management. If you want an app icon on the home screen, the web app can optionally be installed as a Progressive Web App (PWA).
Camera access in the browser is a standard web API supported by all modern browsers, including Safari on iPhone and iPad and Chrome on Android. Browsers only grant camera access to pages served via HTTPS, so your web app needs to be served from a secure origin.
The camera matters a lot more than the raw processing power of the device, and autofocus is the most important camera feature by far, more important than resolution. A mid-range smartphone with a good autofocus camera will outperform a high-end tablet with a fixed-focus camera. Most current smartphones are well suited for barcode scanning.
Yes. A barcode scanning PWA can be installed on the home screen of both Android and iOS devices and feels like a native app. Android is the preferred platform for scanning PWAs, as camera access in installed PWAs is more seamless there than on iOS. Swiss Federal Railways (SBB) uses a STRICH-powered PWA to track luggage.
Any of them. STRICH has zero dependencies and works with React, Angular, Vue, Svelte and plain JavaScript. With server-side rendering frameworks like Next.js or Nuxt, initialize the scanner in the browser, as it needs access to the camera.
Yes. STRICH runs in web views, so it can be used in hybrid apps as well. Several STRICH customers use it in Ionic apps.
STRICH supports all common 1D barcodes, including EAN/UPC, Code 128, Code 39, Code 93, ITF, Codabar and GS1 DataBar, as well as 2D codes like QR Code, Micro QR, Data Matrix, Aztec Code and PDF417. See the full list of supported barcode types.
Yes. Most enterprise application platforms, such as SAP Fiori or OutSystems, build their user interfaces with web technology, so a JavaScript barcode scanning SDK integrates directly, next to the authentication and business data the platform already provides. Groz-Beckert, for example, uses STRICH in SAP Fiori apps on the factory floor.
We are obviously biased, but we believe STRICH is the best SDK for barcode scanning in the browser. It is built exclusively for the web. It's lean and mean, has no dependencies and works everywhere. Pricing is predictable and transparent. STRICH is proven in production at scale: Zeercle scans over a million barcodes every month, most of them on consumers' own phones rather than a managed device fleet. In the end, the best SDK is the one that reliably scans your barcodes on your users' devices, so test STRICH with your own codes in our demo app.
Open-source libraries like ZXing-JS or QuaggaJS are fine for prototypes and experiments. For business-critical apps, a commercial SDK is the safer choice: it is actively maintained, tested on new browser and device versions, and comes with support when something goes wrong. See how STRICH compares to open-source alternatives.
Usually less than a day. With coding agents, writing the integration code is the quick part. What matters is that the SDK doesn't get in the way: STRICH is lean, has no dependencies and works with any framework, so there are no roadblocks to fitting it into your existing app. Swiss Federal Railways (SBB) migrated their app from QuaggaJS to STRICH in under a day.
Not with STRICH. Barcodes are decoded on the device, in the browser. Camera images and barcode values are never transmitted. The SDK only sends license verification and usage data, and fully offline operation is available as an add-on for Business and Enterprise licenses.
Still have questions? Check out the full FAQ.
Integrating STRICH into your web app typically takes less than a day. Or try our free demo app and convince yourself that STRICH meets your needs.
Live demo ↗ Try for free ↗