Free Wi-Fi QR code API โ€” scan-to-join codes from a URL, no key

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:

The 10-second version

<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"
Wi-Fi QR code for network GuestCafe

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.

Why a dedicated Wi-Fi mode (the escaping problem)

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.

All the parameters

ParamWhat it does
ssidNetwork name, โ‰ค32 characters (the 802.11 limit). Presence of ssid switches Wi-Fi mode on; don't combine with data.
passwordPassphrase, โ‰ค63 characters (the WPA limit). Required unless the network is open.
securityWPA (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).
hidden1/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=.

Recipes

# 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

The password is in the URL โ€” think before you paste

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.

Honest comparison

MockbirdQuickChart /qrgoqr.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= onlyweb form, not an API
Payload escaping handledโœ” server-sideyour jobyour jobโœ” (in-browser)
Key / signupnonenonenonenone
PNG + SVGโœ”โœ”โœ” (+ GIF/JPEG/EPS)print/PDF via browser
Styling (logo, dot shapes)โœ˜ (colors only)โœ”โœ˜โœ˜
Deterministic bytesโœ”not guaranteednot guaranteedn/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.

Limits

โšก These URLs run on the shared 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 โ†’