ZXing QR Code Scanner
The ZXing engine, compiled to WebAssembly, running in the page.
Camera access is requested only when you press the button. Frames are decoded on this device and discarded.
ZXing is the reference open-source barcode library — the same engine behind many Android scanning apps. Here it runs as WebAssembly, which is why this page can read formats the browser's native API does not expose.
The cost is download size: the wasm module is around a megabyte, so it is fetched on demand. This page fetches it immediately, because ZXing is the point of the page; the general scanner only pulls it when a non-QR format is needed.
How to use it
- Scan normally — ZXing loads automatically if the native detector cannot handle the format.
- For unusual symbologies such as DataMatrix or PDF417, this is the path that works.
- Check the decoder line in the result card to see which engine ran.
ZXing versus the native BarcodeDetector
The native API is faster and costs nothing to load, but its format list is set by the platform and varies — Chrome on Android exposes more than Safari does. ZXing is consistent across browsers and supports more symbologies, at the price of a megabyte download and slower per-frame decoding.
A sensible production strategy is exactly what this page does: try native first, fall back to ZXing when the API is missing or reports no supported format.
Reviewed 2026-10-21. This tool runs entirely in your browser — no server, no account, and nothing you generate is stored.
Frequently asked questions
Is ZXing free to use?
Yes, it is Apache-2.0 licensed. The WebAssembly build used here is the maintained browser port of the same core.
Why is the first scan slow?
The wasm module is about a megabyte and is fetched on first use, then cached by the browser. Subsequent scans start immediately.
Does ZXing read damaged codes better?
It is generally more tolerant of low contrast and rotation than the native API. Neither can recover a code with a destroyed finder pattern.
Related tools
More from QR codes.