QR Code Generator
Make a QR code for a link, text, WiFi network, contact card, email, phone number or text message. Style it, add your logo if you like, and download it as a PNG or SVG. It runs in your browser and the codes never expire.
How to use this tool
- Choose a type and fill it inPick link, text, WiFi, contact, email, phone or SMS and enter the details. The code updates as you type.
- Style it and check the warningsPick colors and shapes. The tool warns you about long content, low contrast and logos.
- Download and testDownload a PNG or SVG, then scan the exact file with two different phones before you print or publish it.
What each type puts inside the code
A QR code is just a way to store a short piece of text. What the phone does with it depends on how that text starts. These are the formats this tool writes:
- Link: the address itself, for example
https://example.com. The phone offers to open it. - WiFi:
WIFI:T:WPA;S:NetworkName;P:password;H:false;;. The characters\ ; , : "in the name or password are escaped with a backslash so they are not read as separators. - Contact: a vCard 3.0 card (
BEGIN:VCARDtoEND:VCARD) with lines ending in CRLF, which is what the format requires. - Email:
mailto:name@example.com?subject=...&body=...with the subject and message percent-encoded. - Phone:
tel:+15551234567. Spaces and punctuation are removed. - SMS:
smsto:+15551234567:Your message. Support for pre-filled text varies by phone and scanner app, so test it on both iPhone and Android.
Scanner apps decide what to show. A WiFi or contact code may need a tap to confirm on the phone, and older scanners may show the raw text instead.
Static vs dynamic QR codes
This tool makes static QR codes. Your content is written directly into the pattern. That has real advantages and real limits.
Static (this tool)
Content is inside the code
- Never expires and never needs a subscription
- Works offline for WiFi, text, contacts and phone numbers
- No scan counts and no tracking
- You cannot change the destination after printing
Dynamic (provider service)
Content is a redirect link on someone else's server
- You can change where it points after printing
- Scan counts are possible
- Depends on the provider staying online; many charge a subscription and stop the redirect if you stop paying
- The pattern is simpler, but the redirect adds a middleman
If you will print a code on something permanent, such as a sign, a vehicle or a menu, point it at a page you control (your own website address) so you can change what that page shows without reprinting. For link tracking without a dynamic code, tag the URL with the UTM Link Builder and read the results in your website analytics.
Making a code that scans
Contrast
The tool computes the WCAG contrast ratio between the code color and the background: (L1 + 0.05) / (L2 + 0.05), where L is each color's relative luminance, 1 for white and 0 for black. Black on white is 21:1. The 4:1 warning threshold is practical advice, not a rule from the QR standard: scanners need a clear difference in lightness between the squares and the background, and anything near or below 4:1 gets unreliable in poor light or on glossy print. A dark code on a light background is the safest. Colors with similar brightness (red on green, for example) can fail even if they look different to you.
Size and density
The more data, the more and smaller the squares. A short link makes a simple code that scans from far away; a long paragraph, a full vCard or a long link with tracking parameters makes a dense one that needs to be printed larger and held closer. As a rule of thumb, a code is easiest to scan from about ten times its width. A maximum of about 1,273 to 2,953 bytes fits in a QR code depending on the error correction level, and the tool warns when your content gets long and blocks it when it cannot fit. Shorten long links before you encode them.
Error correction and logos
Error correction adds redundant data so a damaged or covered code still reads. The standard levels recover roughly 7%, 15%, 25% and 30% of the code. A center logo covers part of the pattern, so use High and keep the logo small. Every logo and style change is a risk, so scan the finished file before printing.
Quiet zone
Leave a blank border around the code. Without it, scanners cannot tell where the code starts. Do not place text or images right up against it.