# Why you should print QR codes from SVG

> An SVG QR code is a set of exact rectangles, and the print RIP renders them at the device's native resolution with no interpolation. A raster PNG placed at the wrong size gets resampled instead: module edges become grey ramps, ink spread finishes them off, and the printed code fails.

Source: https://useqr.app/docs/print/why-you-should-print-qr-codes-from-svg · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## What vector means for a QR code

A QR code is a matrix of dark and light squares, the most vector-friendly artwork in
existence. A proper [SVG](/glossary/svg) export writes each dark module as an exact
rectangle in a single path (the mechanics are in
[QR code SVG path structure](/docs/spec/qr-code-svg-path-structure)), so the file *is*
the matrix. Scale it to any size and every edge stays mathematically sharp, because a
[vector graphic](/glossary/vector-graphic) has no pixels to run out of. UseQR's SVG is
generated directly from the module matrix, not traced from an image, tracing produces
wobbly pseudo-rectangles that defeat the purpose.

## The resample-blur failure chain

Here is how a code that looked perfect on screen dies in print, step by step:

1. A designer downloads a **240 × 240 px PNG**, plenty for a web page.
2. It is placed in the layout at **6 cm wide**: effective resolution ≈ **102 dpi**.
3. The version 5 code has 37 modules, so each module is about 6.5 px in the file.
4. The export or the printer's RIP resamples it to the device resolution (a 6×
   enlargement at 600 dpi), by interpolation. Each hard module edge becomes a band of
   grey pixels roughly a third of a module wide on either side.
5. On press, [ink spread](/docs/print/ink-spread-and-dot-gain-in-qr-codes) darkens those
   grey ramps unevenly. Module boundaries wander; narrow white gaps between modules
   close.
6. The printed code fails from any real distance, while the PDF on screen, viewed at
   fit-to-width, still looks crisp. That mismatch is the classic
   [blurry-when-printed](/docs/troubleshooting/qr-code-blurry-when-printed) and
   [pixelated-when-enlarged](/docs/troubleshooting/qr-code-pixelated-when-enlarged)
   ticket.

Every step is individually reasonable. The chain is the problem, and SVG deletes the
chain, because there is nothing to resample.

## Format choice at a glance

| Format | Scales losslessly | Module edges | For print |
|---|---|---|---|
| SVG | yes | exact | yes, or convert to PDF |
| PDF (vector) | yes | exact | yes, the print-shop standard |
| PNG | no | exact at native size only | acceptable at final size × 300 dpi |
| JPEG | no | ringing artefacts | never |

The wider comparison lives in
[QR code file formats compared](/docs/spec/qr-code-file-formats-compared).

## Through the pipeline without losing it

- **Place the SVG (or vector PDF) at final size** in the layout; do not embed a raster
  preview of it.
- **Export as PDF with vector content preserved**: avoid "flatten" or "rasterise
  effects" options that quietly convert the page to an image.
- Print shops universally accept vector PDF; the RIP renders the modules at the device's
  native resolution, which is the end state you want. DPI stops being your problem, as
  the [DPI guide](/docs/print/qr-code-dpi-for-printing) explains.
- Keep the code 100% K if the job is CMYK, and check size against distance with the
  [size calculator](/size-calculator).

Then close the loop: [decode-verify the final artwork](/validate) and scan a printed
proof. Vector removes the resampling failure; it does not exempt you from the
[pre-press checklist](/docs/print/qr-code-print-checklist).

## FAQ

### Why is SVG better than PNG for printing QR codes?
An SVG stores the modules as exact rectangles that the printer's RIP renders sharply at any size. A PNG has fixed pixels, so placing it at a different size forces interpolation that blurs module edges, the main cause of print-only scan failures.

### Can I send an SVG QR code straight to a print shop?
Most shops prefer PDF. Export the SVG to a vector PDF (placed at final size, without flattening or rasterising), and the module edges survive to the press untouched.

### My QR code looks sharp on screen but prints blurry: why?
Almost always the resample chain: a small PNG placed large, then interpolated up by the export or RIP. Screens hide the grey edge ramps that ink spread then turns into failures. Replace the raster with vector artwork at final size.

### Is a PDF QR code the same as an SVG one?
When both are genuinely vector, yes, the same rectangles in different containers. A PDF that merely embeds a raster image inherits every raster limitation, so check that the code was exported as vector, not screenshotted into the page.

## Try it

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