# Recommended error correction level by use case

> Use level M for most printed material and screens, Q for outdoor signage and anything handled or laminated, H whenever a logo covers part of the code, and L only when a dense payload needs the smallest possible symbol. The levels tolerate roughly 7%, 15%, 25% and 30% damage respectively.

Source: https://useqr.app/docs/reference/recommended-ec-level-by-use-case-table · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The table

Unlike the [capacity](/docs/reference/qr-code-capacity-table) and
[error-correction codeword](/docs/reference/error-correction-capacity-table) tables, this one
is judgement, not specification — our recommendations, with the reasoning attached.

| Use case | Level | Why |
|---|---|---|
| On-screen only ([email signatures](/qr-codes-on/email-signatures), [slide decks](/qr-codes-on/slide-decks), [websites](/qr-codes-on/websites)) | **L–M** | Screens do not get scratched or dirty; damage tolerance buys nothing, small symbols help |
| Dense payloads ([vCards](/vcard-qr-code), long URLs) | **L–M** | Higher levels push the version up and shrink modules — often the difference between scanning and not |
| General print ([flyers](/qr-codes-on/flyers), [posters](/qr-codes-on/posters), [business cards](/qr-codes-on/business-cards)) | **M** | Covers minor print defects and wear at ~79% of level L capacity; the sensible default |
| [Menus](/qr-codes-on/menus) and laminated surfaces | **M–Q** | Handling, spills and glare add real damage over time |
| Payments ([UPI](/upi-qr-code), [PIX](/pix-qr-code), [EPC](/epc-qr-code)) | **M–Q** | A failed scan at a till costs a sale; payloads are short so the capacity cost is painless |
| Any code with a logo | **H** | The logo *is* damage — a centre logo consumes 10–20% of your ~30% budget before the world adds more |
| Outdoor signage and [stickers](/qr-codes-on/stickers) | **Q–H** | UV fading, rain, grime and abrasion accumulate; see [outdoor durability](/docs/print/qr-codes-outdoors-durability) |
| Industrial and asset [labels](/qr-codes-on/labels) | **Q–H** | Scuffing, chemicals and thermal-print defects; short payloads leave room for it |
| [Engraved metal](/qr-codes-on/engraved-metal), [laser-cut wood](/qr-codes-on/laser-cut-wood), [embroidery](/qr-codes-on/embroidery) | **H** | Low-fidelity media distort module edges; treat the medium itself as damage |
| [WiFi cards](/wifi-card) and table cards | **M** | Indoor, short payload, occasional handling |

## The rule the table encodes

Pick the level the *environment* needs, never "the highest, to be safe". Error correction is
paid for in modules: a 200-character URL is version 7 at L but version 12 at H, and at the
same printed size those version-12 modules are **31% smaller** — often below the print floor.
The full trade-off is worked through in
[error correction levels explained](/docs/spec/error-correction-levels-explained), and the
exact redundancy behind each level is in the
[EC codeword table](/docs/reference/error-correction-capacity-table).

Two situations override the default:

- **Logo present → H.** Non-negotiable. UseQR's generator enforces this automatically:
  adding a logo without explicitly setting a level silently raises it to H.
- **Payload near a version boundary → check both.** Sometimes M and Q land on the same
  version, making Q free. The [size calculator](/size-calculator) shows the version each
  level produces for your payload.

## What no level protects

All four levels protect only the data region. The corner finder patterns, the
[quiet zone](/glossary/quiet-zone) and the timing lines are structural — cover any of them
and the code fails at H exactly as it fails at L. Placement rules matter more than the
level; when in doubt, [verify the finished artwork decodes](/validate).

## FAQ

### Which error correction level should I use for print?
M for most printed material. Move to Q when the surface will be handled, laminated or outdoors, and to H when a logo overlays the code. Stay at L–M for dense payloads like vCards.

### Should I always use the highest error correction level?
No. Level H needs roughly 2.3 times the capacity of L for the same data, forcing a higher version with smaller modules at the same printed size. For dense codes that makes scanning worse, not better.

### What error correction level for a QR code with a logo?
H, which tolerates about 30% damage. Keep the logo central and under about 20% of the code area so real-world wear still has budget left after the logo's deliberate damage.

### Does error correction level matter on screens?
Barely. Screens do not accumulate damage, so L or M is enough — and the smaller symbol renders more crisply at limited pixel sizes.

## Try it

- https://useqr.app/validate
- https://useqr.app/size-calculator
- https://useqr.app/url
