QR codes embed redundancy so they still decode when some cells are unreadable — dirty, smudged, covered by a logo. The redundancy budget is picked at encode time: four levels from L (7% recoverable) to H (30% recoverable). Here's when to pick which.
The four levels
- L — Low: 7% recovery. Maximum data capacity. Fine for clean digital display.
- M — Medium: 15% recovery. The default for most uses. Pragmatic choice for links in emails, slides, or web pages.
- Q — Quartile: 25% recovery. Good for printed media at small sizes or codes that might get partially dirty.
- H — High: 30% recovery. For embedded logos, wear-exposed surfaces (restaurant tables, storefront windows), or anywhere robustness matters.
The tradeoff
Higher correction means more redundant dots, which means fewer dots available for actual data at the same code size. Going from level L to level H reduces data capacity by roughly 50% — the extra bytes go to parity instead. That's why high- correction QRs with long URLs look busier: they need more cells to fit the data plus the redundancy.
The logo math
A centered logo typically covers 10–20% of the code area. At level H (30% recoverable) you have headroom. At level M (15%) you're cutting it close. At level L, a logo will often break the scan. Rule of thumb: always use H for codes with embedded branding. The slight density increase is invisible to most users.
When smaller is OK
For a short URL encoded at level M, you end up with a ~29×29 code that scans reliably down to about 1 inch printed. For the same URL at level H, you need a ~33×33 code and should aim for 1.25 inches minimum. If space is tight, pick M and save a few millimeters. If durability matters, use H.
L, M, Q, H selector. PNG + SVG download. Preview updates live as you change settings.

