Point a phone camera at the right QR code and it offers to join the Wi-Fi network โ no typing a 20-character passphrase off the router sticker. Cafรฉ table tents, guest-room welcome cards, Airbnb host sheets, office visitor desks, event posters: same trick everywhere. Generator websites make these one at a time; if you're rendering them from an app, a template, or a script for fifty meeting rooms, you want an API.
Mockbird's QR endpoint has dedicated Wi-Fi parameters โ you pass the network name and password, the server builds the payload:
<img src="https://mockbird.mockbird.workers.dev/m/demo/qr?ssid=GuestCafe&password=latte-art" width="256">
# or download it
curl -o wifi.png "https://mockbird.mockbird.workers.dev/m/demo/qr/400?ssid=GuestCafe&password=latte-art"
Scan that with any modern phone camera and it prompts to join GuestCafe. No key, no signup, no watermark โ and the same URL returns the same bytes forever, so it's safe to cache, print, and re-render in build pipelines.
Wi-Fi QR codes encode a plain-text payload that phone cameras recognize:
WIFI:T:WPA;S:GuestCafe;P:latte-art;;
Simple โ until the network name or password contains ; , : " or \. Those are structural characters in the payload and must be backslash-escaped, and then the whole string must be URL-encoded to survive a query string. Two layers of escaping is exactly the kind of thing that works in the demo and breaks on the one router whose passphrase contains a semicolon. With ?ssid= + ?password= you do neither โ standard URL encoding of your values is all that's left, and the server handles the payload layer:
# password is `latte;art` โ no payload escaping on your side, just normal URL encoding
โฆ/qr?ssid=Guest%20Cafe&password=latte%3Bart
# raw ?data= still works if you'd rather build the payload yourself
โฆ/qr?data=WIFI%3AT%3AWPA%3BS%3AGuest%20Cafe%3BP%3Alatte%5C%3Bart%3B%3B
Those two URLs return byte-identical images โ the Wi-Fi params are sugar over the same encoder, not a different code path.
| Param | What it does |
|---|---|
ssid | Network name, โค32 characters (the 802.11 limit). Presence of ssid switches Wi-Fi mode on; don't combine with data. |
password | Passphrase, โค63 characters (the WPA limit). Required unless the network is open. |
security | WPA (default), WEP, or nopass for open networks (open/none accepted as aliases). WPA2/WPA3-Personal networks use WPA โ it's the payload format's umbrella value for "has a passphrase", and readers treat it that way (WPA2/WPA3 as input are mapped for you). |
hidden | 1/true if the SSID isn't broadcast โ the phone then knows to probe for it. |
Everything from the base QR endpoint composes: /qr/:size or ?size= (64โ2000), ?format=svg or .svg, ?ecc=L|M|Q|H, ?margin=, ?fg=/?bg=. | |
# open network (no password prompt, phone just joins)
โฆ/qr?ssid=Library%20Guest&security=nopass
# hidden network
โฆ/qr?ssid=BackOffice&password=s3cret-pass&hidden=1
# print-quality poster: bigger, high error correction (survives coffee stains + staples)
โฆ/qr/800?ssid=GuestCafe&password=latte-art&ecc=H
# crisp vector for a PDF welcome card
โฆ/qr.svg?ssid=GuestCafe&password=latte-art
A printable welcome card is a dozen lines of HTML:
<div style="text-align:center;font-family:sans-serif;border:1px solid #ccc;
border-radius:12px;padding:24px;width:280px">
<h2>Welcome! Get online</h2>
<img src="https://mockbird.mockbird.workers.dev/m/demo/qr/220?ssid=GuestCafe&password=latte-art"
width="220" height="220" alt="Scan to join our Wi-Fi">
<p>Network: <b>GuestCafe</b><br>Password: <b>latte-art</b></p>
</div>
And a batch โ one code per meeting room โ is a shell loop:
> for room in alpha beta gamma; do
curl -s -o "wifi-$room.png" \
"https://mockbird.mockbird.workers.dev/m/demo/qr/400?ssid=Office-$room&password=changeme-$room&ecc=Q"
done
A Wi-Fi QR code's entire purpose is to hand out the passphrase, so anyone who can scan the printed code has the credentials โ that part is by design. But the URL contains the password too: it will sit in your browser history, your shell history, and any proxy logs between you and us. Mockbird redacts password= from its own request inspector (on every project โ the shared demo project's inspector is public, so this matters), and image responses carry no copy of the payload beyond the code itself. For a real office network, generate the image once with curl -o, keep the file, and don't embed the live URL in anything public. For guest networks whose password is on a chalkboard anyway, embed away.
| Mockbird | QuickChart /qr | goqr.me (api.qrserver.com) | wificard.io | |
|---|---|---|---|---|
| Dedicated Wi-Fi params in the API | โ ?ssid=/?password=/?security=/?hidden= | โ โ build + escape the WIFI: string yourself in ?text= (their web builder does it for you interactively) | โ โ ?data= only | web form, not an API |
| Payload escaping handled | โ server-side | your job | your job | โ (in-browser) |
| Key / signup | none | none | none | none |
| PNG + SVG | โ | โ | โ (+ GIF/JPEG/EPS) | print/PDF via browser |
| Styling (logo, dot shapes) | โ (colors only) | โ | โ | โ |
| Deterministic bytes | โ | not guaranteed | not guaranteed | n/a |
Being upfront: QuickChart documents the WIFI: format well, has an interactive Wi-Fi builder on their site, and supports logo embedding and fancy dot styles we don't โ if you want a branded code, use it. goqr.me has run a reliable free QR endpoint for over a decade and can also decode codes. wificard.io is a lovely open-source page for printing a one-off fridge card โ if you need exactly one code and no automation, it's the fastest path. Mockbird's angle is the API case: credentials in, image out, escaping handled, deterministic output, and the endpoint lives next to a full mock REST API, placeholder images, avatars, OG cards and charts under one project URL.
ssid โค32 chars, password โค63 chars (the real-world 802.11/WPA limits โ longer values wouldn't work on the router either).?ecc=H for anything that gets printed.?format=svg beyond that.demo project and work forever. Want your own namespace (and a full mock REST API + image endpoints alongside it)? One click creates a project โ no signup.Full reference in the docs. More image guides: QR code API ยท placeholder image API ยท OG image API ยท chart image API ยท avatar API ยท identicon API. Create your API โ