How it works
The full walkthrough: the five steps, the UTM parameters that tag your link, and the error correction levels that keep a code with a logo scannable.
Step by step
- Enter the landing page URL the QR code should open.
- Fill in the UTM parameters, or pick one of the quick presets.
- Optionally upload a logo and choose the foreground and background colors.
- Choose an error correction level. H is recommended when you add a logo.
- Download the result as a PNG (300 to 1200 px) or as an SVG.
Logo image tips
If you upload a logo, these guidelines keep the code scannable.
- Aspect Ratio: 1:1 (square) recommended for optimal logo display
- Resolution: Minimum 200×200px for reliable scanning across devices
- Format: PNG with transparent background preferred, JPG/SVG also supported
- Design: Simple, high-contrast logos work best for scanner recognition
- Testing: Always test with multiple devices and QR scanner apps
UTM parameters
UTM parameters are tags appended to a link. Analytics tools read them to group visits by where the link was placed and which campaign it belonged to.
| Parameter | What it identifies | Example |
|---|---|---|
utm_source |
The referrer that sent the visit. | newsletter, facebook |
utm_medium |
The marketing medium the link appeared in. |
email, social, print
|
utm_campaign |
The name of the campaign the link belongs to. | spring_sale |
utm_content |
Tells apart similar content, or two links inside the same ad. | qr_code |
utm_term |
The keyword you bid on in a paid search campaign. | qr generator |
Error correction levels
A QR code carries redundant data so it still reads when part of it is damaged or covered. The QR standard (ISO/IEC 18004, originally developed by DENSO WAVE) defines four levels.
| Level | Recoverable damage | When to use |
|---|---|---|
| L | ~7% | Plain codes with no logo, shown on a clean surface. |
| M | ~15% | The common default; balances code size and resilience. |
| Q | ~25% | Small logos, or print that may pick up wear or dirt. |
| H | ~30% | Codes with a logo, and print that will be handled. |
Use H when you place a logo over the code, and keep the logo size slider low (it sets the logo width as a share of the code) so enough modules stay readable.
Try the generator