Most QR codes that open a "Join Network" prompt instead of a browser tab aren't running any special script. They're just plain text, formatted in a syntax phones already know how to interpret as a command instead of a link. The same trick is what makes a "save this contact" QR code work. A QR code is really just a container; what determines whether scanning it opens a website, joins a Wi-Fi network, or saves a new contact card is the exact string of characters sitting inside that container, not the QR format itself. Most generators never explain this part, which is why so many "Wi-Fi QR code" tutorials online just tell you to type your network name into a box that has no idea what a network name is supposed to do. Here's the actual syntax, and how to get it into ours.
Why the String Matters More Than the Generator
Every QR code generator, including ours, does fundamentally one job: take whatever text you give it and encode it into a scannable matrix of black and white modules. The "magic" of a Wi-Fi or contact QR code isn't a special feature some tools have and others don't. It's a recognized text schema that camera apps on modern phones are programmed to detect and act on. Our QR Code Generator works directly off whatever you drop into the content field, which means it's flexible enough to produce all three formats below without needing separate buttons or modes for each one.
This matters even more once you notice what kind of data tends to go into a Wi-Fi QR code specifically: your actual network password, in plain text. If you paste that into a generator that processes things server-side, that password now exists, even briefly, on infrastructure you don't control. Our generator runs the entire encoding process inside your browser's own JavaScript engine: open your dev tools and watch the Network tab while you generate one, and you'll see nothing fire outbound. The password that goes into the QR matrix never leaves the tab it was typed into.
Generating a Simple Link QR Code
This is the version most people already know. Paste your destination URL into the content field, adjust the foreground and background colors if you want something other than plain black-on-white, and download the PNG. Because the link is baked directly into the matrix geometry rather than routed through a redirect service, the code keeps working indefinitely. There's no expiration date tied to a hosting plan, and no tracking layer counting scans on a server somewhere before forwarding the visitor along.
Generating a Wi-Fi QR Code That Actually Triggers a Join Prompt
This is the one most tutorials get vague about. To make a phone's camera app offer to join a network instead of just displaying gibberish text, the string needs to follow this exact structure:
WIFI:T:WPA;S:YourNetworkName;P:YourPassword;;
Each segment does something specific. The T: field is the encryption type: use WPA for WPA or WPA2 networks, which covers nearly everything built in the last decade, WEP for older router security, or nopass for an open network with no password at all. The S: field is your network name exactly as it appears when you search for it on another device, and P: is the password, left blank if you used nopass. The double semicolon at the end closes the string and needs to stay there. One detail worth knowing if your network name or password contains a semicolon, comma, or backslash: those characters need a backslash placed directly before them, or the schema will misread where one field ends and the next begins.
Build that full string with your real network details substituted in, paste the whole thing into the content field, and download the code. Print it onto a card near your router, or hand it to guests directly. Most current Android and iOS camera apps recognize the WIFI: prefix automatically and surface a join option the moment they scan it. A noticeably older phone or a third-party scanner app might just show the raw text instead. That's a limitation of the scanning device's software, not something a more "advanced" QR generator could fix on its end, since the generator's only job was encoding the string correctly in the first place.
Generating a Contact QR Code Using the vCard Format
Contact cards work the same way, using a different recognized schema called vCard. A minimal working version looks like this:
BEGIN:VCARD
VERSION:3.0
N:Lastname;Firstname F
N:Full Name
TEL:+1234567890
EMAIL:you@example.com
ORG:Company Name
END:VCARD
The N: field is structured as last name, then first name, separated by a semicolon, while FN: is just the full display name as you'd want it to appear once saved. TEL: and EMAIL: should be self-explanatory, and ORG: is optional but useful on a business card. Every line matters, including BEGIN:VCARD and END:VCARD. Drop either one and most camera apps won't recognize the block at all.
Paste the complete block, line breaks included, into the content field and generate as normal. Scanning it on a phone whose camera app supports vCard recognition should prompt an "Add Contact" action rather than just displaying text. Support for this isn't universal across every camera app on every device, so if you're about to print this on five hundred business cards, it's worth thirty seconds to scan a test copy on both an Android phone and an iPhone first, rather than finding out after the print run that one platform handled it and the other didn't.
One Correction on the Output File Itself
It's worth being precise about what actually downloads when you click the button: a high-resolution PNG, not a vector graphic. PNG is a raster format made of fixed pixels, which holds up perfectly well for most printed uses (business cards, table tents, flyers, product packaging), but if you ever need to blow a code up to poster or billboard size, stretching that same PNG file will eventually introduce visible pixelation at the edges of the modules. The better move for anything printed that large is regenerating the code directly at a bigger pixel dimension rather than scaling up the smaller file after the fact.
Before You Print in Bulk
A couple of physical details affect whether any of this actually scans once it's off-screen and on paper. Keep the printed code at least 2 by 2 centimeters, roughly the size of a large postage stamp. Anything smaller asks a lot of budget phone cameras trying to resolve the individual modules. Stick to dark modules on a light background rather than inverting the color scheme, since older scanner hardware in particular struggles with reversed contrast. And leave a clear quiet zone (a blank border at least four modules wide) around the code itself, so a nearby logo or text block doesn't get mistaken for part of the matrix pattern.
Test every code you generate, link, Wi-Fi, or contact, on an actual phone before it goes to print. It takes ten seconds and it's the only way to know for certain that what scans on your screen scans the same way once it's sitting on a card in someone else's hand.