QR Code Use Cases: WiFi, vCard, and Calendar Events
A QR code is not just a shortcut to a URL. The same scan mechanic can connect a guest to your WiFi without typing a password, add a contact to a phone's address book with a single tap, or drop a meeting into someone's calendar automatically. Each use case has a specific text format the phone expects — this guide covers the three most practically useful ones.
WiFi QR codes
A WiFi QR code encodes network credentials in a plain-text format that iOS (since iOS 11) and Android (since Android 10) recognize and act on automatically. When a user scans the code, the phone displays a prompt asking whether to join the network — no typing required.
The WIFI: URI format
The format is simple enough to write by hand:
WIFI:T:WPA;S:MyNetworkName;P:MyPassword;;
| Field | Key | Values | Required? |
|---|---|---|---|
| Encryption type | T: |
WPA, WEP, nopass |
Yes |
| SSID (network name) | S: |
Your network name | Yes |
| Password | P: |
Your WiFi password | If not open |
| Hidden network | H: |
true or false |
No (default: false) |
The string is terminated by two semicolons (;;). Fields that are omitted are simply left out. An open network (no password) uses T:nopass and omits the P: field entirely:
WIFI:T:nopass;S:CafeGuest;;
Special characters in SSIDs and passwords
If your network name or password contains a backslash (\), semicolon (;), comma (,), double-quote ("), or colon (:), escape it with a backslash. For example, a password of p@ss;word becomes p@ss\;word in the QR string.
Alternatively, wrap the SSID or password in double quotes if it contains special characters: S:"My Network Name";. Only one escaping method should be used per value — do not mix quotes and backslash escapes.
Hidden networks
If your network does not broadcast its SSID, add H:true; to the string. The phone will attempt to connect to the named network without requiring it to appear in the scan list:
WIFI:T:WPA;S:HiddenNet;P:secret;H:true;;
WPA2 vs WPA3
The WIFI: URI format predates WPA3. Both WPA2-Personal and WPA3-SAE networks use T:WPA — the phone negotiates the specific protocol after connecting. There is no separate WPA3 type in the format.
Where to display WiFi QR codes
Common placements: framed on a table in a cafe or restaurant, on a welcome card in a hotel room, on a chalkboard at an event venue, printed on a sticker affixed to a router. Because the code contains your actual WiFi password, be thoughtful about whether you are comfortable with anyone who can photograph the code being able to join your network. For business networks with sensitive data, create a dedicated guest VLAN and use that SSID in the QR code.
Dynamic vs. static WiFi QR codes
If you change your WiFi password, any existing WiFi QR code becomes invalid and must be regenerated. One approach: use a dynamic QR code service that redirects to a page where guests enter a rotating password — but this adds friction. For most home and hospitality uses, a static code is simpler. Use a strong but memorable password and change it on a reasonable schedule.
vCard QR codes (contact sharing)
A vCard QR code encodes a contact in the vCard 3.0 format. When scanned, iOS and Android both offer to add the contact to the phone's address book, pre-populating all the fields without any manual entry. This is particularly useful on business cards, conference name badges, and email signatures.
vCard 3.0 format
A minimal vCard looks like this:
BEGIN:VCARD
VERSION:3.0
FN:Jane Smith
ORG:Acme Corporation
TITLE:Head of Product
TEL;TYPE=WORK,VOICE:+49 30 12345678
EMAIL:jane.smith@acme.example
URL:https://acme.example
END:VCARD
| Field | Property | Example value | Notes |
|---|---|---|---|
| Full name | FN: |
Jane Smith | Required. Displayed name. |
| Structured name | N: |
Smith;Jane;;; | Last;First;Middle;Prefix;Suffix |
| Organization | ORG: |
Acme Corporation | Company name. |
| Job title | TITLE: |
Head of Product | |
| Phone | TEL;TYPE=WORK,VOICE: |
+49 30 12345678 | Types: WORK, HOME, CELL, FAX, VOICE |
EMAIL: |
jane@acme.example | Multiple EMAIL lines allowed. | |
| Website | URL: |
https://acme.example | |
| Address | ADR;TYPE=WORK: |
;;Musterstrasse 1;Berlin;;10115;DE | PO;Extended;Street;City;State;ZIP;Country |
| Note | NOTE: |
Met at QR Summit 2026 | Free text. |
Character limits and code size
vCard data encodes as UTF-8 bytes. A complete professional vCard — name, title, organization, two phone numbers, email, website, and an address — typically runs to 300–500 bytes. At error correction level M, this requires a version 9 or 10 QR code (57×57 modules). That is a larger code than a URL QR code, which is worth planning for on business card layouts: a 3×3 cm minimum print size applies, and 3.5×3.5 cm is more comfortable.
If your contact data pushes past 500 bytes, consider whether all fields are necessary. Alternatively, encode a URL that points to a dedicated contact page or a hosted .vcf file — the user scans the code, opens the page, and downloads the contact from there. This also allows you to update the contact information after the card has been printed.
vCard vs. URL for business cards
Both approaches are valid. A vCard QR code adds the contact directly with no web dependency — it works offline and requires no server. A URL QR code can point to a contact page, a LinkedIn profile, or a personal website with richer information than a vCard allows. The right choice depends on your audience: vCard is better when recipients want to save the contact immediately; URL is better when you want to drive people to a landing page or keep contact details updatable without reprinting cards.
Calendar event QR codes (VEVENT)
A calendar QR code encodes an event in the iCalendar format (RFC 5545). When scanned, iOS and Android both offer to add the event to the default calendar application. This is useful for conference sessions, meetup announcements, product launches, and any event where you want to reduce friction between "I heard about this" and "it is in my calendar."
VEVENT format
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
SUMMARY:QR Summit 2026
DTSTART:20261015T090000Z
DTEND:20261015T180000Z
LOCATION:Musterstrasse 1\, 10115 Berlin
DESCRIPTION:Annual conference on QR technology and digital print.
URL:https://qronimo.app/events/summit-2026
END:VEVENT
END:VCALENDAR
| Property | Format | Required? | Notes |
|---|---|---|---|
SUMMARY |
Plain text | Yes | Event title. Keep short for calendar display. |
DTSTART |
YYYYMMDDTHHmmssZ |
Yes | Start date/time. Z suffix = UTC. |
DTEND |
YYYYMMDDTHHmmssZ |
Recommended | End date/time. Omit for all-day (use DATE form). |
LOCATION |
Plain text | No | Escape commas with backslash: \, |
DESCRIPTION |
Plain text | No | Long text; escape newlines with \n |
URL |
Full URL | No | Link shown in calendar detail view. |
ORGANIZER |
CN=Name:MAILTO:email |
No | Organizer contact information. |
Timezone handling: UTC vs. floating vs. TZID
The Z suffix on a timestamp means UTC. This is the safest choice for QR codes because it is unambiguous and works correctly on every device regardless of the user's local timezone setting. The device will display the event in the user's local time by converting from UTC.
A floating time has no timezone suffix at all — for example DTSTART:20261015T090000. The device interprets this as "9am in whatever timezone the device is currently in." This is appropriate for a recurring alarm or a reminder with no fixed geographic context, but not for a conference session that starts at 9am Berlin time regardless of where the attendee is.
The TZID parameter allows you to specify a named timezone explicitly: DTSTART;TZID=Europe/Berlin:20261015T090000. This is technically the most correct approach for a geographically fixed event, but it requires a timezone definition block (VTIMEZONE) in the calendar data, which adds significant length to the QR payload. For most QR code uses, UTC timestamps are simpler and equally correct.
All-day events
For a full-day event, use the DATE form without a time component:
DTSTART;VALUE=DATE:20261015
DTEND;VALUE=DATE:20261016
The DTEND for an all-day event is exclusive — the day after the last day of the event. A single-day event on October 15 therefore has DTEND of October 16.
iOS vs. Android behavior differences
Both platforms handle standard VCALENDAR/VEVENT QR codes, but behavior differs slightly. iOS Camera presents a "Create Event" overlay immediately on scan. Android's Google Lens may open Google Calendar's event creation view rather than adding directly. In both cases the event details are pre-populated; the user confirms before anything is saved.
Neither platform adds the event without user confirmation — this is a deliberate privacy and security decision. QR calendar events cannot silently add themselves to a calendar.
Hosted .ics as an alternative
For events with long descriptions, multiple attendees, or recurring schedules, consider hosting an .ics file on a server and encoding the URL in the QR code instead of the raw VCALENDAR data. When the user opens the URL, the device offers to import the calendar file. This removes the QR code size limit and allows updating event details after the code is printed.
Choosing the right use case
The three use cases above cover the most practically useful non-URL QR types. A few decision heuristics:
- WiFi QR code — any context where you want guests to join a network without you telling them the password verbally or in writing. Hospitality, offices, co-working spaces, retail dressing rooms.
- vCard QR code — any context where you want someone to save your contact details with one scan. Business cards, conference badges, trade show booths. Use URL instead if your contact information changes frequently or you want to track engagement.
- VEVENT QR code — any printed or displayed announcement of a time-limited event. Conference session schedules, concert posters, product launch invitations. Use a hosted .ics URL for complex or recurring events.
For all three use cases, error correction level M is sufficient in most environments. If the code will carry a logo or be displayed in a high-wear context, use level H as described in the error correction guide.
Generate any of these QR types
QRonimo's generator supports URLs, plain text, and all the data formats described on this page. Everything is generated client-side — no WiFi passwords or contact data ever leaves your browser.
Open the QR Code Generator →