# How to make a QR code work offline

> Make the payload the data itself. WiFi, vCard, plain text, calendar and coordinate codes act entirely on the scanning phone and work in airplane mode; URL codes need a network to be useful. The trade is capacity — everything must fit in the code, so payloads stay short and codes get denser.

Source: https://useqr.app/docs/how-to/how-to-make-a-qr-code-work-offline · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Scanning is always offline — acting sometimes isn't

The decode step never touches a network: the camera reads the modules and reconstructs
the payload entirely on the phone. What needs connectivity is *what happens next*, and
that depends solely on the payload type. A QR code is not inherently a link; it is a
container. Put the actual data in the container and there is nothing left to fetch.

## Payload types by offline behaviour

| Payload | Works offline? | What the phone does |
|---|---|---|
| [WiFi](/wifi-qr-code) | **Yes** | Joins the network — this one *creates* connectivity |
| [vCard](/vcard-qr-code) / [MeCard](/mecard-qr-code) | **Yes** | Saves the contact locally |
| [Plain text](/text-qr-code) | **Yes** | Displays the text |
| [Calendar event](/calendar-qr-code) | **Yes** | Adds the event to the local calendar |
| Phone / [SMS](/sms-qr-code) | Partly | Composes the call or message; sending needs signal |
| [Location](/location-qr-code) | Mostly | Coordinates open in the maps app; map tiles may need data unless cached |
| URL | **No** | Nothing useful without a network |
| Payments (UPI, PIX) | No | The payment app must reach the payment rails |

## Where offline codes earn their keep

- **Places without signal**: plant rooms, basements, lift shafts, rural sites. An
  asset label whose payload is the asset data as text works where a cloud-lookup label
  is a brick — the pattern behind [QR asset tagging](/docs/ecommerce/qr-code-asset-tagging).
- **WiFi onboarding** — the canonical case: the guest has no connectivity *until* the
  scan, so the code must carry the credentials itself. Print it from the
  [WiFi card maker](/wifi-card).
- **Events and travel**: a calendar-event code on an invitation, a vCard on a
  conference badge, both scanned in venues and planes where data is absent or roaming.
- **Emergency information**: contact and medical basics as text on a helmet sticker or
  tag — readable by any phone, dependent on nothing.

## The trade: capacity and density

An offline payload must carry **everything**, and capacity is finite — 2,953 bytes at
the absolute ceiling, with practical print sizes wanting far less (the full numbers are
in the [capacity table](/docs/reference/qr-code-capacity-table)). A vCard with four
fields is fine; your entire brochure is not. And the more you pack in, the denser the
grid, the bigger the print needs to be. The discipline: include what the phone must
*act on*, cut what a person could look up later.

Two side notes worth knowing. First, offline payloads are often sensitive (WiFi
passwords, personal contact data) — generate them with a
[client-side generator](/docs/security/client-side-vs-server-side-qr-generation) so the
data never crosses the wire; UseQR's static codes are generated entirely in your
browser, and the app itself keeps working offline after first load, so you can make a
code on a plane. Second, an offline code [never expires](/docs/basics/do-qr-codes-expire) —
there is no server whose lease can lapse — but there is also nothing to update: a
changed WiFi password means a reprint.

## FAQ

### Do QR codes work without internet?
Scanning always works offline — decoding happens on the phone. Whether the result is useful depends on the payload: WiFi, contact, text, calendar and coordinate codes act locally; a URL code needs a network to open its destination.

### How do I make a QR code that works in airplane mode?
Encode the data itself rather than a link to it: the WiFi credentials, the vCard, the text. If the phone can act without fetching anything, the code works with radios off.

### Can I put a whole document in a QR code?
Only a very small one. The hard ceiling is 2,953 bytes, and codes near it are impractically dense for print. Encode the essential facts as text, or accept a URL and its network dependency.

### Does an offline QR code ever expire?
No — with no server involved there is nothing to lapse. The flip side is that the data is frozen in ink: if the password or phone number changes, you print a new code.

## Try it

- https://useqr.app/wifi
- https://useqr.app/vcard
- https://useqr.app/text
- https://useqr.app/location
