# How to make a QR code for free — the 2026 complete guide

> Published 2026-04-26 · 12 min read · By QR Code Easily
> Canonical: https://qrcodeeasily.com/blog/how-to-make-a-qr-code/

**TL;DR** — Open [qrcodeeasily.com](https://qrcodeeasily.com/), pick the QR type that matches what you want to do (URL, vCard, WiFi, etc.), fill in the form, optionally tweak colors and add a logo, then download as SVG or PNG. The whole process takes about 30 seconds and is free with no sign-up. Always test the result with a real phone before printing or distributing.

QR codes turned 30 in 2024 and they're more useful than ever — restaurant menus, WiFi sharing, business cards, contactless payments, event tickets. This guide walks through everything you need to create a QR code that works on the first scan: how to pick the right type, what to do about size and contrast, when to use a logo, and how to test it.

## The four-step process

1. **Pick the right QR type.** The biggest mistake beginners make is encoding the wrong kind of data. A URL QR works for any web link, but a **vCard** QR saves a contact directly to the phone, a **WiFi** QR connects automatically, and an **Event** QR adds a calendar entry. Picking the right native type means one tap and the user is done — no extra browser hop.
2. **Fill in the details.** Enter the URL, contact info, WiFi credentials, or whatever the type expects. The generator validates each field and rebuilds the QR live.
3. **Customize (optional).** Adjust colors to match your brand. Pick a style — rounded, square, or smooth blob. Optionally upload a logo to embed in the center. Choose your PNG size (256, 512, 1024, 2048, or 4096 px). All free, all stays in your browser.
4. **Download and test.** Download as SVG (vector, infinitely scalable, best for print) or PNG (raster, easier for social sharing). Then — non-negotiable — scan it with your actual phone in the lighting and on the surface where it will live, before you print 1,000 copies.

## Choosing the right QR type

There are 10 commonly used QR types, each triggering a different native action when scanned:

- **URL** — encodes any web address. Phone opens it in the default browser. Use for menu pages, product details, landing pages.
- **vCard** — encodes a complete contact card (name, phone, email, company, job title, website). One tap to add to address book. Standard on networking events, business cards, conference badges.
- **WiFi** — encodes SSID, password, encryption type (WPA / WPA2 / WPA3 / WEP), hidden flag. Phone connects automatically without typing. Cafés, Airbnbs, hotels, conference venues.
- **Event** — encodes a calendar entry (title, location, start/end, description). Follows iCalendar (vCal) — works on iPhone, Android, Google Calendar, Outlook.
- **SMS / Email / Phone** — open the relevant app pre-filled. `sms:` opens messaging with recipient and message ready. `mailto:` opens mail client. `tel:` dials a number.
- **Location** — encodes GPS coordinates using `geo:lat,lon`. Opens default Maps app at the exact point. Perfect for hard-to-find locations.
- **Crypto and PayPal** — payment requests for Bitcoin, Ethereum, Litecoin, Dogecoin via standard URI schemes. Wallet opens with address and amount pre-filled. PayPal QRs encode a paypal.me link with optional amount.

> **Tip:** if you're not sure which type to use, default to **URL**. You can always link to a custom landing page that handles whatever the user needs to do.

## Static vs dynamic QR codes

**Static QR codes** encode the data directly into the image. The QR *is* the URL or vCard or WiFi credentials. Free, work forever, scan slightly faster, no external dependency.

**Dynamic QR codes** encode a short URL pointing to a redirector you control. Editable after printing, but require a paid service, depend on that service staying online, and add an HTTP redirect.

For most use cases — menus, business cards, WiFi, payments, events — static QR codes are the right choice. Use dynamic only when you genuinely need to change the destination after printing. See [static vs dynamic guide](https://qrcodeeasily.com/blog/static-vs-dynamic-qr-codes/).

## Sizing your QR code

Use the **1:10 rule** — the side of the QR should be at least one-tenth of the scan distance.

- Phone-in-hand (≈30 cm): print at least 3 cm wide
- Wall poster (≈1 m): print at least 10 cm wide
- Trade-show banner (≈3 m): print at least 30 cm wide
- Outdoor billboard (≈5 m): print at least 50 cm wide

If in doubt, go bigger. There's no penalty for an oversized QR. See [QR code sizes guide](https://qrcodeeasily.com/blog/qr-code-sizes/).

## Error correction levels

QR codes have built-in redundancy. Four levels of error correction (ECC) trade data capacity for damage tolerance:

- **L (Low)** — recovers ~7%. Fits more characters but breaks if even slightly damaged.
- **M (Medium)** — recovers ~15%. Default for most generators.
- **Q (Quartile)** — recovers ~25%. For codes printed on rough surfaces or used outdoors.
- **H (High)** — recovers ~30%. Required when embedding a logo.

You almost never need to think about this — modern generators pick a sensible default and bump to H if you add a logo.

## Adding a logo (without breaking the code)

Two rules:

1. **Keep the logo small** — cover at most 22–25% of the QR area. Bigger logos eat into too many modules.
2. **Use error correction H** — gives the ~30% recovery margin needed.

Our generator does both automatically when you upload a logo. See [logo embed tutorial](https://qrcodeeasily.com/blog/qr-code-with-logo/).

## SVG vs PNG — which format to download?

| Format | Best for |
|--------|----------|
| **SVG (vector)** | Infinitely scalable. Crisp at any size. Tiny file (under 5 KB usually). Best for print, posters, anywhere size might change. Editable in Illustrator/Inkscape. |
| **PNG (raster)** | Fixed resolution (256–4096 px). Works in every app, social network, printer. Easier to share via messaging apps. Use 1024+ for print. |

If you can choose, **download SVG**. Switch to PNG only when the target requires raster.

## Color and contrast

QR scanners need to clearly see dark modules against a light background. Black-on-white is the gold standard, but you have flexibility.

- **What works:** any sufficiently dark color (navy, forest, dark red, dark purple) on any sufficiently light background (white, cream, pale yellow). Test it.
- **What doesn't work:** light colors on white (light grey, yellow), inverted codes (white on black — many scanners struggle), photo backgrounds, two similar tones.

## Quiet zone (the white border)

Every QR code needs a margin equal to at least **4 modules**. This "quiet zone" tells the scanner where the code begins and ends. Don't let other graphics, text, or borders crowd the QR. Our generator includes the quiet zone automatically — just don't crop into it.

## Testing before you print

Before committing to 1,000 copies, do this 30-second test:

1. Generate the QR at the size you'll actually print
2. Print one test copy on the actual printer (or display on the actual screen)
3. Scan it with your phone in the actual lighting and at the actual distance
4. Have a colleague scan it with a different phone (different brand if possible)

If both succeed without effort, you're good. Most common fixes if either fails: bigger size, more contrast, more quiet zone, less aggressive logo, shorter destination URL. See [troubleshooting guide](https://qrcodeeasily.com/blog/why-my-qr-code-wont-scan/).

## Privacy considerations

Ask one question of any free online generator: **does QR generation happen in your browser, or on someone else's server?**

Server-side generators have a copy of every URL, vCard, WiFi password, and crypto address you've encoded. Most users don't realize this.

Our generator runs **entirely in your browser**. Your inputs never leave your device. Open DevTools and watch the Network tab while you generate — zero outgoing requests with your data.

## Common pitfalls

- Encoding too long a URL — 200 chars is fine; 2000 produces a dense, harder-to-scan code
- Forgetting `https://` — most scanners are forgiving but some require it
- Linking to a landing page that requires login — public destination always
- Using a third-party URL shortener that may go down — once printed, you can't fix it
- Color-on-color contrast issues
- Skipping the test before mass printing

## Related guides

- [Why my QR code doesn't scan — 8 common mistakes](https://qrcodeeasily.com/blog/why-my-qr-code-wont-scan/)
- [How big should you actually print a QR code?](https://qrcodeeasily.com/blog/qr-code-sizes/)
- [How to add a logo without breaking your QR code](https://qrcodeeasily.com/blog/qr-code-with-logo/)
- [Static vs dynamic QR codes — which one do you need?](https://qrcodeeasily.com/blog/static-vs-dynamic-qr-codes/)
