When building web applications that require QR or barcode scanning, developers historically had to rely on native plugins or paid wrappers. Today, html5-qrcode is the most popular open-source library for client-side scanning on the web.
In this post, we discuss the core features of html5-qrcode and why we chose it to power ScanApp.org.
What makes html5-qrcode stand out?
Developed as an open-source project, html5-qrcode provides a lightweight wrapper around browser camera APIs and decoding libraries:
- No Server Dependency: All image processing and mathematical matrix calculations run in the user’s browser via WebWorkers and JavaScript.
- Broad Code Support: Decodes standard QR codes alongside common 1D retail barcodes (UPC, EAN, Code 39, Code 128, etc.).
- Cross-Browser Compatibility: Handles camera controls across iOS (Safari), Android (Chrome/Firefox), and desktop operating systems smoothly.
- Adaptive Scanning: Dynamically scales scanning areas and adjusts frames-per-second (FPS) to optimize battery life on mobile devices.
Integrating It Into Your Project
To add standard web camera scanning to your own website:
// Install library via npm or include via CDN script
const html5QrCode = new Html5Qrcode("reader");
html5QrCode.start(
{ facingMode: "environment" }, // Use back camera
{
fps: 10, // 10 frames per second
qrbox: { width: 250, height: 250 }
},
(decodedText, decodedResult) => {
// Success callback
console.log(`Scan result: ${decodedText}`);
},
(errorMessage) => {
// Silent parsing errors or camera warnings
}
).catch((err) => {
// Permission or hardware errors
});