QR Code Generator
Create downloadable QR codes for URLs, text, contact info, and more.
About the QR Code Generator
QR codes (Quick Response codes) are two-dimensional barcodes invented by Denso Wave in 1994 for tracking automotive parts. They are standardized under ISO/IEC 18004 and encode data as a grid of dark and light modules — up to 177 by 177 at version 40 — that a phone camera can decode in milliseconds. Unlike the original linear barcodes, QR codes pack 200 times the data density into the same physical area.
Every QR code carries four error-correction levels defined by Reed-Solomon coding: L recovers 7% of damaged modules, M recovers 15%, Q recovers 25%, and H recovers 30%. Higher levels mean more redundant data and a denser pattern. Choose H for printed materials that may be smudged or partially obscured; choose L for digital displays where every pixel counts.
The QR specification supports four encoding modes that pack different densities: numeric (3.3 bits per module), alphanumeric (5.5 bits), byte (8 bits), and Kanji (13 bits). A version 40 QR at level L holds up to 7,089 numeric digits, 4,296 alphanumeric characters, 2,953 bytes, or 1,817 Kanji characters — enough for a small vCard, a long URL with UTM parameters, or a complete Wi-Fi configuration.
How It Works
This tool builds a request to the public api.qrserver.com endpoint, which renders the QR server-side using a libqrencode backend. The request URL is structured as https://api.qrserver.com/v1/create-qr-code/?size=256x256&ecc=M&data=... with the data URL-encoded per RFC 3986. The server returns a PNG (or SVG when format=svg is set) which the browser loads directly.
The size parameter controls the rendered image’s pixel dimensions, not the QR’s capacity. A larger canvas makes the code easier to scan from a distance or when printed at small physical sizes; the underlying data capacity is determined by the version (1–40) and the error-correction level selected by the encoder.
Error correction uses Reed-Solomon codes over GF(256), the same family of codes used on CDs, Blu-ray discs, and QRAM. The encoder computes parity symbols for each block of data modules and interleaves them so a localized tear or smudge distributes across multiple codewords — this is why a coffee-stained QR still scans.
For URL encoding, the QR specification recommends the ‘alphanumeric’ mode for URLs that contain only 0–9 A–Z $ % * + – . / : because it packs 5.5 bits per module instead of the 8 bits per module required for full byte mode. Most encoders select mode automatically based on the input.
Worked Examples
Encode the URL https://ht99.icu at 256×256 with ECC level M. The output PNG is a 21×21-module QR (version 1) padded to 256 pixels. Even at small print sizes the code remains scannable because the URL is short.
Encode a Wi-Fi configuration WIFI:T:WPA;S:HomeNetwork;P:Sup3rSecret!;; at 512×512 with ECC level H. Phones running iOS 11+ and Android 10+ recognize this format and offer a one-tap join dialog when the camera focuses on the code. The semicolon-separated schema is documented in the Android Wi-Fi QR format spec.
Encode a vCard (BEGIN:VCARD ... END:VCARD) with full contact details at 1024×1024 with ECC Q. The QR fills version 12 or 13 (around 65×65 modules) and remains readable even when printed at 3 cm wide. Avoid ECC L for vCards — one coffee ring will make the contact unreachable.
When to Use This Tool
- Restaurant menus and contactless ordering displayed on table tents.
- Wi-Fi credentials sharing via the
WIFI:T:WPA;S:...;P:...;;schema recognized by iOS and Android. - vCard business cards that auto-import into the recipient’s contacts app.
- Event ticketing and boarding passes where the QR encodes a signed token.
- Payment addresses (BIP-21 Bitcoin, EIP-681 Ethereum, UPI IDs) scanned by mobile wallets.
- App-store deep links that route users to the right platform (iOS App Store or Android Play Store).
- Two-factor-authentication TOTP seeds encoded as
otpauth://totp/...per RFC 6238.
Limitations & Disclaimer
This tool renders QR codes via the public api.qrserver.com endpoint, which means the data you encode is transmitted to a third-party server. Do not use it for passwords, payment details, or other sensitive content; for those use cases, run a local library such as qrcode (Node) or qrcodegen (browser). Capacity figures assume an ideal encoder; very long alphanumeric inputs may force byte-mode encoding and reduce capacity by roughly 30%. The error-correction percentages are theoretical maxima; partial obstruction across multiple codeword blocks can defeat even ECC H. See our disclaimer for full terms.
Frequently Asked Questions
What is the maximum data capacity of a QR code?
Version 40 (177×177 modules) at error correction level L holds 7,089 numeric digits, 4,296 alphanumeric characters, 2,953 bytes, or 1,817 Kanji characters. At ECC H capacity drops to roughly 1,853 alphanumeric characters. See ISO/IEC 18004 §7.4.
Which error correction level should I choose?
L (7%) for digital displays and clean environments. M (15%) for general use. Q (25%) for outdoor signage or printed materials that may be partially obscured. H (30%) for industrial environments, kitchen menus, or anything that may be smudged. Higher ECC means denser patterns, so balance resilience against scannability.
Are the QR codes stored on the server?
The QR is rendered server-side by the public api.qrserver.com endpoint. The data you encode is transmitted to that service. Do not use this tool for sensitive data such as passwords, payment details, or PII. For sensitive content, generate the QR locally with a library like <code>qrcode</code> (Node) or <code>qrcodegen</code> (browser).
Why does my QR not scan?
Common causes: contrast too low (use pure black on white), size too small (minimum 2×2 cm at 300 DPI for a 50-character payload), quiet zone too narrow (leave a 4-module white border), or the data contains characters that forced byte-mode encoding. Try ECC M or L and re-test.
Can I encode a logo in the center of the QR?
Yes, up to roughly 30% of the modules can be obscured if you select ECC H — the Reed-Solomon code reconstructs the missing data. Keep the logo smaller than 20% of the QR width and verify with multiple scanners after generation.
What is the difference between PNG and SVG output?
PNG is a raster format — the QR is rendered at a fixed pixel size and looks blocky when scaled up. SVG is a vector format that scales losslessly to any size, making it ideal for large-format printing, billboards, or any context where the QR will be resized. Use SVG for print and PNG for digital display.
Last updated: September 9, 2026 · Author: HT99 Tools Editorial Team