Skip to content

QR code and barcode questions, answered

Everything about making a QR code here: logos and error correction, the eleven barcode formats and their digit rules, UTM tagging, the image API, and exactly what the site does and does not collect.

Privacy & data

Is my data private when I use the QR code generator?
Yes. The generator on the home page runs entirely in your browser. The URL or text you type, the logo you pick and the colours you choose are never sent to a server — the code is encoded in JavaScript in your tab. You can verify this in your browser’s network panel: typing in the box produces no requests.
What happens to a URL I put through makeqrco.de/qr/?
The image API reads the URL out of the request path, renders a PNG and returns it. The application does not write it to a database or a file, and it does not send it to any third party. It does travel over the network as part of the request path, so if the link is genuinely secret, generate the code in the browser instead of using the URL API.
Do you use cookies or analytics?
No cookies are set. The site pages (home, about, FAQ and the other content pages) load a cookieless analytics script from api.panalytics.money, which records aggregate page views, referrers, campaign tags, browsers and countries. It does not set an identifier and cannot follow you to other sites. The share pages under makeqrco.de/<url> deliberately do not load it, because the URL you encoded is part of that page’s path. The privacy policy has the full detail.
Is there an account or a stored history?
There is no sign-up, no login and no user database, so there is no history of what you generated and nothing stored about you to leak.

In depth: Tracking printed QR codes with UTM parameters

QR codes

Can I add a logo to my QR code?
Yes. In the QR Code tab, use the logo upload option. The logo is composited into the centre of the code with a white padding border. Set error correction to H first — it allows roughly 30% of the code to be obscured and still scan, which is what makes a logo-covered code readable.
What do the error correction levels L, M, Q and H mean?
They set how much redundant data the code carries: L recovers about 7% damage, M 15%, Q 25% and H 30%. Higher levels survive scratches, print bleed and a logo overlay, but need more modules, so the code gets denser at the same physical size. M is a good default for a screen; H is right when you are covering part of the code.
Can I change the colours of a QR code?
Yes, foreground and background are both configurable. Keep strong contrast — a scanner thresholds the image to black and white, so a light purple on white or a dark colour on a dark background will fail on many phones. Dark-on-light also scans more reliably than light-on-dark.
Should I download PNG or SVG?
PNG for anything on a screen — slides, email, social. SVG when the code will be printed larger than a business card, because it is vector and stays sharp at any size. Note that the SVG export does not include a logo overlay: logos are composited on the canvas, so they only appear in the PNG.
How big should a printed QR code be?
The usual rule of thumb is that the code should be about a tenth of the scanning distance: roughly 3 cm for a code read at 30 cm (a flyer or a menu), and proportionally larger for a poster read from across a room. Always leave the quiet zone — the blank margin around the code — intact.
Do QR codes made here expire?
No. The code encodes your URL literally; there is no shortener or redirect in the middle. Nothing on this site has to keep running for a code you downloaded to keep working.
Can I decode a QR code here as well?
Yes. The QR code reader decodes an image you upload or paste from the clipboard — a photo, a screenshot or a downloaded PNG — entirely in your browser, so the image is never uploaded. It does not use the camera. The result shows the raw content and what kind it is (web address, Wi-Fi network, contact card, plain text and so on), and it never opens a link on its own.

QR code reader →

Can I make many QR codes at once?
Yes. The bulk QR code generator takes a plain list with one link or text per line, or a CSV with a column for the file names, and produces up to 1,000 codes in one run. You choose PNG or SVG, the size and the error correction level once for the whole batch and download everything as a single ZIP. Like the single-code generator, it runs in your browser and uploads nothing.

Bulk QR code generator →

In depth: Why your QR code is not scanning

Barcodes

