How to Create a QR Code for Free: Step by Step Guide
You can create a QR code for free in about two minutes: choose what the code should do, enter the data, style it, download it as PNG or SVG and scan it with your phone. Static QR codes need no account and no payment. This guide walks through each step with the exact data formats and the mistakes that most often make a code unreadable.
Everything below uses the GenerateQR.link generator, which runs in your browser.
Step 1: Pick the QR code type
The type decides what happens when someone scans. Start from the action you want, not from the design.
| What you want | Type | Static | Dynamic |
|---|---|---|---|
| Send people to a website or page | URL | Yes | Yes |
| Show a short message | Plain text | Yes | No |
| Let guests join your WiFi | WiFi | Yes | No |
| Start an email | Yes | Yes | |
| Start a phone call | Phone | Yes | Yes |
| Open a WhatsApp chat | Yes | Yes | |
| Prefill a text message | SMS | Yes | Yes |
| Share contact details | vCard | Yes | No |
If you are unsure whether you need static or dynamic, read static vs dynamic QR codes. The short version: static codes hold the data directly and never expire, while dynamic codes point to a short link you can edit later and track.
Step 2: Fill in the data
Type your content into the form. You do not need to know the raw formats, but knowing them helps you spot typos and understand what the code contains.
- URL: the full address, starting with https://. A link without the https:// part may be treated as plain text by some scanners.
- WiFi: the generator builds a text like
WIFI:T:WPA;S:<network name>;P:<password>;;. T is WPA, WEP or nopass. Names and passwords are case sensitive. There is a dedicated WiFi QR code generator if that is all you need. - Email:
mailto:<address>?subject=<encoded>&body=<encoded>. The subject and body are optional. Try the email QR code generator. - Phone:
tel:<number with country code>. Include the country code so the number works from anywhere. See the phone number QR code generator. - SMS:
sms:<number>?body=<encoded text>. Useful for keywords like "JOIN" or "MENU". The SMS QR code generator handles the encoding. - WhatsApp:
https://wa.me/<digits only with country code>?text=<encoded>. Digits only means no plus sign, spaces or dashes. Use the WhatsApp QR code generator for a ready form. - vCard: a text block that starts with BEGIN:VCARD and ends with END:VCARD, holding name, phone, email and company. The vCard QR code generator fills it in for you.
A good habit: keep the content short. Less data means a simpler pattern with larger squares, and larger squares scan faster and more reliably, especially when printed small.
Step 3: Style the code without breaking it
Styling is optional, but a code that matches your brand gets noticed more than a plain black square. The generator offers:
- Dot shapes: square, rounded, dots or diamond.
- Corner styles: square, rounded or circle.
- Colors: custom colors for the dots and the background.
- Logo: an image placed in the center.
- Frame: a frame with text above or below, such as "Scan to order".
The generator uses the highest error correction level (H). Under the ISO/IEC 18004 standard, level H lets about 30% of the code be damaged or covered and still be read. That headroom is what makes a center logo possible. The trade-off is that higher levels make the pattern denser.
Follow these rules so your styled code still scans:
- Dark code on a light background. Keep strong contrast. Pale yellow on white will fail.
- Avoid inverted codes. Light dots on a dark background are not read by every scanner.
- Keep the logo small. It should cover only a modest part of the center, not a large block.
- Leave a clear margin. The empty space around the code, called the quiet zone, should be about 4 modules wide. Do not crop it, and do not let text or images touch the edge.
- Do not go too decorative. Diamond or dot shapes with a thin, low-contrast color can look good on screen and fail on paper.
Step 4: Download as PNG or SVG
Choose the format by where the code will be used.
- PNG is fine for screens and small prints: websites, social posts, emails, slides, and small flyers.
- SVG is a vector format, so it stays sharp at any size. Pick it for posters, banners, packaging, signs, stickers and anything a printer will resize.
If you are not sure, download both. SVG costs nothing extra and saves you from a blurry reprint later.
Print size matters as much as format. A common rule of thumb is about 2 x 2 cm as a minimum for close scanning, such as a business card or a table tent. Go bigger for distance: a code on a poster read from a few meters away needs to be much larger. These are guidelines, not guarantees, so test at the real size.
Step 5: Test with a real phone
Never print a code you have not scanned. Testing takes under a minute:
- Open the camera app on your phone and point it at the code on your screen.
- Check that the result is exactly what you intended: the right page, the right number, the right WiFi network.
- If you have a second phone, try it too. Older and newer devices can behave differently.
- Print a draft at the final size, then scan the paper version from the distance people will actually use.
- For a WiFi code, try joining from a device that has never connected to that network.
Test again after any change to colors, logo or frame, since each one affects contrast and density.
Do you need an account?
For static codes, no. The data is generated in your browser and is not sent to our servers. The code never expires, because scanning it does not involve us at all. The downside is that you cannot edit it after printing and you get no scan statistics.
Dynamic codes are also free but need a free account. Instead of the final data, the pattern contains a short link on generateqr.link (https://generateqr.link/r/) that redirects to your destination. That gives you two things:
- You can change the destination later without reprinting.
- You can see scan statistics: total scans, scans per day, country, city, device type, operating system, browser and referring site. The IP address of the person scanning is not stored.
Dynamic codes are available for URL, Email, Phone, WhatsApp and SMS. WiFi, plain text and vCard are static only. One thing to know: if a dynamic code is paused or deleted, scanning it shows a "not active" page. A static code keeps working no matter what.
A simple way to choose: if the code goes on something permanent or costly to reprint, and the destination might change or you want to measure scans, use dynamic. If it is a WiFi login, a one-off text or something you will never edit, use static.
Common mistakes and how to fix them
- The code will not scan at all. Check contrast first, then the quiet zone, then the size. Remove the logo temporarily to see if that is the cause.
- The code scans on screen but not on paper. The print is probably too small or the ink too light. Print larger, use SVG, and use darker colors.
- The link opens a wrong or broken page. You may have left out https:// or made a typo. Rescan the code and compare the result with the URL you typed.
- The WhatsApp chat does not open. The number likely contains a plus sign, spaces or dashes. Use digits only, with the country code.
- The phone number fails abroad. Add the country code to the number.
- The WiFi code does not connect. Recheck the network name and password for case, and confirm the security type (WPA, WEP or nopass).
- You printed a static code with the wrong link. It cannot be edited. Create a new one, and consider a dynamic code next time so changes do not require reprinting.
- The code is too dense. Shorten the URL or text. A shorter payload gives larger modules.
Where to put your code
A QR code works best when it comes with a reason to scan. Add a short line of text near it, such as "Scan for the menu" or "Scan to save our contact", and use the frame text option for it. Place codes where people can point a phone comfortably: at eye level, on a flat surface, with no glare and no curved packaging if possible.
Create your first code
Open the QR code generator, pick your type, enter your data, style it, download the SVG or PNG and scan it before you print. If you want editable destinations and scan statistics, sign up for a free account and create a dynamic code instead.
Frequently asked questions
Is it really free to create a QR code?
Yes. The generator is free, works in your browser, and static QR codes need no account. Dynamic QR codes are also free but require a free account.
Will a free static QR code expire?
No. A static code holds the data directly in the pattern, so it keeps working as long as the destination itself (like your website) exists. It does not depend on our servers.
Should I download PNG or SVG?
Use SVG for anything printed, since it stays sharp at any size. PNG is fine for screens and small prints. If you are unsure, download both.
Can I add my logo to a free QR code?
Yes, you can place a logo in the center. The generator uses the highest error correction level (H), which helps the code stay readable, but keep the logo small and test the result with your phone.
Can I see how many people scanned my code?
Only with a dynamic code, which needs a free account. Static codes cannot be tracked because scanning them never touches any server of ours.