What is a QR code, and when should you use one?

A QR code is a picture of data. A scanner turns the camera image into black and white cells, finds the three big squares in the corners, works out the grid, and reads the cells. Everything that makes a code work or fail comes back to that.

Use one when someone is physically present and needs something on their phone: a menu, a Wi-Fi network, a ticket, a parcel label. Avoid one on a web page or in an email, where the reader is already on a device and a link is one tap instead of two.

Last reviewed: 2026-09-19. Checked against the tool’s own source on that date.

The four things that decide whether it scans

The most common failure is a designer cropping the quiet zone to fit a layout. The symptom is maddening: the code works on some phones and not others, because it depends on what the camera happens to frame.

  • Quiet zone. The blank margin is part of the code. The specification requires at least four cells of clear space on every side, and scanners rely on it to find the edges.
  • Contrast. Scanners convert the image to black and white before reading, so what matters is lightness difference, not whether the colours look distinct. Black on white is 21:1; aim for at least 7:1, and keep the code darker than its background.
  • Size relative to scanning distance. A widely used rule of thumb is that the code should be about a tenth of the distance it will be scanned from — 3 cm at arm’s length, about 30 cm on a poster read from three metres.
  • Cell size. Below roughly 0.4 mm per cell, phone cameras struggle and cheap thermal printers smear neighbouring cells together.

Error correction is insurance, not free space

QR codes carry redundant data so they still decode when part of the image is damaged. There are four levels: L recovers about 7% of the symbol, M about 15%, Q about 25% and H about 30%.

The trade-off is density. More redundancy means more cells for the same content, and more cells means each one is physically smaller at a given print size — which can make scanning harder rather than easier. Raising the level is not automatically safer.

Use L or M on a screen or clean flat paper. Use Q for anything that will be handled, folded or splashed: a menu, a loyalty card, a parcel. Use H when you intend to place a logo over the centre. If the code becomes very dense at a high level, shorten the content instead of raising the level further.

Shorter content beats every other optimisation

The number of cells is driven by how much data you encode. Fewer characters means fewer cells, which means each cell is larger at the same printed size, which means it scans from further away and survives worse printing.

A long URL with tracking parameters can easily double the cell count against a short one. If you control the destination, a short path is worth more than any setting in the generator.

Encoding mode matters too: digits pack more densely than mixed-case text, and upper-case alphanumerics pack more densely than arbitrary characters. A numeric reference is a genuinely smaller code than the same reference written with mixed case.

When NOT to use one

  • On a web page or in an email. The reader is already on a device; a link is fewer taps and works for people using a screen reader.
  • As the only route to essential information. Someone with an older phone, a broken camera or no data connection is locked out. Print the URL as well.
  • For anything you will need to change. The value is baked into the image, so a printed code cannot be edited. If the destination may move, point it at a URL you control and redirect from there.
  • On a screen that someone else is holding — a badge at a conference, a phone shown to a phone. It works, but it works badly, and a spoken short link is often faster.

Output format

Export SVG for anything that will be printed. It is vector, scales to any size with sharp edges, and is what a designer or printer will want.

Export PNG for screens and documents, at a generous pixel size. Never scale a PNG code up afterwards — interpolation blurs the cell edges, which is exactly what the scanner needs crisp. Re-export it larger instead.

Worked example: a table card for a restaurant menu

A code goes on a laminated table card. It will be scanned from about 40 cm, by phones of every age, on a surface that gets wiped down and occasionally splashed.

The destination is a menu page. The long form with tracking parameters is 96 characters; the short form is 28.

  1. Use the short URL. At 28 characters the symbol needs far fewer cells than at 96.
  2. Set error correction to Q, because the card will be handled and wiped.
  3. Size the code at about 4 cm across — a tenth of 40 cm gives 4 cm.
  4. Keep the default four-cell quiet zone and leave the code dark on a light panel.
  5. Export SVG and give it to the printer.
  6. Print one, scan it with an old Android and a recent iPhone, under the restaurant’s actual lighting.

Result: A 4 cm code with cells comfortably above the 0.4 mm threshold, a quiet zone the scanner can find, and enough redundancy to survive a wipe mark. Printing the menu URL underneath in small type costs nothing and covers the customer whose camera will not cooperate.

Open the tool

Generate a QR code in your browser

Generates QR codes and Code 128 barcodes on your device, with a live contrast reading. It cannot read or decode a code.

What this does not cover

  • The ToolAcre QR tool generates codes. It does not scan or decode them, requests no camera access, and has no reader.
  • Code 128 is the only barcode symbology offered, and it is ASCII-only. There is no EAN, UPC, ITF, PDF417 or DataMatrix.
  • No logo overlay, because placing one safely needs a visual scannability check the tool cannot make for you. Export the SVG and do it in a design tool.
  • No dynamic or editable codes. The value is baked into the image and cannot be changed afterwards.
  • The contrast figure and the distance rule of thumb are guidance. Printing one and scanning it is the only real test.