Skip to content
FlashScan Pro

URL, SMS, email, Wi-Fi, vCard: every content type a QR code holds

A QR code is just a container: a tour of the payload formats — URL, tel:, mailto:, sms:, WIFI:, vCard — and what the phone does with each one.

This article contains affiliate links: we may earn a commission if you use them, at no extra cost to you. This does not influence our recommendations.

A QR code is just a box: what matters is inside

A QR code doesn’t “do” anything by itself. It’s a container: it encodes a text string, and the phone reads that string and decides the action. https://… becomes “open link,” tel:… becomes “call,” WIFI:… becomes “join network.” Understanding these formats — the payloads — means understanding what you actually put in a code, and why some codes “don’t work.”

A tour of formats, with payloads

URL — the classic

https://example.com/offer

The action: open the browser. The generator automatically prepends https:// if you enter a bare domain — a payload that doesn’t start with a known scheme is treated as plain text by many phones, not as a link.

Phone — tel:

tel:+14155552671

Offers to call. Useful on service posters (“scan to reach the agency”). Keep the international +1… format: a local number scanned from abroad no longer dials correctly.

Email — mailto:

mailto:contact@example.com?subject=Quote&body=Hello

Opens the email client with recipient, subject, and body pre-filled. Spaces and accents go through URL encoding — the generator handles it.

SMS — sms:

sms:+14155552671?body=I%20am%20interested

Opens the SMS app with a pre-filled message — the user confirms sending. Supported on iOS and Android, though the action depends on the default SMS client.

Wi-Fi — WIFI:

WIFI:T:WPA;S:MyBox;P:password;;

Joins the network with no typing. Field-by-field format, with escaping of ; and : — full detail in Wi-Fi QR code.

Contact — vCard

BEGIN:VCARD
VERSION:3.0
N:Doe;Jane;;;
FN:Jane Doe
TEL:+14155552671
END:VCARD

Offers “Save contact.” The line-per-field structure and ;/, escaping are detailed in vCard QR code.

Geolocation — geo:

geo:48.8566,2.3522

Opens the map at the given coordinates. Handy for guiding people to a precise point — a venue, a hidden entrance — without making them type an address.

Plain text

Meeting room B, door code 4291

Any text: the phone displays it, to copy manually. Useful for access codes, references, instructions — as long as content stays reasonable.

The prefix is the contract

Notice the pattern across every format: the payload announces its type through a prefix — https://, tel:, mailto:, sms:, WIFI:, BEGIN:VCARD. That prefix is a contract between the generator and the phone: write it exactly (lowercase schemes, the right separators, proper escaping) and the phone offers the right action; break it and the payload degrades into inert text. It’s also why hand-typing payloads is error-prone — a generator that knows the formats produces the contract correctly every time.

How much text fits in a code?

Maximum capacity depends on the character type: at maximum size (version 40, level L), the standard reaches 7,089 digits, 4,296 alphanumeric characters, or 2,953 bytes in binary — enough for a small full text. But these figures are theoretical: every added character densifies the pattern, and beyond a few hundred characters the modules get so small that reading demands a large, sharp, well-lit code. In practice: short URLs, reasonable vCards, texts under ~300 characters.

What makes a payload fail

  • No scheme: www.example.com without https:// is often shown as text, not opened as a link.
  • URL-only scanner: some built-in scanners only recognize links; an sms: or a vCard shows raw or opens nothing. A scanner that displays content — like FlashScan Pro’s — is the workaround.
  • Content too long: beyond a few hundred characters the pattern gets very dense; at small print sizes, readability suffers (see print size).
  • Unescaped characters in structured formats (; in vCard or Wi-Fi) — serious generators escape them for you.

The payload isn’t the destination

A useful nuance for diagnosing “weird” codes: what’s decoded and what happens next are two different things. A code containing https://… can still lead elsewhere if the URL redirects. Conversely, a code displayed “for a website” may encode a tel: or plain text — only the decoded content is authoritative. That’s why a scanner showing the raw payload before opening anything is your best verification tool: it shows what’s actually encoded, not what the medium claims to encode.

And the “exotic” formats?

You’ll meet other payloads in the wild: geo: for GPS coordinates, tel: as seen, WIFI: for networks, BEGIN:VCARD for contacts, but also MATMSG: (alternative email), SMSTO:, or proprietary schemes (instagram://, paypal.me/…). The principle doesn’t change: the code carries a string, and the device — or the installed app — decides whether the scheme means anything. An unknown scheme simply displays as text.

In the generator

The standard mode takes text or URL (with automatic https://), Wi-Fi mode assembles the WIFI:, vCard builds the card, Event mode encodes the VEVENT, WhatsApp mode prepares a wa.me link with a pre-filled message, and batch processes URL lists. After generating, the copy button shows the raw payload produced — the best way to verify what’s actually encoded before printing. And to read any code you come across, the scanner shows its content in plain text before opening anything.

DYMO LabelWriter 550 — label printerDYMO LabelWriter 550 — label printerBarcode and address labels with no ink: direct thermal.affiliateSee on Amazon