Generate and decode QR codes and barcodes entirely in your browser. Create QR codes for URLs, text, or Wi-Fi credentials and download as PNG or copy the SVG. Scan QR codes from an uploaded image or your webcam. Generate standard barcodes in Code 128, EAN-13, or UPC-A format.
All tools use open-source JavaScript libraries (qrcode.js, jsQR, JsBarcode) running locally. All processing happens inside your browser tab.
Read the complete QR tools guide
QR codes are convenient because they hide their payload. A square of black and white squares reveals nothing until you scan it. That convenience is also the privacy concern: the payload often contains something you would not paste into a chat window. A Wi-Fi QR code carries your network name and password in plain text. A payment QR includes account or wallet identifiers. A shared contact card holds names and phone numbers.
Hosted QR generators receive the payload to turn into an image, then send the PNG back. For a marketing URL that's fine. For a Wi-Fi password it is not. The server now has a record of your credentials, indexed by your IP address and the time you typed them in.
Browser-based tools handle the whole pipeline locally. The QR generator draws the image in a canvas in your page. The scanner reads pixels from an image or webcam frame and decodes them with JavaScript. The payload never crosses the network in either direction.
The QR generator uses qrcode.js, an open-source JavaScript library that implements the QR specification (ISO/IEC 18004). You give it a string, it returns an array of dark and light modules, and the page renders that array onto a canvas. Saving as PNG uses canvas.toDataURL; saving as SVG uses the library's vector output mode.
The scanner uses jsQR, a pure-JavaScript QR decoder. It reads pixel data from an image or a webcam frame, runs the decoding pipeline (locating the finder patterns, sampling the modules, error correction), and returns the original string. The webcam path uses getUserMedia to attach the camera to a <video>element and samples frames every animation tick.
The barcode generator uses JsBarcode, which knows the encoding rules for Code 128, EAN-13, UPC-A, and several other formats. It draws the bars directly into an SVG or canvas. Check digits for EAN-13 and UPC-A are calculated automatically.
| Approach | Processes locally | Setup | Best for |
|---|---|---|---|
| In-browser (this site) | Yes | None | Wi-Fi codes, contact cards, one-off generation |
| Hosted QR code services | No | None | Public marketing URLs |
| Phone camera (built-in scanner) | Yes | None | Scanning physical codes in the world |
Your phone camera is already an excellent QR scanner for things you encounter in the real world. The in-browser tools here cover the cases the phone camera does not: generating new codes from text or a URL, and decoding codes from a screenshot or downloaded image.