Free QR Code Generator: Links, Wi-Fi & Contacts
Make a QR code for a website, text, Wi-Fi network, email, phone number, SMS or contact card, then download it as PNG or SVG. No sign-up and no tracking. The code is made in your browser and never expires.
Phones that scan this code offer to join the network without typing the password. The password stays on this device; it is only drawn into the image.
Use the international format with + and the country code, so the number works from any country.
Scanning the code opens "Add contact" on the phone (vCard 3.0). Leave out what you do not need: every field makes the code denser.
Show the encoded text
How to make a QR code
- Choose what the code should do: open a link, show a text, join a Wi-Fi network, write an email, call a phone number, send an SMS or save a contact.
- Fill in the fields. The QR code updates while you type. Under it you see its size in modules (the small squares) and how much of the space is used.
- Pick the error correction level and colors if you need them. The defaults (M, black on white, a 4-module border) work almost everywhere.
- Download PNG for web pages, chats and documents, or SVG for print and design tools: it is a vector file that stays sharp at any size. Copy image puts the PNG on your clipboard.
- Test it with your phone camera before you print many copies.
You can open the tool with content already filled in: geektools.net/qr_code_generator?text=Hello or ?url=https://example.com.
Which error correction level?
A QR code stores extra Reed-Solomon recovery data, so it can still be read when part of it is dirty, torn or covered. More recovery data means more modules for the same content.
| Level | Can recover | Use it for |
|---|---|---|
| L | about 7% | Long content on screens or small, clean prints, where a simpler code helps more than repair |
| M | about 15% | The default: websites, slides, flyers, business cards |
| Q | about 25% | Packaging, stickers, things that get scratched or folded |
| H | about 30% | Outdoor signs, rough surfaces, or a small logo placed over the middle |
How much fits in a QR code?
The size of a QR code is its version, from 1 (21 × 21 modules) to 40 (177 × 177). The tool always picks the smallest version that fits. Maximum content in bytes (one byte is one letter of plain English text; accented letters use 2 bytes, Chinese or Japanese characters 3):
| Version | Modules | L | M | Q | H |
|---|---|---|---|---|---|
| 1 | 21 × 21 | 17 | 14 | 11 | 7 |
| 2 | 25 × 25 | 32 | 26 | 20 | 14 |
| 3 | 29 × 29 | 53 | 42 | 32 | 24 |
| 4 | 33 × 33 | 78 | 62 | 46 | 34 |
| 5 | 37 × 37 | 106 | 84 | 60 | 44 |
| 10 | 57 × 57 | 271 | 213 | 151 | 119 |
| 20 | 97 × 97 | 858 | 666 | 482 | 382 |
| 40 | 177 × 177 | 2,953 | 2,331 | 1,663 | 1,273 |
Content that is only digits uses the compact numeric mode (up to 7,089 digits), and upper-case letters, digits and $%*+-./: and space use alphanumeric mode (up to 4,296 characters). The tool chooses the mode by itself.
Wi-Fi, contact and other QR code formats
A QR code only stores text. The phone decides what to do from the way the text starts. These are the formats this tool writes, and you can also type them into the Text box yourself:
| Type | Encoded text |
|---|---|
| Link | https://example.com/menu |
| Wi-Fi | WIFI:T:WPA;S:MyHomeWiFi;P:my-secret-pass;; |
mailto:[email protected]?subject=Order%20123 | |
| Phone | tel:+15551234567 |
| SMS | SMSTO:+15551234567:See you at 8 |
| Contact | BEGIN:VCARD VERSION:3.0 N:Doe;Jane FN:Jane Doe TEL:+15551234567 END:VCARD (one field per line) |
| Map location | geo:1.2834,103.8607 |
In the Wi-Fi format the characters \ ; , : and " in the network name or password must be escaped with a backslash. The tool does that for you, so a password like a;b works.
Tips for a QR code that always scans
- Size: make the code at least one tenth as wide as the distance it is scanned from, and never smaller than about 2 cm (0.8 in). On a table: 3 cm. On a poster read from 3 m: 30 cm.
- Keep the quiet zone: scanners look for the white border to find the code. Four modules is the standard; do not let text or pictures touch the code.
- Dark on light: use a dark color on a light background with strong contrast. Light codes on dark backgrounds fail on many older scanners, and the tool warns you about them.
- Shorter is better: a short link gives a code with fewer, bigger modules that scans from further away and from worse prints.
- Print the SVG: a small PNG that is scaled up gets blurry edges. SVG stays sharp in Word, Illustrator, Canva, Figma or a print shop.
- Test before you print: try two different phones, in normal room light, at the real distance.
Static or dynamic QR codes?
This tool makes static QR codes: the link or text is written into the code itself. They are free, they work offline, they never expire, and nobody can see who scans them.
Dynamic QR codes from paid services contain a short link to the service, which then redirects to your page. You can change the destination and count scans, but every scan goes through their server, and the printed code stops working when the subscription ends. Many "free" QR generators make dynamic codes that are switched off after a trial.
If you want to change the destination later without a subscription, encode a link to a page on your own website (for example example.com/menu) and change that page or redirect it. To count scans, add a campaign tag such as ?utm_source=qr and read it in your own analytics.
Make QR codes in code
| Where | Code |
|---|---|
| Linux / macOS | qrencode -o qr.png -s 10 -l M "https://example.com" |
| Terminal (show it) | qrencode -t ansiutf8 "https://example.com" |
| Python | import segno; segno.make("https://example.com", error="m").save("qr.svg", scale=10) |
| Node.js | await require("qrcode").toFile("qr.png", "https://example.com", { errorCorrectionLevel: "M" }) |
| Java (ZXing) | BitMatrix m = new QRCodeWriter().encode("https://example.com", BarcodeFormat.QR_CODE, 512, 512); MatrixToImageWriter.writeToPath(m, "PNG", Path.of("qr.png")); |
This page uses its own small encoder that follows ISO/IEC 18004. It picks the smallest version, the right mode (numeric, alphanumeric or UTF-8 bytes) and the best of the 8 mask patterns, like the libraries above.
Frequently asked questions
Do QR codes made here expire?
No. This tool makes static QR codes: the link or text is stored inside the black and white squares themselves, not on our server. The code keeps working for as long as the printed image exists and the link it contains still works. There is no account, no subscription and nothing that can be switched off.
Can I use these QR codes for business and print?
Yes. The codes are free for any use, including menus, flyers, packaging and business cards, with no watermark and no attribution needed. For print, download the SVG: it is a vector file that stays sharp at any size. QR Code is a registered trademark of DENSO WAVE, but the code itself is an open ISO standard that anyone may use.
How do I make a QR code for my Wi-Fi?
Choose Wi-Fi, type the network name (SSID) exactly as it appears on your phone, the password and the security type (WPA/WPA2/WPA3 for almost all home routers). When a guest scans the code with an iPhone or Android camera, the phone offers to join the network without typing the password. The password is only put into the image; it is not sent anywhere.
How big should a printed QR code be?
A common rule: the code should be at least one tenth of the scanning distance wide, and never smaller than about 2 cm (0.8 inch). A code on a table read from 30 cm needs about 3 cm; a poster read from 3 m needs about 30 cm. Short content makes a code with fewer, bigger squares that scans more easily. Keep the white border (quiet zone) around it.
Which error correction level should I choose?
M (15%) is a good default for screens and clean print. Choose Q (25%) or H (30%) when the code may get dirty, scratched or folded, for example on packaging or outdoors, or when you plan to put a small logo over the middle. A higher level makes the code denser, so for long content on a small print L (7%) can scan better.
Can I track how many people scan my QR code?
Not with a static code, and this tool does not track anyone. Scans are counted by dynamic QR services that put their own short link in the code and redirect visitors, which also means the code stops working if you stop paying. To count visits yourself, encode a link to your own site with a campaign parameter such as ?utm_source=qr and read it in your analytics.
Why does my QR code not scan?
The usual reasons are: too little contrast or light squares on a dark background (many scanners need dark on light), no white border around the code, a print that is too small for the amount of content, a blurry or stretched image, or a glossy surface with reflections. Use dark on white, keep a quiet zone of 4 squares, shorten the content and test with two different phones before printing many copies.