Technical foundations · Last checked October 29, 2026

QR Error Correction Without the Myths

QR error correction adds recovery information at the cost of payload capacity. Choose it for the design and environment, then test the result instead of treating its percentage as guaranteed visible-area damage tolerance.

Put the guidance into practice: open the related free tool. Examples use stated inputs and are not measured performance claims.

LevelApproximate codeword restoration rateDesign implication
L7%More payload capacity at a given version
M15%A common general-purpose choice
Q25%More recovery information
H30%Highest of these levels, lower payload capacity
DENSO rates concern total codewords, not a blanket percentage of the visible image that may be covered.

Recovery information occupies the same grid

A QR symbol contains more than the original message. It also contains structure and recovery information that help a reader reconstruct the data. Raising error correction dedicates more of the available symbol capacity to that recovery process.

At a fixed version, this leaves less room for the payload. If the message no longer fits, an automatic encoder may choose a larger version. The outside print dimensions can stay the same in a layout, but the modules then become smaller.

This is the core tradeoff: more recovery information is useful, yet a denser symbol can be harder to print and photograph at a small physical size. Choosing the highest level without considering density is not a complete print strategy.

Interpret the published percentages carefully

DENSO WAVE lists approximate restoration rates for the L, M, Q and H levels. The reference explains that those rates are expressed against total codewords. A codeword is part of the encoded data organization, not a simple rectangular area on the visible image.

The location and pattern of damage matter. A logo, scratch or obstruction can affect different parts of the structure. Covering critical features that help the reader locate the symbol is not equivalent to losing a convenient portion of data modules.

The percentages therefore belong in an explanation of the coding method, not a promise that any corresponding area may be removed. If a design tool advertises a logo allowance, treat that as the tool's tested design constraint rather than a universal property of every QR symbol.

A worked capacity comparison

DENSO's table gives version 1 a byte capacity of 17 at level L and 7 at level H. The difference is 10 bytes at that version. This is a comparison of published capacity rows, not a measurement of scan performance or an assertion that every visible character occupies one byte.

A message that fits version 1 at L may require a larger version at H. If its printed width stays fixed, the module width decreases. The print calculator can make that geometric change visible once the encoder's selected version is known.

For mixed text and international characters, count encoded bytes rather than assuming the character count matches capacity. Tidy QR uses UTF-8 byte encoding, so some characters occupy more than a single byte. The actual generated version is the relevant input for the final print plan.

Match the level to the project

A clean, undecorated code used in a controlled environment has different needs from a label exposed to wear. DENSO's guidance discusses the operating environment when choosing a level. That encourages a practical decision rather than a rule that every project must use the same setting.

A logo adds deliberate obstruction, so Tidy QR automatically uses H when its logo feature is enabled. The generator also checks the rendered image. Neither step removes the need to inspect a physical proof, particularly when the code will be small or placed on difficult material.

For EPC payment payloads, the applicable payment specification defines its own requirements. Tidy QR uses the required plain design and correction setting for that type rather than allowing decorative choices to override the payment format's constraints.

Separate error correction from other repairs

Error correction cannot fix a URL that was entered incorrectly. If the symbol faithfully encodes the wrong address, a successful decoder will return the wrong address. Content validation and readback are necessary before any discussion of damage tolerance.

It also cannot make an unavailable website respond or give a scanner support for an unfamiliar payload format. These are separate layers of the workflow. Diagnose the image, decoded content and destination independently when something fails.

A quiet-zone problem or severe lack of contrast can prevent the reader from finding the symbol in the first place. More recovery data is not a substitute for preserving the structural and optical conditions needed to detect the grid.

Test the actual combination

Keep the payload fixed while comparing design settings. Inspect whether the version changes, then compare the printed module size. If the code becomes denser, reserve more physical space rather than assuming the higher level makes every other constraint less important.

Decode the rendered image and compare its full payload. Then print the final design with its complete border and test it at the intended placement. The physical test should include the surface, finish and lighting that visitors will encounter.

Do not deliberately damage the only production sample to establish a supposed universal tolerance. A controlled test can reveal how that sample behaves, but it cannot stand in for every possible scratch or obstruction. Retain a clean reference version for troubleshooting.

Record the choice with the artwork

Save the selected level, actual version, payload and intended dimensions with the final file. This makes later changes reviewable. A new employee should not have to infer the correction level from the look of the pattern.

Recheck when the payload changes or a logo is added. The encoder may choose another grid, and the earlier physical proof may no longer represent the current artwork. Keep the dependency between content, correction and geometry explicit.

Use the capacity reference to understand what fits and the print calculator to understand the resulting geometry. Error correction is one part of that system, most useful when it is considered alongside the other constraints rather than treated as a guarantee on its own.

Keep claims tied to observed conditions

If a test sample still decodes after minor wear, record the observation without converting it into a broad damage guarantee. The particular affected modules and reader behavior matter. Another scratch in a different location may produce a different result.

Similarly, a failed styled sample does not prove that its correction level is defective. The reader may be struggling with contrast, a missing border or geometry before recovery information can help. Return to a plain version with the same payload and compare the stages of the workflow.

This keeps troubleshooting focused on evidence. Change a relevant input, observe the result and retain the successful configuration. Increasing the correction level repeatedly without checking density can make the symbol more crowded while leaving the actual source of failure unchanged.

Frequently asked questions

Does H guarantee a logo will scan?

No. It adds recovery information, but logo size, position, density, contrast and physical output still matter.

Can error correction repair the wrong URL?

No. It helps recover encoded data from some damage. It does not know which destination you intended.

Why does a higher level reduce capacity?

More space is used for recovery information within the same version, leaving less room for payload data.

Sources

Last checked: . Examples are illustrative inputs, not measured results.

  1. Error correction feature, DENSO WAVE. Checked 2026-10-29.
  2. QR Code versions and information capacity, DENSO WAVE. Checked 2026-10-29.
  3. Capacity table: versions 1 to 10, DENSO WAVE. Checked 2026-10-29.
  4. Implementation specifications, checked against source code, Tidy QR. Checked 2026-10-29.