Skip to content

Logo in the QR code

A code can carry an optional logo in its center — your own brand mark instead of a plain QR pattern. The logo is embedded as actual pixels, in all four downloads: SVG, PNG, PDF and EPS.

In the dashboard

Open a code’s detail page. Next to the QR preview and download buttons is a Logo in the QR code card.

  1. Click Choose logo and pick a PNG, JPEG or WebP file (up to 1 MB — larger or other formats, including SVG, are rejected before upload).
  2. A preview of the selected file appears together with a warning:
    • No logo yet — adding one changes the code’s module pattern. Confirm the checkbox, then click Upload logo.
    • A logo is already set — replacing it only swaps the image in the center, the pattern stays the same. Click Replace logo; no confirmation is required.
  3. To remove a logo, click Remove logo, confirm the warning checkbox (removing also changes the pattern), then confirm again to delete it.

Via API

POST /v1/codes/{id}/logo — multipart request, field file.

Terminal window
curl -X POST https://qr3.app/v1/codes/qr_a1b2c3d4/logo \
-H "Authorization: Bearer qr3_sk_..." \

Response (HTTP 201): the updated code, with logo_file_id set.

The file is checked by its magic bytes, not its extension or Content-Type, and normalized to a 512 × 512 px transparent PNG (aspect ratio preserved). An existing logo is replaced — there is only ever one logo per code.

DELETE /v1/codes/{id}/logo — no body.

Terminal window
curl -X DELETE https://qr3.app/v1/codes/qr_a1b2c3d4/logo \
-H "Authorization: Bearer qr3_sk_..."

Response (HTTP 200): the updated code, with logo_file_id set back to null. Idempotent — calling it on a code with no logo still returns 200 and changes nothing.

Errors

StatusWhen
403The API key’s role is viewer
404Code not found in this workspace
413The file is larger than 1 MB
422Missing file field, or a format other than PNG/JPEG/WebP (SVG included)

What changes on the code

All four formats — qr.svg, qr.png, qr.pdf and qr.eps — embed the logo’s actual pixels, centered, scaled to a fixed share of the code’s area. All four raise the error correction level to H to keep the code scannable.

Cache

With a logo set, all four formats — qr.svg, qr.png, qr.pdf and qr.eps — are served with Cache-Control: public, max-age=300 (5 minutes) instead of the usual public, max-age=86400, immutable (24 hours). An embedded image URL used elsewhere — a page, an email, a document — therefore picks up a logo change within up to 5 minutes. A cached copy from before a code ever had a logo can take up to the full 24 hours to refresh, since it was cached under the longer, immutable lifetime.

Printing

  • A code already printed keeps working whether or not you add, replace or remove a logo — the destination it encodes never depends on the logo.
  • Adding or removing a logo changes the module pattern. If the logo itself needs to show up on the physical material, reprint using any of the four current formats (qr.svg, qr.png, qr.pdf or qr.eps) — never mix print runs from before and after the change.
  • Replacing a logo does not change the pattern, so a reprint is only about wanting the new image on the material, not about scannability.
  • All four formats now contain the logo alike — which one fits your print artwork is purely a question for your layout program (vector for PDF/EPS, raster for PNG, SVG for either).
  • Always do a test scan on the real material before a full print run, especially after a pattern change, and never mix files from different states.