> ## Documentation Index
> Fetch the complete documentation index at: https://docs.utmkit.co/llms.txt
> Use this file to discover all available pages before exploring further.

# QR codes

> Every short link has a QR code you can preview, size and download, and the code keeps working when the destination changes.

Every short link in your workspace has a QR code. The code holds the short link and nothing
else — not the destination, not the UTMs — which is what lets you change where the link goes
after the posters are printed. Anyone in the workspace can open and download a code; nothing is
metered for it.

## Opening a code

Open [Links](https://app.utmkit.co/links) and press **QR** on the link's row. When the
assistant creates a link in the [chat](https://app.utmkit.co/chat), the link card has the same
button.

The panel shows the code before you download anything, plus the exact address it encodes, the
domain and the slug — so you can read what you are about to commit to paper.

<Tip>
  Edit the destination or the UTMs as often as you like: the printed code is unchanged and keeps
  resolving to wherever the link points now. See [Edit and withdraw](/en/links/edit-and-withdraw).
</Tip>

## Size and background

* **Size** sets the pixels of the PNG. The sizes offered depend on the link: a longer address
  makes a denser grid, and a size where the squares would be too small for a phone camera to
  resolve on paper is not offered. The largest size is always available.
* **Transparent background** removes the white behind the code. The panel then says which
  surfaces it can be printed on — light, dark, or both — because a code with no background
  of its own depends on the paper.

What you see in the preview is what you download, in both formats.

## Downloads

* **Download SVG** — for a designer or a print shop. It scales to any size without losing
  sharpness; the size you pick only sets the dimensions written in the file.
* **Download PNG** — at the size you chose, for anything else.

Both files carry the same design and decode to the same address. If your organization has
[designs](/en/qr-codes/designs), the code comes out in the one your workspace uses without you
choosing anything.

## Before you print

The panel warns you, before any download, when the link is not currently resolving, and which
of three reasons it is: not yet confirmed at the edge (usually moments; the code will work once
it propagates), withdrawn by abuse screening, or [expired](/en/links/expiry). A code for a
withdrawn, expired or deleted link scans fine and leads nowhere.

## Codes the console refuses

The console never hands out a code it cannot show will scan. Each refusal appears next to the
setting that caused it and names what would work:

* **Not enough contrast** between the dots and the background. The console states the ratio
  it measured and the one a reader needs.
* **A logo covering too much of the code.** A code can lose part of itself and still be read,
  but a logo spends that budget, and the console keeps half of it for the real world — ink
  spread, a fold, a phone held at an angle.
* **A logo over the squares a reader uses to find and orient the code.** Error correction
  does not protect those; covering them removes the code rather than damaging it. The room
  depends on the link's length, and the console says the most a logo may cover for this code.
* **A transparent code whose colours would not read on light or dark paper.**

The same check runs when a design is saved and again every time a code is rendered, so a
design that passed cannot later produce a file that fails.

## Counting

A scan is counted apart from an ordinary click, so you can tell what the poster did and what
the email did. See [Scans vs clicks](/en/qr-codes/scans-vs-clicks).
