QR Code Generator

Build and style QR codes from Wi-Fi, contact, and other presets

What goes inside?

You can skip http:// — it's added automatically.

Damage resistance (error correction)

Extra data so the code still scans when scratched or partly covered. Higher is sturdier but makes the pattern denser.

StandardRecommendedFine for screen and print (~15% recovery)

DesignQuick themes

Your QR code updates instantly as you type.

About QR Code Generator

The QR code was developed by DENSO WAVE, a Toyota group company, to track automotive parts, and was announced in 1994. The name stands for Quick Response, because the design goal was fast reading on the factory floor. It became a Japanese Industrial Standard in 1999 and an international standard, ISO/IEC 18004, in 2000. Every QR code your phone camera reads today follows that specification.

This generator encodes digits-only input in numeric mode, input made only of capitals, digits and a few symbols in alphanumeric mode, and everything else as UTF-8 bytes, then appends Reed-Solomon error-correction codewords, and picks the smallest of the 40 symbol versions that can hold the data. It then tries all eight mask patterns and keeps the one with the lowest penalty score, which is the step that avoids large blank areas or patterns that look like finder squares. You can download the result as PNG or SVG.

What L, M, Q and H actually protect

DENSO WAVE lists the recovery capacity as roughly 7% for L, 15% for M, 25% for Q and 30% for H. The percentage refers to codewords, the 8-bit chunks the data is split into, not to a share of the printed area. A scratch that crosses many codewords uses up the budget faster than its area would suggest, so a code at level H will not necessarily survive a stain covering 30% of its surface.

Higher levels need more room for the same content, which pushes the symbol to a larger version. Encoding https://example.com (19 bytes) with this tool gives version 2 (25×25 modules) at L, M and Q, and version 3 (29×29) at H. If the printed size stays the same, more modules means each module is smaller, and small modules are what make a code hard to read from a distance. DENSO WAVE notes that M is the most commonly chosen level and suggests Q or H for dirty factory environments; for a clean screen, L is fine.

Why a logo in the middle still scans, and when it stops scanning

When you paste a logo over the center, the modules under it become wrong data. The scanner treats them like any other damage and reconstructs them with Reed-Solomon decoding. In other words, a logo is deliberate damage that spends part of the error-correction budget before the code ever leaves your desk. That is why logo codes are normally generated at level H, and why they tolerate less real-world wear than a plain code at the same level.

Placement matters as much as size. The three large squares in the corners (finder patterns) and the strips next to them that store the format information are not data: they tell the reader where the code is and which level and mask were used. Cover those, and there is nothing for error correction to work with. This tool does not composite logos, so the reliable route is to download the SVG, place a small logo in the center in an editor, and test it with several different phones before printing a batch.

Quiet zone and print size

The specification requires a blank margin four modules wide on every side. Turning on the tool's outer margin option adds exactly that. If you export without it and place the image directly against a patterned background or a line of text, the reader may fail to find where the symbol ends.

For print size, think in millimeters per module. DENSO WAVE's own worked example uses a 400 dpi printer at 4 dots per module, which gives 0.254 mm per module; a version 3 code (29 modules) plus the 4-module margin on each side is 37 modules, or about 9.4 mm square. That example assumes an industrial reader at close range. A poster read by a phone from a meter away needs far larger modules. The easiest way to get larger modules in the same space is to shorten the content so the version drops, for example by using a short URL.

What is inside a Wi-Fi, contact or SMS code

The presets only build text in formats that phone cameras recognize; the QR code itself still just stores characters. Wi-Fi uses WIFI:T:WPA;S:name;P:password;; and any semicolon, colon, comma or backslash in the name or password must be escaped with a backslash, which the tool does for you. Contacts use vCard 3.0, SMS uses SMSTO:number:message, phone calls use tel:, locations use geo:latitude,longitude, and email uses a mailto: link with subject and body parameters.

A Wi-Fi password inside a QR code is plain text, not encrypted. Anyone who scans the code on the café wall with a generic reader app sees the password itself. A separate guest network is the safer way to share access this way.

Worked examples

Same URL, different levels

Input
https://example.com/menu?table=12&lang=ko at L and at H
Output
L: version 3 (29×29) / H: version 5 (37×37)

Level H buys about 30% codeword recovery at the cost of roughly 1.6 times as many modules. On a business card, shortening the URL usually helps readability more than lowering the level.

Wi-Fi name with special characters

Input
SSID: Cafe;Guest, password: a:b, WPA
Output
WIFI:T:WPA;S:Cafe\;Guest;P:a\:b;;

The backslashes stop the semicolon and colon from being read as field separators. Built by hand without escaping, a phone would read the network name as just Cafe.

Digits only, smaller symbol

Input
12345678901234567890 (20 digits, level M)
Output
Version 1 (21×21)

Numeric mode packs three digits into 10 bits, far denser than byte mode's 8 bits per character; the same 20 digits in byte mode would need version 2. An all-caps URL (HTTPS://EXAMPLE.COM) likewise fits alphanumeric mode and can come out smaller than the lowercase one, but a single lowercase letter switches the whole input to byte mode.

How to use it

  1. Choose the content type (URL, text, Wi-Fi, contact and so on) and fill in the fields.
  2. Pick an error-correction level: L or M for screens, H if you will add a logo or mount it outdoors.
  3. If you change colors or dot shapes, keep strong contrast and leave the outer margin on.
  4. Download PNG for quick use or SVG for print, then scan it with a real phone.

Frequently asked questions

Do these QR codes expire?

No. They are static codes: the content is stored in the pattern itself. A URL code stops being useful only if the web page it points to disappears. So-called dynamic QR codes store a redirect address on a vendor's server, which is how they count scans and change destinations, and why they stop working if that service shuts down.

I changed the colors and now it will not scan.

Readers separate modules by brightness. The foreground must be clearly darker than the background. Inverted codes (light modules on dark) are not supported by every reader app, and two pastel colors often lack contrast; the tool warns when contrast is low.

How much can a QR code hold?

At version 40, level L, 2,953 bytes (2,331 at M, 1,663 at Q, 1,273 at H). Accented or non-Latin characters take 2 to 4 bytes each in UTF-8. Codes that large are hard for phones to read, so for long content, host a page and encode its address.

PNG or SVG?

SVG for anything printed or likely to be resized, because it is vector and module edges stay sharp at any size. PNG is convenient for chat apps and slides.

Sources

Last reviewed:

Privacy and how data is handled