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?
The symbol has no expiry setting and embeds the payload directly. A linked website can still close or move. This generator does not operate a redirect service or require a subscription.
How is a static QR different from a dynamic QR?
A static QR stores the final payload. A service marketed as dynamic usually stores a redirect URL whose destination the service can change. If that redirect is disabled, including after a subscription ends, scanning may stop reaching the destination.
Should I choose SVG or PNG?
SVG preserves the module grid at different sizes. PNG is a raster image drawn at the selected whole number of pixels per module. Avoid resizing PNG with smoothing, cropping its border or placing artwork over the modules.
Does higher error correction always help?
Higher correction adds redundant codewords and may require a larger symbol. It does not guarantee a scan when contrast, focus, print size or the quiet zone is poor. The tool never silently changes your chosen correction level.
Can someone read my Wi-Fi password from the image?
Yes. The password is part of the encoded payload. Treat the QR image like the password itself. Payloads and downloads stay in your browser.
What contact fields are included?
The vCard-lite option writes vCard 3.0 full name, a simple name field, phone, email and organization. It omits addresses and photos. Contact and Wi-Fi behavior depends on the scanner application.

Sources

Last reviewed 2026-11-14. The method is written out above so you can check our math.