QR code generator
Choose a content type and enter the information to encode. Preview a static QR code and download an SVG or PNG, with no upload or redirect service.
Create a static QR code locally. JavaScript enables the preview and downloads.
How it works
Phone payloads require an international number starting with +. Email body line breaks are normalized to CRLF; subjects must be a single line. Only fields for the selected content type are validated.
The local encoder implements QR Model 2 numeric, alphanumeric and byte modes, versions 1–40, and error correction L, M, Q and H. Automatic mode selects one mode for the whole payload; it does not optimize mixed segments. Non-ASCII byte text uses UTF-8 with an ECI indicator. Kanji mode, Micro QR and structured append are outside this tool.
The encoder adds mode and length bits, terminates and pads the data, computes Reed–Solomon error correction, interleaves blocks and places the bits around the fixed patterns. It evaluates all eight masks using run, block, finder-pattern and dark-balance penalties, then adds BCH format and version information. Tables and rules were checked against the linked primary implementations and the full ISO standard.
symbol side = 17 + 4 × version image side in pixels = (symbol side + 2 × quiet zone) × pixels per module
Automatic version selects the smallest version that fits the chosen mode and error correction. Pixel dimensions are exact integers; only the displayed contrast ratio is rounded, to two decimal places. DENSO WAVE requires a clear quiet zone at least four modules wide on every side.
Colors use the WCAG relative-luminance formula. The tool warns below 4.5:1 as a conservative design heuristic, borrowed from the WCAG text threshold; it is not a QR certification threshold. Dark modules on a light background are preferable. Always scan-test the final print. Application limits are 30,000 input bytes, 1–16 pixels per module and 4–32 quiet-zone modules.
Worked examples
HELLO WORLD at error correction M
These 11 alphanumeric characters fit version 1. The symbol is 21 × 21 modules. With a four-module quiet zone and eight pixels per module, the download is (21 + 8) × 8 = 232 × 232 pixels. It contains 16 data codewords and 10 error-correction codewords.
Numeric text uses less space
The 10 digits 0123456789 use 34 payload bits: three groups of three digits at 10 bits each and a final digit at 4 bits. They fit version 1 at level M. With a four-module quiet zone and four pixels per module, the image is 116 × 116 pixels.
Frequently asked questions
Will this QR code expire?
How is a static QR different from a dynamic QR?
Should I choose SVG or PNG?
Does higher error correction always help?
Can someone read my Wi-Fi password from the image?
What contact fields are included?
Sources
- RFC 3966 — global telephone numbers and local contexts, sections 3 and 5.1 (checked 2026-11-14)
- RFC 6068 — mailto body line breaks, section 5 (checked 2026-11-14)
- ISO/IEC 18004:2006 — full standard, Annex D and E tables (checked 2026-11-14)
- ZXing — independent version and block tables (checked 2026-11-14)
- ISO/IEC 18004:2006 — public preview and section index (checked 2026-11-14)
- Project Nayuki — primary QR implementation, encoding tables and mask rules (checked 2026-11-14)
- DENSO WAVE — four-module quiet zone (checked 2026-11-14)
- ZXing — payload conventions (checked 2026-11-14)
- ZXing — UTF-8 ECI assignment (checked 2026-11-14)
- ZXing — independent encoder test vectors (checked 2026-11-14)
- ZXing — format/version BCH test vectors (checked 2026-11-14)
- W3C WCAG 2.2 — relative luminance and contrast ratio (checked 2026-11-14)
Last reviewed 2026-11-14. The method is written out above so you can check our math.