QR Code Generator
Make a QR code for a link, Wi-Fi network, text, email, phone number, text message or contact card — free, with no sign-up, no tracking and no expiry, and everything stays on your device.
QR Code Generator
How to use the QR code generator
Choose what the code should do — open a link, show text, join a Wi-Fi network, start an email, call or text a number, or save a contact — and fill in the boxes. The code redraws as you type. Under Options you can pick the error-correction level, the PNG size, the quiet zone (the blank margin) and the colors. Then press Download PNG for documents and social media, or Download SVG for print, where a vector file stays sharp at any size. The working underneath shows exactly what is stored in the code and how big it is.
Everything runs in your browser: nothing you type is uploaded. Only a link — and your option choices — is saved in the page address so you can bookmark or share it; Wi-Fi passwords, contact details and messages never are.
What is stored in each kind of QR code
A QR code only stores text. Phones recognize a few standard formats and offer the matching action. This generator writes these formats, escaping special characters so they survive the trip:
| Type | What the code contains |
|---|---|
| Link | https://example.com/ — https:// is added if you leave it out |
| Wi-Fi | WIFI:T:WPA;S:name;P:password;; — \ ; , : " are escaped with a backslash; H:true; marks a hidden network |
mailto:name@example.com?subject=Hi%20there&body=… — subject and message are percent-encoded (RFC 6068) | |
| Phone | tel:+15550100199 — spaces, dashes and brackets removed (RFC 3966) |
| SMS | SMSTO:+15550100199:message |
| Contact | A vCard 3.0 (BEGIN:VCARD … END:VCARD) with commas, semicolons and backslashes escaped (RFC 2426) |
The generator then picks the smallest version that holds the content. Version 1 is 21 × 21 modules, and each version adds 4 modules per side, up to version 40 at 177 × 177. The most a single code can hold in byte mode is 2,953 bytes at level L and 1,273 bytes at level H.
Worked example: a café Wi-Fi code
The network is called Maple St Café and the password is blue;moon:42. Because the semicolon and colon
would otherwise end the field early, each gets a backslash, and the code stores:
WIFI:T:WPA;S:Maple St Café;P:blue\;moon\:42;; That is 46 bytes (the é takes two bytes in UTF-8). At error-correction level M the smallest version that fits is version 4, which holds up to 62 bytes and is 33 × 33 modules. With the standard 4-module quiet zone the image is 41 modules across, so a 1,024-pixel PNG gives 25.0 pixels per module. Choose the Wi-Fi type, type the same details and the working shows these numbers.
Static vs. dynamic QR codes
Many “free” QR sites make dynamic codes: the pattern holds a short link to their server, which forwards people to your real page. That lets you change the destination and count scans, but it also means the code depends on that company. If the free trial ends, the subscription lapses or the service closes, the redirect can stop — and every printed menu, flyer and sign with that code stops working with it.
Every code made here is static: the content is written directly into the pattern, so it never expires and no one can switch it off. If you may need to change where a printed code leads, point it at a page on your own website that you control, and update that page instead.
Error correction, contrast and the quiet zone
- Error correction adds Reed–Solomon codewords so a code still scans when part of it is dirty or damaged: level L restores about 7% of the codewords, M 15%, Q 25% and H 30%. More recovery means more modules.
- Contrast. Scanners look for the difference between dark and light modules. Use a dark code on a light background; the tool shows the contrast ratio and warns when it is low or the colors are inverted.
- Quiet zone. The QR standard calls for a blank margin at least 4 modules wide on every side. Keep it, even when the code sits inside a design — text or graphics touching the code are a common reason for failed scans.
Printing and scanning tips
- Use the SVG for print. It is a vector file, so it stays crisp at any size. For a PNG, pick a size at least as large as the printed code needs: at 300 dpi, a 1,024-pixel image covers about 3.4 inches.
- Bigger is easier to scan. A code that must be read from across a room needs to be much larger than one on a business card, and longer content makes the modules smaller at the same size. Shorten long links before you encode them.
- Test before you print a batch. Scan the proof with both an iPhone and an Android phone, in the light where it will be used.
- Avoid glossy surfaces and curved packaging where reflections or bending can distort the pattern.
- Tell people what they’ll get — “Scan to join our Wi-Fi” or “Scan for the menu” — so they can trust the code.
Stay safe with QR codes
The FTC warns that scammers stick their own codes over real ones on parking meters and send codes in unexpected emails and texts. Before you open a link from a code, check the address your phone shows, and don’t scan codes from messages you weren’t expecting. If you place codes in public, check them now and then for stickers. For strong Wi-Fi and account passwords, try the password generator; to choose on-brand colors, see the HTML color codes.
Frequently asked questions
Do these QR codes expire?
No. They are static codes: your link, text or Wi-Fi details are written directly into the pattern, so the code works for as long as the content is valid — there is no account, subscription or redirect server that can switch it off. The flip side is that you can’t edit a static code after printing it; make a new one instead.
What is the difference between a static and a dynamic QR code?
A static code contains your content itself. A dynamic code contains a short link to the provider’s server, which then redirects to your content. Dynamic codes can be edited and can count scans, but they stop working if the redirect service ends — for example when a free trial or subscription lapses or the company shuts down.
Is it safe to make a Wi-Fi QR code here?
Yes. The code is generated by JavaScript in your browser; the network name and password are never uploaded, stored or added to the page address. Only the link type puts its web address in the URL, so the Share button can reproduce it. Remember that anyone who scans the printed code gets your password, so a guest network is a good idea for public spaces.
Which error-correction level should I choose?
Level M (about 15% recovery) suits most uses. Choose L to keep a long code as small as possible on clean screens and paper, and Q or H (25–30%) for codes that may get scuffed or dirty, such as on packaging or outdoors. Higher levels add modules, so the code gets denser for the same content.
Can I track how many people scan my code?
Not with a static code — scans happen on people’s phones and nothing reports back. If you want numbers for a link, add campaign tags to the URL (for example ?utm_source=poster) and read the visits in your own website analytics.
Can I use these QR codes commercially?
Yes — the codes you make here are yours to use on menus, packaging, signs and business cards, with no attribution and no watermark. “QR Code” is a registered trademark of DENSO WAVE INCORPORATED.
Sources
- ISO/IEC 18004:2024 — QR code bar code symbology specification
- DENSO WAVE — QR Code error correction feature
- DENSO WAVE — Information capacity and versions of QR Code
- FTC Consumer Advice — Scammers hide harmful links in QR codes to steal your information
- RFC 6068 — The “mailto” URI Scheme
- RFC 3966 — The tel URI for Telephone Numbers
- RFC 2426 — vCard MIME Directory Profile (vCard 3.0)
- ZXing — Barcode Contents (origin of the WIFI: format)
- W3C — WCAG 2.2 contrast ratio definition