Free QR code and barcode tools
Generate QR codes and barcodes and decode QR codes 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, jsQR, JsBarcode) running locally. All processing happens inside your browser tab.
Read the complete QR tools guide
Why generate and scan QR codes in your browser
QR codes are convenient because they hide their payload. A square of black and white modules reveals nothing until you scan it. That also means the payload can hold something you would not paste into a chat window: a Wi-Fi QR code carries the network name and password in plain text, and a contact card holds names and phone numbers.
Hosted QR generators receive the payload, turn it into an image on their server and send the PNG back. For a public marketing URL that rarely matters. For a Wi-Fi password it means the credentials pass through someone else's server, where logs may keep them.
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. Our servers are not involved at any point.
How the QR and barcode tools work
The QR generator uses qrcode, 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 encodes the canvas with canvas.toBlob and downloads it through a short-lived blob: URL; copying 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.
In-browser QR tools vs the alternatives
| 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.
When to use these tools
- Sharing Wi-Fi without dictating the password? Build a one-tap Wi-Fi join code, which downloads a ready-to-print PNG or copies the code as SVG.
- Got a code on screen or in an emailed PNG that you cannot scan from your phone? Decode it through the QR scanner, either by uploading the image or pointing your webcam at it.
- Labelling stock or shelf inventory? Print a sheet of Code 128, EAN-13, or UPC-A barcodes using the barcode generator.
- Driving customers to a campaign page? Turn the marketing URL into a scannable QR for flyers, signs, and packaging.
Frequently asked questions
- Are these QR and barcode tools free?
- Yes. Generate as many codes as you like without an account, and every download comes without a watermark or logo.
- Is my QR code or barcode data sent to a server?
- QR codes are generated locally by the qrcode library. Barcodes are generated by JsBarcode. The scanner uses jsQR. All three are JavaScript libraries that run entirely in your browser. Our servers are not involved at any point.
- Can the scanner work without uploading my image?
- Yes. When you pick an image, the file is read into a canvas element in your browser. The jsQR library reads the pixels off that canvas and returns the decoded text. All processing runs in your browser.
- What about the webcam scanner, does it stream video anywhere?
- All decoding runs in your browser. The webcam feed goes directly into a video element in the page. Frames are sampled into a canvas and decoded with jsQR. The video stream is processed locally, is not recorded, and is not sent to our servers.
- What barcode formats does the generator support?
- Code 128 (printable ASCII text), EAN-13 (12-digit product codes plus check digit), and UPC-A (11-digit codes plus check digit). The generator validates the input and adds the check digit automatically for EAN-13 and UPC-A.
- Why is my Wi-Fi QR code longer than I expected?
- Wi-Fi QR codes encode a structured string with the network name, security type, and password. The format is WIFI:T:WPA;S:NetworkName;P:Password;; which iOS and Android both recognise. The QR will look denser than a short URL because the payload is bigger.
- Can I customise the QR code colors?
- Yes, the generator lets you pick foreground and background colors. Be careful with low-contrast combinations: scanners need a clear distinction between the dark and light modules to decode reliably. Stick to dark-on-light for best results.
- Do the tools work on mobile?
- Yes. The QR generator works on any device with a browser. The webcam scanner needs camera access, which iOS Safari and Android Chrome both support via the standard getUserMedia API.