Browser processing Input is processed on your device. Privacy & storage

QR Code Generator

Links, Wi-Fi networks, contact cards, email, SMS and locations — with custom colours, a centre logo and pixel-perfect PNG or vector SVG export.

Content & design
Encoded data: —

M — 15% of the code can be damaged and still scan. The usual default.

Foreground · background

Rounded and dots scan just as well — pick what fits your design.

Snapped to whole pixels per module so edges stay crisp.

None

A logo covers modules, so error correction is forced to H while one is loaded.

Beyond “type a URL”

A QR code is just a container for text, and what that text means is decided by a scheme. Most generators only emit links, which is why scanning one leaves you staring at a browser. This one builds the correct payload for the job:

  • Wi-Fi — WIFI:T:WPA;S:name;P:password;; joins the network on Android and recent iOS versions without anyone typing a password. Reserved characters inside the SSID or password are backslash-escaped, which is the part most generators get wrong.
  • vCard — a real BEGIN:VCARD … END:VCARD block, so scanning offers “Add to contacts” with name, organisation, title, phone, email and website already filled in.
  • Email — a mailto: URI with URL-encoded subject and body, so a scan opens a pre-filled draft.
  • SMS — SMSTO: with the number and message prepared.
  • Geo — a geo: URI that opens the coordinates in the default map app.

Why the pixel maths matters

A QR code is a grid of square modules. If you ask for a 512 px image and the grid happens to be 29 modules wide plus an 8-module quiet zone, each module lands on 13.8 pixels — the renderer rounds each one independently and some rows come out one pixel taller than others. Scanners cope, but printing and resizing artefacts follow. This generator rounds the whole image up to the nearest exact multiple instead, so every module is an integer number of pixels and the result stays sharp at any scale. SVG export sidesteps the question entirely by staying as vector paths.

Choosing an error correction level

Redundancy is what lets a code survive a smudge, a corner sticker or a logo on top. Level L recovers about 7% of the data, M 15%, Q 25% and H 30%. Higher levels add modules, so the code gets denser — which is why they need a bigger printed size to scan at the same distance. Use M for normal cases, Q if the code will be printed on packaging, and H whenever you place a logo in the middle. Contrast matters just as much: keep the background light and the foreground dark, since many scanners assume dark-on-light.

FAQ

Will a logo stop the code from scanning?

Not if the level is high enough. The centre of a QR code is not where the recovery data lives — the three corner squares are. A logo covering roughly 20% of the width is safe at level H, which is why this tool switches to H automatically. Always test the finished code with two different phone cameras.

Is the short link or the raw URL baked into the code?

Whatever you type is what gets encoded. If you want analytics, encode a short link you control — QR codes are static images, so you cannot change the destination after printing unless the URL itself is a redirect.

How much data fits in one code?

Roughly 1,000–1,300 characters at low error correction, dropping to about 1,000 at level H. If you exceed the limit this tool says so instead of rendering something unscannable. Long vCards and Wi-Fi payloads are well within range.

Where do the generated files go?

Nowhere — no image ever leaves your device and no payload is sent to a server. The QR data is generated by a bundled JavaScript encoder, which is also why this page works offline.