QR codes
Every link has a QR code. How to customise it, which format to download, and how scans are counted.
Reviewed 24 Oct 2026
You already have them
There is nothing to generate. Every link you create carries a QR code from the moment it exists, on every plan. The QR Codes page shows one code per link, and every link's record has a QR tab: open the link and switch to QR.
PNG or SVG?
| Format | Use for | Why |
|---|---|---|
| PNG | Slides, social posts, email, anything on screen | Fixed size, works everywhere, no design tool needed. |
| SVG | Print: posters, packaging, signage, vehicle livery | Vector, so it stays sharp at any size. Give this to a printer or designer. |
For print, send the SVG
Customising the look
Open a code on the QR Codes page, or open a link and switch to its QR tab. Download PNG or SVG sits under the preview; PNG size is 200, 400 or 800 pixels. Under Look, choose Default look or Custom for this link. Custom sets the foreground and background colours and the error-correction level. On Starter and above it also puts your logo in the middle. The default look is the workspace's, set from Default look on the QR codes page; until an admin sets one it is black on white.
A custom look is saved with the link, so every thumbnail and download of that code uses it from then on. Switch back to Default look and the code follows the workspace's default again. That default is set from Default look in the QR codes header by a workspace admin, and every code without a look of its own follows it, including new links. The logo is not saved: it shows in the preview and is composited into the download you take at the time.
Contrast is not a style choice
Error correction and logos
Error correction is how much of the code can be obscured and still be readable, whether by a logo, a scratch, a fold or a bad print run. Higher levels survive more damage but pack more squares into the same area, so each square gets smaller.
- No logo, screen use: a lower level is fine and gives a cleaner-looking code.
- No logo, but going to print: pick a high level yourself. A fold, a scuff, or a soft print run all eat into the same headroom.
- Logo in the middle: nothing to pick. A logo takes the code to the highest level on its own and whatever you selected is ignored, because the logo is deliberate damage the code has to absorb.
Logo files are PNG, JPEG, GIF, or WebP up to 200 KB. SVG logos are not accepted: rasterising an uploaded SVG is a security risk we choose not to take, so export your mark to PNG first. A logo can only be applied to a PNG download: SVG output is unavailable while a logo is selected. Remove the logo to get SVG back.
How scans are counted
Codes downloaded from ShortZen carry a marker that identifies the click as a scan. A scan counts as a click and is also reported on its own, so you can see print and digital performance side by side on the Analytics page.
Generate the code from ShortZen, not from a third-party tool
Taking several codes at once
Tick the codes you want, or select every code on the page, and the bulk bar downloads them as a .zip of PNG or SVG files. There is one file per link, named after its slug; a PNG comes at the largest size, enough for print. Every code in it carries the scan marker, so a sheet exported this way is attributed exactly like a code you took one at a time.
Each code in the bundle uses its saved look: its own, or the workspace default. Logos are not included: add a logo in a code's QR tab and download that code on its own.
Step by step
Produce a QR code that is safe to send to a printer
Before you start
- The link the code should point at, already created and working.
- Your logo as PNG, JPEG, GIF, or WebP under 200 KB, if you want one in the middle. SVG logo files are not accepted.
Steps
Confirm the link works and its destination is final.
The destination is safe to change later; the slug is not. Once the code is printed, the address inside it is fixed forever.
Open the link and switch to its QR tab.
Under Look, choose Custom for this link.
Set the foreground to a dark colour and the background to a light one.
The preview updates as you go.
Set error correction to a high level.
This is the step for a code with no logo: print is unforgiving. If you are adding a logo at the next step, whatever you pick here is replaced by the highest level anyway.
If you want a logo, drop the file into the logo area.
It appears in the preview, and SVG download becomes unavailable.
Download SVG if you have no logo, or PNG at 800 pixels if you do.
Print a test at the real final size and scan it with two different phones.
One iPhone and one Android, in ordinary indoor light. This is the step that catches problems while they are still free to fix.
What you should see
A file your printer can use, which scans reliably at its intended size and sends people to a link whose destination you can still change afterwards.
How to check it worked
- Two different phones scan the printed test on the first attempt, from the distance a real person would stand at.
- The scan lands on the correct destination.
- The scan appears in the QR scans figure on the Analytics page, not just in total clicks.
Edge cases
- The code will be printed very small, on a bottle neck or a business card.
- Drop the logo and keep the code as simple as possible. Every element you add costs you readable size.
- The code goes on a dark background as part of the design.
- Set the background colour explicitly rather than relying on transparency, and test it. Inverted codes are much less reliably scanned.
- You need the artwork in a format we do not produce.
- Send the SVG to your designer. It is a standard vector file and converts to anything.
If something goes wrong
- Your logo file is refused when you drop it in.
- Check the format and the size: PNG, JPEG, GIF, or WebP, under 200 KB. An SVG logo is refused whatever its size: export it to PNG at roughly the size it will appear in the code.
- The printed code will not scan.
- In order: increase the size, increase the contrast, raise error correction, remove the logo. One of those four fixes almost every failing code.
- It is already printed and the destination is wrong.
- Edit the link's destination. The printed code encodes the short address, not the destination. This is exactly the situation short links exist for.
- Scans are showing up as ordinary clicks.
- The code was generated somewhere other than ShortZen. Regenerate it here for future print runs; existing scans cannot be reclassified.