---
title: "A logo in the middle of the code — without it stopping scanning — qr3.app"
description: "In the dashboard or via API: an image in the middle of the QR code, embedded in SVG and PNG with higher error correction. PDF and EPS stay unchanged, and already-printed codes keep working."
canonical: "https://qr3.app/cs/changelog/2026-09-code-logo-en/"
lang: "cs"
---

# A logo in the middle of the code — without it stopping scanning — qr3.app

> In the dashboard or via API: an image in the middle of the QR code, embedded in SVG and PNG with higher error correction. PDF and EPS stay unchanged, and already-printed codes keep working.

Canonical: <https://qr3.app/cs/changelog/2026-09-code-logo-en/>

2026-09 · Logo in the QR code

# A logo in the middle of the code — without it stopping scanning

23. září 2026

dashboard api print

A QR code on packaging rarely stands alone — there is almost always a brand
next to it. Until now, that logo had to sit beside the code. Now it can be
uploaded straight **into the middle of the code** itself.

### In the dashboard

A code’s detail page now has its own logo card:

- **Choose logo** opens the file picker (PNG, JPEG or WebP, up to 1 MB).

- Adding a first logo and removing one both show a warning with a mandatory
checkbox, because both change the code’s **module pattern** (see below) —
confirm it, then **Upload logo** or **Remove logo**.

- **Replacing** a logo needs no confirmation: only the image in the center
changes, the pattern stays the same.

Anyone with read-only access (the `viewer` role) sees the status and preview,
but none of the three actions — uploading, replacing and removing all require
a write role.

### What changes on the code

An uploaded logo is normalized to 512 × 512 px and embedded as **actual
pixels** into `qr.svg` and `qr.png` — not just a cleared area in the middle.
Both raise the error correction to `H` for it.

That has a consequence that matters for print: **adding or removing a logo
changes the code’s module pattern** (error correction `M` ↔ `H`). Replacing a
logo does not — error correction stays `H`, only the embedded pixels change.
In both cases, an already-printed code keeps working, since the encoded
destination does not depend on the logo — reprint only if you want the (new)
logo to show on the physical material, and never mix old and new print files.
**PDF and EPS never embed a logo** and keep their pattern unchanged; for
printing with a logo, SVG or PNG are the right choice.

### Via API

```
curl -X POST https://qr3.app/v1/codes/qr_a1b2c3d4/logo \
  -H "Authorization: Bearer qr3_sk_..." \
  -F "file=@logo.png"
```

`POST /v1/codes/{id}/logo` accepts a multipart field `file` and replaces any
existing logo. `DELETE /v1/codes/{id}/logo` removes it again and is
idempotent. An oversized image answers `413`, an unsupported format
(including SVG — only raster images are accepted) answers `422`,
and a `viewer` role answers `403`.

With a logo set, `qr.svg` and `qr.png` serve `Cache-Control: public, max-age=300` instead of the usual 24 hours — an embedded image URL shows a
change within up to 5 minutes instead of the next day.

A full guide with every limit, error code and print note lives at
[Logo in the QR code](https://docs.qr3.app/en/guides/logo-in-qr-code/).

### What you need to do

Nothing. Without an uploaded logo, nothing changes for existing codes — no
different pattern, no different cache time, no different download. The logo
is a purely optional addition.

[Kompletní technická dokumentace →](https://docs.qr3.app/en/changelog/)

[← Všechny záznamy](/cs/changelog/)
