712Tools
4 min read

QR code formats: encoding Wi-Fi, contacts, calendars, and payments

A QR code is just text โ€” but the right prefix turns it into a Wi-Fi login, a saved contact, or a calendar invite. Here are the standard formats worth knowing.

A QR code is a text container

Everything a QR code can do is really about the text inside it. Scanners look at the first few characters and decide how to interpret the payload:

  • http:// or https:// โ†’ open a URL
  • WIFI: โ†’ connect to Wi-Fi
  • BEGIN:VCARD โ†’ save as contact
  • BEGIN:VEVENT โ†’ add to calendar
  • mailto: โ†’ compose email
  • tel: โ†’ dial a phone number
  • sms: โ†’ open SMS
  • geo: โ†’ open in a map

Anything else is treated as plain text. Nothing here requires proprietary APIs; every format below is a public standard.

Wi-Fi

The de-facto format, supported by iOS, Android, and every modern camera:

WIFI:T:WPA;S:MyNetwork;P:MyPassword;;

The fields:

  • T โ€” auth type: WPA, WEP, or nopass (open network).
  • S โ€” SSID (network name).
  • P โ€” password (omit for open networks).
  • H:true โ€” optional, marks the network as hidden.

Special characters (\, ;, ,, :, ") in the SSID or password must be escaped with a backslash. Trailing ;; is required.

vCard (contacts)

vCard 3.0 is the safest version โ€” every scanner understands it:

BEGIN:VCARD
VERSION:3.0
FN:Ada Lovelace
ORG:Analytical Engines
TEL:+441234567890
EMAIL:ada@example.com
URL:https://example.com
END:VCARD

Keep it short โ€” QR codes have a hard capacity limit (about 2,900 bytes at maximum size with lowest error correction). Long vCards produce dense, unscannable codes.

Calendar events (iCalendar)

BEGIN:VEVENT
SUMMARY:Product Launch
DTSTART:20260901T140000Z
DTEND:20260901T150000Z
LOCATION:HQ Boardroom
DESCRIPTION:Kickoff meeting
END:VEVENT

Dates use the compact ICS format โ€” no dashes, no colons, Z for UTC. Some scanners want the full VCALENDAR wrapper; most accept a bare VEVENT.

URL โ€” the boring but most-scanned format

Just paste the URL. Two tips:

  1. Uppercase HTTPS URLs compress better. QR codes have a special "alphanumeric" mode that packs A-Z, 0-9, and a few symbols more densely than the "byte" mode used for mixed-case text. HTTPS://EXAMPLE.COM/PATH produces a smaller, denser code than https://example.com/path. In practice most people don't bother โ€” but for print, where scanning distance matters, it helps.
  2. Add UTM parameters if you need to measure QR-driven traffic. The QR itself is untrackable; the URL it encodes isn't.

Payments

Region-specific and evolving:

  • UPI (India): upi://pay?pa=merchant@bank&pn=MerchantName&am=100.00&cu=INR
  • EMVCo QR (global standard, used by PayNow, PromptPay, etc.): a structured format with tag-length-value fields โ€” usually generated by payment SDKs, not by hand.
  • PayPal.me link: just a URL โ€” https://paypal.me/username/25.

Error correction: pick the right level

QR codes reserve some bits for error correction. Four levels:

  • L (7%) โ€” smallest code, minimal damage tolerance. Fine for screens.
  • M (15%) โ€” default. Handles small print imperfections.
  • Q (25%) โ€” for outdoor use, faded labels.
  • H (30%) โ€” required if you want to overlay a logo in the center.

Higher levels mean a denser code that stores less data. If your data barely fits at level M, dropping to L helps; if the code needs to survive rain, go H.

Making a QR safely

QR Code Generator runs entirely in your browser โ€” the content you're encoding (Wi-Fi passwords, private URLs, contact details) never touches a server. It downloads as PNG (screens, social) or SVG (print, unlimited scaling).

Related tools:

  • URL Encoder โ€” for parameters that need to survive being embedded in the QR's URL.
  • Base64 Encoder โ€” for embedding small images in QR-directed vCards.

Tools mentioned in this post