Guide

Barcode scanning in web apps

Why the browser is a fast, enterprise-ready platform for barcode scanning, and how to pick an SDK you can rely on in production.

Key takeaways

  • Smartphones running a web app can replace dedicated barcode scanners.
  • Web scanning is as fast as native: the camera is the bottleneck, not the browser.
  • Web apps fit enterprise IT: SSO, existing business platforms and your own deployment pipeline.
  • Use open source to prototype, a maintained commercial SDK for production.

Why scan barcodes in the browser?

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.

Eliminating physical hardware reduces cost

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.

Anyone can scan, on any device

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.

One codebase, built with skills you already have

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.

Web vs. native: is browser-based scanning fast enough?

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:

Real-time scanning in a web app, recorded on a smartphone

Why the browser is not the bottleneck

  • Same camera. A web app uses the same camera hardware and video stream as a native app.
  • Decoding takes milliseconds. STRICH processes camera frames on the GPU and decodes with WebAssembly, so a frame is analyzed long before the next one arrives.
  • Fully on-device. No round trip to a server, so scanning speed doesn't depend on network quality.
Portrait of Scott Richins
“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.

Web apps are the natural choice for enterprises

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.

Fits your platforms

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.

Fits your release process

Ship scanning apps through the same CI/CD pipeline, review process and hosting as the rest of your software. No third-party gatekeeper.

Fits your identity setup

Use your existing single sign-on and access policies. No app store accounts for employees, no developer accounts to manage.

Works on any device

Managed devices, personal devices and partner devices: if it has a browser and a camera, it can scan. No MDM rollout required.

Why enterprises choose STRICH for web-based barcode scanning

Manufacturing · SAP Fiori

Groz-Beckert

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.”
Portrait of Simon Rempp Simon Rempp, Software developer at Groz-Beckert
Read the Groz-Beckert case study

Transport · Angular PWA

Swiss Federal Railways (SBB)

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.”
Portrait of Conradin Lietha Conradin Lietha, Project Manager at Swiss Federal Railways (SBB)
Read the SBB case study

You own the distribution channel

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.

Steps from a code change to a released update, web apps vs. native apps
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.

App store discovery doesn't matter for business apps

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.

How to choose a barcode scanning SDK

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 forPrototypes, experimentsProduction, business-critical apps
MaintenanceVolunteers, often unmaintainedActive, with regular releases
New browsers and devicesBest effortTested before each release
Difficult codesStruggles with damaged codes and low lightBuilt for real-world conditions
SupportCommunity, issue trackerDirect, from the vendor
CostFree license, your team's timeSubscription

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.

How to evaluate a barcode scanning SDK

  • Test with your own barcodes. Use real labels, devices and lighting conditions, not just clean samples on a monitor. Our demo app lets you try STRICH on your own codes in seconds.
  • Check maintenance and release history. Browsers and devices change constantly. An SDK that isn't updated will eventually break. Here are STRICH's release notes.
  • Ask who you call when it breaks. For a business-critical app, you want direct access to people who know the code. At STRICH, support is handled by the same humans who write the SDK, not by a ticket queue or a chatbot.
  • Understand the pricing. Look for transparent, predictable pricing. Per-device or opaque pricing can get expensive as you scale.
  • Check where images are processed. On-device decoding keeps camera images private and works without a fast network. STRICH decodes entirely on the device, see our SDK Privacy and Security Statement.

For a detailed, data-driven look, read our comparison of STRICH with ZXing-JS and QuaggaJS.

Frequently asked questions

Is barcode scanning in a web browser as fast as in a native app?

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.

What is the difference between a web app and a native app for barcode scanning?

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.

Do users need to install an app to scan barcodes in the 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).

Which browsers and devices support barcode scanning in web apps?

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.

What devices and cameras work best for scanning barcodes in the browser?

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.

Can I use barcode scanning in a Progressive Web App (PWA)?

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.

Which JavaScript frameworks can I use for barcode scanning in web apps?

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.

Does web-based barcode scanning work in hybrid apps built with Ionic or Capacitor?

Yes. STRICH runs in web views, so it can be used in hybrid apps as well. Several STRICH customers use it in Ionic apps.

Which barcode types can be scanned in the browser?

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.

Can barcode scanning be integrated into enterprise platforms?

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.

What is the best JavaScript barcode scanning SDK?

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.

Should I use an open-source or a commercial barcode scanning library?

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.

How long does it take to add barcode scanning to a web app?

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.

Are camera images sent to a server when scanning barcodes in the browser?

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.

Start your free 14-day trial today

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 ↗