QR Code Generator

Links, wifi, vCards. Renders live, downloads as PNG.

How it works

Type or paste your content, pick a size, and the code renders instantly in your browser. Higher error correction adds redundancy so the code still scans when part of it is dirty, printed small, or covered by a logo — at the cost of a denser grid.

Step by step

Choose what the code should carry

The three presets cover most needs. Website URL is the common case and encodes the address exactly as typed, so include the https:// — a code without it will open in some scanners and fail in others. WiFi encodes a network name and password so a guest joins by pointing a camera at a card rather than typing a long key. vCard packs a whole contact record, and scanning it offers to save the person straight to the phone book.

Fill in the content

For a URL, paste the full address. For WiFi, replace the network name and password in the pattern and leave the WPA security type unless your network is genuinely open or still on WEP. For a vCard, work through the five sections and leave out anything you do not want public — a QR code on a poster is readable by anyone who walks past it.

Set the size

The size slider controls the exported pixel dimensions, not how much data fits. Larger export means a sharper printed edge. For anything going to print, take the size well above what looks adequate on screen, because a scanner needs clean square boundaries and a downscaled code loses them.

Add a logo if you want one

Upload a logo and it is drawn in the centre at the size you set. This works because QR codes carry error correction, and the covered area is treated as damage the reader can reconstruct. Keep the logo under about a fifth of the code width, and raise error correction to H before you do it.

Download and test before you commit

Export the PNG, then scan it from the screen with a phone. Then scan the printed proof. A code that reads on a monitor can fail on paper if the print is light, the paper is glossy, or the code was scaled down in a layout program. Test the artefact you are actually shipping, not the file you made it from.

Good for

Use something else for

How it actually works

What the pattern actually contains

A QR code is a grid of modules — the small black and white squares — arranged in a fixed structure. The three large squares at the corners are finder patterns, and they let a reader work out the orientation and scale of the code from any angle. The smaller square near the fourth corner is an alignment pattern that corrects for the distortion you get when the code is photographed off-axis or printed on something curved. The dotted lines running between the finder patterns are timing patterns, which tell the reader how wide a single module is.

Why data density matters

Everything else is data and error correction. As you add characters, the code needs more modules, so it steps up through versions — version 1 is 21×21 modules, version 40 is 177×177. A URL of thirty characters produces a sparse, forgiving code. A full vCard with address and notes can push past version 10, and at that density each module is physically tiny at any given print size. That is the practical reason to keep encoded text short: not a hard limit, but a scanning failure rate that climbs quietly as the grid gets finer.

Error correction, and what it costs

Error correction uses Reed-Solomon codes, the same family used on compact discs. Four levels exist. L recovers about 7% of the code, M about 15%, Q about 25%, and H about 30%. The redundancy is not free — it occupies modules, so raising the level on the same content makes the grid denser. H on a long vCard produces a code that is technically robust and practically unreadable at business-card size. M is the sensible default for screens and clean print. Go to H only when you are covering the centre with a logo, and shorten the content to compensate.

The quiet zone

The blank margin around the code is part of the specification, not decoration. Readers use it to find the edge of the pattern. The standard calls for four modules of clear space. Designers routinely crop it to make a code fit a layout, and it is one of the most common reasons a code that worked in testing fails in production. Leave the margin.

When something goes wrong

The code scans on screen but not from the printed poster

Almost always contrast or size. Inkjet output on uncoated stock spreads slightly, thickening black modules and closing the gaps between them, which a reader interprets as noise. Print a proof at final size and scan it from the real distance. If it fails, either raise the physical size or shorten the content so the grid is coarser.

It stopped working after adding the logo

The logo is covering more than the error correction can absorb. Reduce the logo to about 18% of the code width, and set error correction to H. If it still fails, the content is too long — a dense grid has less spare capacity in absolute terms even at the same correction level.

Some phones read it and others do not

This is usually a marginal code rather than a phone problem. Older cameras with fixed focus struggle below a certain module size. Treat any code that fails on one device as a code that will fail for a meaningful share of your audience, and make it bigger or simpler.

The WiFi code does not connect

Check the security type. The pattern uses WPA, which covers WPA2 and WPA3 networks. An open network needs nopass instead, and the older WEP standard needs WEP. Also check for a trailing space in the password, which is easy to paste in and impossible to see.

Scanning the vCard saves an empty contact

Some Android contact apps are strict about vCard structure and reject records with unusual characters in the name field. Remove accents and punctuation from the name and try again. iOS is more tolerant, so test on both if the audience is mixed.

Compared with the alternatives

Against paid dynamic-QR services

The paid services sell one thing that matters: the code points at their server, which redirects to your real destination, so you can change the destination after printing and see scan counts. That is genuinely useful for a campaign. It also means your printed code stops working the day you stop paying, or the day the company folds. Several have. If you want both, encode a short URL on a domain you own and control the redirect yourself — you get the flexibility and the tracking without renting your own print run back from someone.

Against other free generators

Most free web generators upload your content to a server to render the image, and a good number of them quietly make the code dynamic so they can insert tracking or advertising later. Reading the terms is worth five minutes. This one renders in the page with no network request, which you can verify by opening your browser network tab and watching nothing happen.

Against design software

Illustrator and InDesign can generate codes, and if you are already laying out print, that workflow is better than importing a PNG because you get vector output that scales cleanly. Use them for professional print. Use this when you want a code in ten seconds without opening anything.

Common questions

Do QR codes expire?

Not the ones made here. The data is encoded directly into the pattern, so there is no redirect service that can go away. If you encode a URL, the code works as long as that URL does.

What size should I print?

A rough rule is one centimetre of code per metre of scanning distance. For a poster read from three metres, print the code at least three centimetres wide and use error correction Q or H.

Is my data sent anywhere?

No. Encoding happens in your browser and the image is drawn on a canvas on your machine. Nothing is transmitted or stored.

Guides


All tools · Guides · About · Privacy · Contact

Unpacking...