Which barcode types are supported?
Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, QR Code, Data Matrix, PDF417, Aztec Code, ITF-14 and Interleaved 2 of 5. They are rendered by bwip-js, which supports over a hundred symbologies in total.
My barcode shows an error — why?
Each symbology has strict data rules. EAN-13 wants 12 digits (it computes the 13th check digit) or a full 13. UPC-A wants 11 or 12 digits. EAN-8 wants 7 or 8. ITF-14 and Interleaved 2 of 5 need an even number of digits. Code 128 accepts any ASCII, and Code 39 accepts uppercase letters, digits and a few symbols. Match your data to the format and the error clears.
What is the SVG shape mask feature?
You upload an SVG silhouette — a logo, an animal, a country outline — and the barcode is clipped so its bars only appear where the shape is opaque. It is a design tool for posters and merchandise.
Are SVG-masked barcodes scannable?
No. Clipping the bars into an arbitrary outline removes part of the encoded data, so a reader cannot decode it. Treat it as artwork only, and never put a masked barcode on something that has to scan at a till.
Can I use these barcodes on a retail product?
The renderer produces a technically correct symbol, but retail EAN and UPC numbers have to be allocated to you by GS1 — you cannot invent a number and expect it to work in a shop’s system. For internal use, warehouse labels or a personal project, Code 128 is the usual choice and needs no registration.

In depth: EAN-13 vs UPC-A: which one your product needs

The URL API and share pages

How do I get a QR code as an image URL?
Put your full URL after makeqrco.de/qr/. For example makeqrco.de/qr/https://example.com returns a 512x512 PNG with Content-Type: image/png. There is no API key and no quota. Query parameters change the size, colours, error correction and format, and ?data= encodes a payload that is not a URL.
Can I embed it in an img tag?
Yes, that is exactly what the /qr/ route is for. <img src="https://makeqrco.de/qr/https://example.com" alt="QR code" /> renders the code inline, and the same URL works in Markdown, in HTML email, in Notion and anywhere else an image URL is accepted. The response carries Access-Control-Allow-Origin: * so it can also be fetched from your own scripts.
What does makeqrco.de/<url> return without the /qr/ part?
An HTML page showing the QR code, with Open Graph tags so the link unfurls with a preview in Slack, Discord, WhatsApp and similar. It is meant for sharing with a person. If you point an <img> tag at it you will get a broken image, because it is a document and not an image — use the /qr/ form there.
Can I customise the API output (size, colours, a logo)?
Yes, everything except a logo. Add size, margin, ec (l, m, q or h), dark and light colours, and format=svg to the query string: makeqrco.de/qr/https://example.com?size=1024&ec=h. A PNG can be 64 to 1024 pixels; above that ask for format=svg, which goes to 2048, costs the server almost nothing and scales without blurring anyway. light=transparent gives a transparent background. A logo overlay is still generator-only, because it is composited on a canvas in your browser.
Is the API response cached?
Yes. Both routes send Cache-Control: public, max-age=86400, so browsers and any CDN in front of them keep the result for 24 hours. Repeating the same link is effectively free.
Are the generated pages indexed by search engines?
No. Every response from the share route and the image API sends X-Robots-Tag: noindex, nofollow, and the share pages carry a matching robots meta tag. They are a feature for people sharing links, not search results, and a path that does not look like a URL returns a normal 404.

In depth: Generate QR codes from a URL: the image API, end to end

UTM parameters

What are UTM parameters?
They are query-string tags — utm_source, utm_medium, utm_campaign, utm_content and utm_term — that analytics tools read to attribute a visit to a particular campaign. They are appended to your URL, so they become part of what the QR code encodes.
How do I add UTM parameters here?
Expand "UTM / Analytics parameters" in the QR Code tab and fill in the fields you need. Only non-empty fields are appended, and the tagged URL is what gets encoded — so tag the link before you print the code, because you cannot change it afterwards.
What should utm_medium be for a QR code?
The common conventions are utm_medium=qr or utm_medium=offline, with utm_source naming the physical placement — poster, flyer, menu, packaging. That lets you separate scans from a table tent and scans from a billboard in the same report.

In depth: Static vs dynamic QR codes, and which one you actually need

Guides

The questions above in short form. These are the long versions, with the numbers and the reasoning behind them.

All QR code and barcode guides →