Plain black on white is the most reliable QR code you can print. The generator below is already set that way, with square modules and square corners for maximum scanning tolerance. Download PNG or SVG, free, with no account and no watermark.
The generator runs in your browser. Make a QR code.
A scanner decides whether each module is dark or light. Everything that makes a code look designed makes that decision harder. Rounded modules shave the corners off each square, gradients slide the value of a module across its own area, and mid-tone colours narrow the gap the scanner is measuring.
None of that matters when conditions are good. It all matters at once when they are not: a small print, a cheap camera, a poorly lit room, a code at an angle, a slightly damaged label. Black on white with square modules spends none of your error budget on decoration, so all of it is available for the real world.
Contrast has a direction as well as an amount. Dark modules on a light background is what scanners expect. Inverted codes, light on dark, are read reliably by some apps and not at all by others. If a design calls for an inverted code, test it on both an iPhone and an Android first, and keep a normal version ready.
Laser printers are the easy case.
Toner sits on the surface with hard edges, which is exactly what a QR code wants. Print at 100 per cent scale, and turn off any "fit to page" option that might resample it.
Inkjet on plain paper spreads.
Ink wicks along the paper fibres and thickens the dark modules, closing the light gaps. Print a little larger than you think you need, or use coated paper.
Thermal label printers are low resolution.
Many run at 203 DPI, so a module can land on a fraction of a dot and get rounded away. Size the code so each module is at least three or four dots across, and print a test label before running a batch.
Photocopies lose a generation each time.
Every copy of a copy thickens the pattern further. Print originals from the file rather than duplicating a printed sheet.
Greyscale is not black and white.
A code converted to grey prints as mid-tone dots rather than solid black, which cuts the contrast the scanner depends on. Generate it black rather than converting a colour version.
Use it without an account
Static QR codes need no email, no signup and no account of any kind.
Free PNG and SVG download
Both formats, full resolution, no account. Vector export is the thing most generators put behind a signup.
No watermark, ever
Nothing is stamped on your code on any plan, including the free one.
Static codes never expire
A static code has the URL encoded directly in it. It cannot be switched off later, by us or anyone else.
Your URL never reaches our servers
Static codes are generated entirely in your browser. We could not log what you encode if we wanted to.
Dynamic codes are the only paid part
Trackable, editable codes run through our servers, so they need an account. Free covers 5 codes and 500 scans a month; paid starts at $3.
Static. This is the configuration people choose when the code has to work on a photocopied notice or a printed label, and neither should depend on a redirect.
A static QR code has the URL encoded directly in the pattern. It works forever and offline, but the destination can never be changed. A dynamic QR code is a short link that redirects, so you can edit the destination and count scans after the code is printed. Static codes are free here with no account. Dynamic codes need a free account (5 codes and 500 scans a month), and paid plans start at $3/month.
Download a free SVG QR code with no account and no watermark. Vector output stays sharp at any size, from a business card to a trade show banner.
Generate a print quality QR code free, with no account. Download a high resolution PNG, or an SVG that stays sharp at any size you print it.
Make a QR code with a transparent background, free and with no account. Download PNG with a real alpha channel, or SVG with no background at all.
Make a QR code that never expires, free and with no account. A static code has the destination encoded in the pattern, so it cannot be switched off.
Generate QR codes without sending anything to a server. Static codes are built entirely in your browser, so nothing you encode leaves your device.