SVG vs PNG vs PDF vs EPS: Which QR Code File Goes Where
by KoloQR TeamBasics

Download SVG for anything that will be printed, resized or edited, and PNG for anything that will be shown on a screen. That one split settles most cases: SVG stores the code as geometry and scales without a ceiling, PNG is fixed at the pixels it was exported with. PDF is the file a print shop or a document layout expects, and EPS exists for older production workflows that still ask for PostScript artwork.
Key points
- SVG for print, design work and anything that might be resized later. PNG for screens, email, slides and social. Those two cover the large majority of QR code exports.
- PDF and EPS are handoff formats, not working formats. Send one when a print shop, a production department or a document layout asks for it by name.
- File format does not change what a QR code encodes. The same URL is in the SVG, the PNG, the PDF and the EPS - the format only decides how well the module edges survive the trip to paper or screen.
- Never send a QR code as JPEG. JPEG compression adds ringing around exactly the hard black-and-white edges a QR code is made of, and the damage cannot be undone afterwards.
- A raster QR code cannot be converted into a real vector one by renaming it. Regenerate the code from its destination instead - it takes less time than any repair and the result is mathematically clean.
SVG or PNG: which one should you download?
Choose SVG if the code will be printed, placed in a design file, or resized by anyone at any point. Choose PNG if the code will be displayed on a screen at a size you already know. A QR code on a poster, a menu, a label or a business card is an SVG job; a QR code in an email, a slide, a web page or an Instagram post is a PNG job.
The reason is what each file stores. A vector file is an image stored as shapes and coordinates rather than pixels, so it can be redrawn at any size without losing edge definition. A raster file is an image stored as a fixed grid of pixels, so enlarging it past its exported size softens every edge. A QR code is read by a camera that has to tell dark modules from light ones, and soft edges are the one defect that narrows a decoder's margin for error.
When the answer is genuinely unclear, download both. The two files are the same code, they take a second each to export, and having the SVG on hand is what prevents the common failure a year later: a poster that needs the code at 30 cm when the only file left is a 600-pixel PNG from an email thread.
What the four formats are, in one sentence each
SVG is a vector image format written as plain XML text, which is why an SVG QR code opens in any browser, edits in any design tool, and scales without a resolution ceiling. PNG is a lossless raster format with transparency support, which is why it reproduces a QR code's hard edges exactly at the size it was exported. PDF is a page format that can hold either vector or raster content, which is why a PDF QR code has to be inspected rather than assumed. EPS is a vector format based on PostScript, kept alive by print and production workflows that predate PDF.
| Format | Type | Resizes without loss | Opens in | Use it for |
|---|---|---|---|---|
| SVG | Vector | Yes | Browsers, Illustrator, Figma, Inkscape, Affinity | Print, design files, anything that may be resized |
| PNG | Raster, lossless | No | Everything | Screens, email, slides, social, print at a fixed known size |
| Page format, vector or raster | Only if its content is vector | Everything | Print-shop handoff, document layouts, sending a proof | |
| EPS | Vector | Yes | Illustrator, older RIPs and production software | Legacy print workflows that ask for EPS by name |
| JPEG | Raster, lossy | No | Everything | Nothing - compression artefacts damage module edges |
Note the third row. PDF is the only one of the four whose name does not tell you what is inside it: a PDF can hold clean vector artwork or a photograph of a screen, and both look identical in a file listing. That single ambiguity causes more print problems than the other three formats combined.
Which file goes where
| Where the code is going | Send | Why |
|---|---|---|
| Poster, banner, window decal | SVG or PDF | The size usually changes at least once before printing |
| Business card, flyer, packaging | SVG | The designer places it in a layout and scales it to fit |
| Restaurant menu or table tent | SVG | Reprinted at different sizes across table, bar and window |
| Print shop that asked for artwork | PDF, or SVG if they accept it | PDF is the format most shops name in their upload form |
| Old production system or RIP | EPS | Some pre-PDF workflows accept nothing else |
| Web page or online store | SVG or PNG | SVG stays sharp on every display; PNG is simpler to drop in |
| Email signature or newsletter | PNG | Email clients block SVG, so a raster image is the only reliable option |
| Instagram, LinkedIn, TikTok, YouTube | PNG | Social platforms accept raster uploads only |
| Slide deck or PDF report | PNG at 2x the displayed size, or SVG | Office apps take both; PNG avoids per-app SVG quirks |
| Figma, Illustrator or Canva file | SVG | It arrives as editable vector layers rather than a flat picture |
| Laser engraving, vinyl cutting, embroidery | SVG or EPS | The machine follows paths, so it needs geometry rather than pixels |
| Thermal receipt or label printer | PNG sized to the printer's dots | These printers are raster devices with a fixed dot pitch |
Two rows on this table are worth reading as a pair. A print shop asking for PDF and an engraver asking for SVG want the same thing - geometry the machine can redraw - and they name different formats only because their software chains differ. If a supplier names a format you cannot produce, ask whether they accept SVG; most modern production software does.
What a KoloQR export actually contains
KoloQR, a free QR code generator with circular and custom-shaped QR codes, exports PNG, SVG, PDF and EPS from the same download menu, and copies the SVG markup straight to the clipboard for Figma. The four files are built differently, and the differences decide which one is right for a job.
- SVG: true vector, with the code's parts on named layers and any curved label text converted to outlines, so no font has to be installed anywhere downstream. There is no watermark and no size cap.
- PNG: rendered at 40 pixels per module. A typical short-URL code is 41 modules wide including its quiet zone, which lands at about 1,640 pixels - enough for roughly 14 cm at 300 DPI. The background is whatever colour the design uses, and the area outside a non-square frame is transparent.
- PDF: a single page sized to the code itself at one point per 10 units of geometry, holding the code as a lossless image at 80 pixels per module. That works out at 576 DPI at the page's native size, so it stays above 300 DPI up to roughly 1.9x enlargement - about 28 cm for a code that opens at 15 cm.
- EPS: a real vector conversion, written as PostScript Level 2 paths in RGB. Every module, frame and outlined label becomes a filled path, which is why the file scales like the SVG rather than like the PDF.
- Copy to Figma: the same SVG markup, placed on the clipboard instead of downloaded. Paste lands editable vector layers on the canvas, covered in the guide to copying a QR code into Figma.
Two honest limits follow from that list. The KoloQR PDF is a high-resolution image on a PDF page rather than vector geometry, so a job that will be scaled far beyond A4 should be sent as SVG or EPS instead. And the EPS conversion reads shapes, not embedded pictures: a logo uploaded as your own image file is dropped from the EPS, while the built-in brand logos are vector paths and survive. Check the EPS before sending it if the code carries an uploaded logo.
Everything else about the code is identical across the four files. The payload, the symbol version, the error correction level and the quiet zone are decided when the code is generated, not when it is exported, so no format choice can make an unscannable code scan or a scannable one fail on its own.
SVG: the file to keep, and usually the file to send
Treat the SVG as the master copy of a QR code. It has no resolution, so it prints at 2 cm or 2 m from the same file; it is plain text, so it stays small and survives being emailed and versioned; and it opens in every design tool, so a colleague can place it without asking for a re-export.
SVG also keeps the code editable in the correct sense. The modules stay individual shapes, which means a designer can recolour the code or change its background inside Illustrator or Figma without touching the module grid. What a designer must not do is nudge, stretch non-proportionally, or delete parts of that grid - the arrangement of modules is the data, and rearranging it changes what the code says.
Where SVG gets refused is worth knowing in advance:
- Email: mail clients strip or block SVG for security reasons, so a code in an email body has to be a PNG.
- Social platforms: Instagram, LinkedIn, X, TikTok and YouTube accept raster uploads only.
- Some website builders and template tools: SVG upload is sometimes restricted to paid plans or blocked outright. Canva is the one people hit most often.
- Older office documents: SVG support in Word and PowerPoint is fine on current versions and unreliable on much older ones, so a PNG is the safer attachment when you do not know what the recipient runs.
None of those are reasons to skip the SVG export. They are reasons to keep the SVG as the archive file and export a PNG from it whenever a platform will not take vector.
PNG: right for screens, bounded for print
PNG is the correct choice whenever the display size is known and fixed. It is lossless, so every module edge is reproduced exactly as exported, and it is accepted everywhere, which is the practical reason it remains the default download on most QR generators including KoloQR.
Its limit is arithmetic rather than opinion. A raster QR code prints cleanly up to roughly pixel width divided by 300, times 2.54 centimetres. A 1,000-pixel PNG reaches about 8.5 cm; a 1,640-pixel KoloQR export reaches about 14 cm; past that the module edges begin to spread. The full formula, including the large-format case where 150 DPI is enough, is in the guide to QR code resolution.
For screens, aim for at least 4 CSS pixels per module and export at twice the displayed size so the code stays sharp on high-density displays. A typical short-URL code at 41 modules wants roughly 165 pixels displayed and 330 pixels exported. Sizing below that is where on-screen codes start failing when someone scans them from a phone held at an angle.
The transparency setting deserves a deliberate decision rather than a default. A transparent PNG dropped onto a dark or patterned background loses its quiet zone, and a scanner that cannot find the boundary of the symbol will not decode it. Export on solid white unless you know the code will sit on a light, flat surface.
PDF: what a print shop means when it asks for one
A print shop asking for PDF is asking for a file its workflow can place, proof and impose - not making a claim about vectors. Because a PDF page can hold vector artwork or a raster image, the format alone guarantees nothing about how far the code can be scaled.
Check before sending. Open the PDF and zoom to 1,600%: vector artwork stays perfectly hard-edged at any zoom, while a raster image inside a PDF turns into visible squares. That thirty-second test tells you whether the file can be enlarged for a banner or is fixed near the size it was made at.
If the code needs to be truly resolution-free in a PDF, build the PDF from the SVG rather than exporting one:
- Download the SVG. Export the code as SVG rather than PNG or PDF - the SVG is the file that holds the geometry.
- Open it in a vector editor. Illustrator, Inkscape, Affinity Designer and Figma all open SVG directly. Inkscape is free and is enough for this job.
- Set the document size. Set the artboard or document to the final printed size in millimetres, then scale the code proportionally to fill it, including the quiet zone.
- Save or export as PDF. Use Save As PDF in Illustrator or Inkscape, or Export as PDF in Figma and Affinity. Keep any option that preserves vector data and do not rasterize.
- Verify the result. Reopen the PDF and zoom to 1,600%. If the module edges are still hard, the file is vector.
- Scan the printed proof. Print one page at final size and scan it with an iPhone and an Android phone before the file goes to the run.
A second use of PDF has nothing to do with print: the code inside a document you are sending, such as an invoice, a ticket or an event pack. A QR code placed in a PDF document scans perfectly well from a screen, which is why boarding passes work that way - but keep it at 2 cm or larger on the page, because readers will scan it from a laptop screen at arm's length.
EPS: a legacy format with two live uses
Export EPS when a supplier asks for it by name, and not otherwise. Adobe has treated PDF and AI as the successors to EPS for years, and most current software handles SVG or PDF better - but screen printers, embroiderers, sign makers and older prepress systems still list EPS as their required format, and those requests are real.
Two EPS properties change how you use it. EPS does not support live transparency, so any transparent area is flattened when the file is written - a reason to export a code on a solid background rather than expecting the paper colour to show through. And EPS carries colour as RGB in most exports, including the one KoloQR writes, so a printer running CMYK will convert it. For a pure black code that conversion is uneventful; for a brand colour, ask the printer for the CMYK build you want rather than letting the conversion decide.
The trap specific to QR codes is what does not survive the conversion. Because EPS is written from the shapes in the artwork, anything that is an embedded picture rather than a shape - most commonly a logo you uploaded as your own PNG - is skipped. The code itself is unaffected and still scans; the logo simply is not there. Open the EPS once before sending it and you will see the difference immediately.
Formats that damage a QR code: JPEG, WebP and the screenshot
Never save or send a QR code as JPEG. JPEG compresses by discarding high-frequency detail, and a QR code is almost nothing but high-frequency detail: thousands of abrupt black-to-white transitions. The result is faint ringing around every module, which survives into print and reduces contrast exactly where the decoder measures it.
The failure is quiet rather than obvious. A JPEG-damaged code usually still scans on a bright screen and then stops working on absorbent paper, in dim light, or at an angle - which is precisely the situation a printed run meets. Because the artefacts are baked into the pixels, re-saving that file as PNG later does not repair anything.
| Format | Verdict for QR codes | What actually goes wrong |
|---|---|---|
| JPEG / JPG | Avoid | Lossy compression puts ringing artefacts on every module edge |
| WebP | Avoid for handoff | Fine visually in lossless mode, but print tools and many uploaders reject it |
| GIF | Avoid | 256-colour palette and heavy dithering on any non-flat background |
| BMP / TIFF | Works, rarely needed | Lossless but large; PNG does the same job at a fraction of the size |
| Screenshot of a code | Avoid | Captures at screen resolution, often re-compressed, and usually crops the quiet zone |
| Photo of a printed code | Avoid | Perspective, glare and paper texture, on top of JPEG compression |
The screenshot row is the one that reaches print most often. A code screenshotted from a preview, pasted into a document and sent to a printer arrives at roughly 100 DPI with its margin clipped, and the printer has no way to tell that a better file existed. Regenerating the code takes less time than the email asking whether the screenshot will do.
How to tell which kind of file you have been sent
The extension is a claim, not a guarantee. When a code arrives from a client, an agency or an old archive, four checks settle what it really is in about a minute.
- Open the SVG in a browser and zoom to 1,000%. A real vector stays hard-edged. If it turns into squares, the SVG is a raster image wrapped in an SVG tag - which is a real thing some converters produce.
- Check the file size. A vector QR code is usually a few kilobytes to a few tens of kilobytes. A multi-megabyte SVG or EPS almost always contains an embedded bitmap.
- Zoom the PDF to 1,600%. Same test, same tell: vector stays crisp, raster pixelates.
- Look for the quiet zone. Whatever the format, there must be a clear margin of four modules on all four sides. A tightly cropped file has already lost something no format can restore.
If any check fails, regenerate the code rather than repairing the file. Scan the existing code with a phone to read its destination, paste that destination into a generator, and export fresh files. The new code is mathematically clean, and you have also verified where the old one actually points - worth knowing before reprinting anything.
Converting between formats without breaking the code
Converting down is safe and converting up is not. Vector to raster - SVG to PNG, EPS to PNG - is a clean operation at any size you choose. Raster to vector - PNG to SVG - cannot recover geometry that was never in the file, and an automatic trace produces slightly rounded, slightly misaligned modules that eat into the decoder's margin.
| Conversion | Safe? | How to do it |
|---|---|---|
| SVG to PNG | Yes | Export from the generator at the size you need, or open the SVG in a design tool and export |
| SVG to PDF or EPS | Yes | Save As or Export from Illustrator, Inkscape, Affinity or Figma |
| PNG to SVG | No | Regenerate the code from its destination URL instead of tracing it |
| PDF to SVG | Only if the PDF is vector | Open in Inkscape or Illustrator and save as SVG; check the zoom test first |
| PNG to PDF | Yes, with limits | The result is still capped by the PNG's pixel count, so keep it at or below its print ceiling |
| Anything to JPEG | No | There is no reason to and the damage is irreversible |
If a raster code truly cannot be regenerated - the original file is gone and the client wants it larger - upscale by a whole-number factor with nearest-neighbour interpolation rather than bicubic or AI upscaling. Nearest-neighbour duplicates pixels and keeps the edges hard; smoothing algorithms blur exactly the boundaries a scanner measures.
Whichever route you take, scan the result before it ships. A converted code that scans on an iPhone and an Android phone, printed at final size on the real stock, is a converted code that works; anything less is an assumption.
Common file-format mistakes, and how they show up
| What happened | Where it shows up | The fix |
|---|---|---|
| A PNG sent to a large-format printer | Soft, grey-fringed modules on the banner | Send SVG or EPS for anything above roughly 30 cm |
| A transparent PNG placed on a dark background | Code looks fine on screen, will not scan | Re-export on solid white, or set a light background in the layout |
| A JPEG somewhere in the chain | Faint rings around modules, unreliable scans in poor light | Regenerate and export PNG or vector; the JPEG cannot be repaired |
| An SVG emailed to a client | Blocked attachment, or a blank image in the mail body | Attach a PNG for viewing and send the SVG via a file link |
| An EPS with an uploaded logo | The code prints correctly, the logo is missing | Send SVG or PDF instead, or use a built-in vector logo |
| A code cropped to remove white space | Intermittent failures at every size | Restore four modules of quiet zone on all sides |
The pattern across these rows is that format problems rarely announce themselves. The code looks right on the screen where it was made, and fails on the material where it lives - which is why the last step of any format decision is a printed proof scanned in the light the code will actually be read in.
Choosing the format before the design starts avoids most of the list. If the code will be printed, generate it, export the SVG, and hand that file to whoever builds the layout. The generator produces all four formats from the same code, so the decision costs nothing but attention. Format is settled at the fourth of nine checks; the print checklist runs through the rest in order.
Make Your QR Code
Free, with no account and no watermark. Choose a shape, add a logo, check the contrast, and export SVG, PDF, EPS or PNG - a static code with no subscription behind it.
Generate QR CodeQuestions? Answered
SVG for anything printed or resized, PNG for anything shown on a screen. SVG stores the code as geometry, so it scales to any size with mathematically exact edges and no resolution ceiling. PNG is fixed at its exported pixel dimensions, which is what a screen wants and what a print job eventually outgrows. When unsure, download both.
Yes, up to a size the pixel count decides. A raster code prints cleanly to about pixel width divided by 300, times 2.54 centimetres - roughly 8.5 cm for a 1,000-pixel file and 14 cm for a 1,640-pixel one. Business cards, flyers and menus are comfortably inside that. Posters, banners and window decals are not.
It depends on the tool that made it, which is why PDF has to be checked rather than trusted. Zoom to 1,600% in any PDF viewer: vector artwork stays hard-edged, a raster image pixelates. The KoloQR PDF is a lossless image at 576 DPI on a page sized to the code, so it holds 300 DPI up to about 1.9x its opening size; beyond that, send the SVG or EPS.
Only indirectly. The payload, symbol version, error correction level and quiet zone are fixed when the code is generated, and every format carries the same data. What format changes is edge quality: a lossy or under-resolution file softens module boundaries, which narrows the decoder's margin in poor light or at an angle.
Most mail clients strip or block SVG because it can contain scripts, so an SVG in an email body often renders as nothing at all. Use PNG for anything that has to appear inside an email, and share the SVG as a file link or a zipped attachment when a designer needs the vector.
Not usefully. Tracing a PNG produces approximate shapes with rounded corners and slight misalignment, which is exactly the defect that costs a decoder margin. Regenerate instead: scan the existing code to read its destination, paste that into a generator, and export a fresh SVG. It takes less time than tracing and the result is exact.
SVG in all three, because it arrives as editable vector shapes rather than a flat picture. Figma and Illustrator take SVG directly; Canva restricts SVG upload on some plans, in which case upload a PNG exported at two to three times the size it will be used at. In Figma, pasting the copied SVG markup is faster than importing a file.
Only if a supplier asks for it. Screen printers, embroiderers, sign makers and older prepress systems still specify EPS, and for them it is the right file. Everyone else is better served by SVG or PDF. Note that EPS flattens transparency and is usually written in RGB, so a printer running CMYK will convert the colours.
Because EPS is written from the shapes in the artwork, and a logo you uploaded as your own image file is an embedded picture rather than a shape. The code itself converts and scans normally; only the uploaded logo is dropped. Send the SVG or the PDF instead, or use one of the built-in vector logos, which are paths and survive the conversion.
Usually not. A transparent quiet zone is not a white quiet zone: on a dark or patterned background the margin disappears and the scanner loses the symbol's boundary. Export on solid white unless you have confirmed the code will sit on a light, flat surface, and check the placed layout rather than the file preview.
SVG, or EPS if the shop asks for it. Screen printing, vinyl cutting, laser engraving and embroidery all drive machines that follow paths, so they need geometry rather than pixels. Confirm the minimum feature size the machine can hold, keep the module above it with margin, and test a physical sample - stitched and engraved codes lose contrast rather than sharpness.
Keep Exploring
Pages that pick up where this one leaves off - the same setting, the same kind of code, or the next thing worth deciding.
QR Code Shapes
The whole shape taxonomy - modules, eyes and frames - with the trade-offs behind round, triangle, hexagon and square codes.
Colored QR Codes
Put your palette on a QR code without breaking it: which color goes on the pattern, and which belongs on the frame.
QR Code Error Correction: How L, M, Q and H Actually Work
What each error correction level recovers, how much data it costs, how large a logo it allows, and why raising the level can make a printed code harder to scan.
How to Copy a QR Code Into Figma as Editable Vectors
The clipboard SVG route into Figma, what the pasted layers actually contain, which edits keep the code scannable, and how the workflow compares with a Figma plugin.
Why a QR Code Is Not Scanning, and How to Tell Which Fault You Have
The three ways a QR code fails - never detected, read badly, or read perfectly into a broken destination - and how the symptom tells you which one you have before you measure anything.
Matte or Gloss: How the Finish Decides Whether a Printed QR Code Scans
Why gloss fails under a downlight and matte does not, the finish to specify for each print job, what coated and uncoated stock do to the modules, and the CMYK build to hand a printer.
Why KoloQR?
- Create QR codes for websites, menus, Wi-Fi, PDFs, and business cards
- Customize colors, logos, and unique shapes
- Download high-quality PNG and SVG files
- Built for both print and digital

