Choosing QR Error Correction for Print and Links

How L, M, Q, and H trade capacity for scan reliability—and when PNG size and contrast matter more.

QR codes look simple: paste a URL, download a square, print it. In practice, error correction level, payload length, and physical layout decide whether a code scans on the first try.

This guide helps you pick L/M/Q/H for developer docs, Wi-Fi posters, and product labels—without treating "maximum correction" as a free upgrade.

What error correction actually buys

QR symbols include redundant codewords. If part of the grid is smudged, creased, or covered, the decoder may still recover the payload.

LevelRough recoveryWhen it helps
L~7%Long payloads; large, clean displays
M~15%Default for most HTTPS links
Q~25%Small print, partial finger cover
H~30%Center logos, worn stickers

Higher correction makes the same string denser. Browser generators may fail when you combine a long Wi-Fi string with level H—shorten the text or drop a level.

Use the QR Code Generator to preview locally; use the in-tool help next to Error correction for a quick rule list.

Pick by scenario, not by alphabet

Large slide or doc link (M)
Conference slides, README badges, internal dashboards. Start with M unless the code is tiny on the slide.

Sticker or flyer corner (Q or H)
Physical obstruction and cheap printers punish small modules. Raise correction and export a larger PNG than the printed size.

Wi-Fi guest network poster (L or M)
Wi-Fi strings are longer than bare URLs. Prefer L/M so the symbol stays readable; verify on iOS and Android before laminating.

Brand-colored codes (M + contrast check)
Custom foreground/background colors work when contrast stays high. Re-scan after every color tweak—error correction cannot fix a near-white module on a glossy label.

PNG output habits that matter as much as L/M/Q/H

Raster PNGs are fine for most DevCove workflows if you:

  1. Export at 256px–512px for screen; oversample for small print
  2. Keep a quiet zone—do not crop against borders or text
  3. Avoid upscaling a tiny PNG in InDesign or Figma
  4. Scan at final size under realistic lighting

Need to sanitize a URL before encoding? Run it through the URL Encoder first so query strings and reserved characters survive as a single payload string.

A five-minute pre-publish test

  1. Scan on two phones
  2. Confirm the exact URL or Wi-Fi SSID
  3. View at final printed or projected size
  4. Re-test after any color, size, or text change

Related learning

For a structured walkthrough—payload formats, PNG print notes, and a full checklist—see the QR Code course.

Bottom line

M is the sensible default. Move to Q/H when the physical world will damage or shrink the symbol; move to L when the payload is long. Always validate with a real scan—not only a crisp preview on your laptop.

Related tools

Use the tools from this article

QR Code Generatorqr code / generator / urlURL Encoder / Decoderurl / uri / encode

Learn the format

QR Code CourseLearn how QR codes work: error correction, URL and Wi-Fi payloads, PNG output, and a pre-publish testing workflow.

Back to articles