QR.technology Free · Private · No sign-up
// use case · phone & sms

Phone & SMS QR codes

Scan to call, or scan to text with the message already written. Two closely related formats: tel: dials a number, and SMSTO: opens a text with optional pre-filled content. Here's how each works and the formatting that keeps them reliable.

Formats: tel: & SMSTO:Opens dialer / SMSStatic · permanent

The tel: format (call)

A phone QR code uses the tel: scheme. Scanning it loads the number into the dialer — the person still presses call.

tel:+15550100123

Always use international format with the + and country code (here, +1 for North America). A local-only number like 555-0100 may not dial for someone in another country, and punctuation such as spaces or dashes is best omitted from the payload.

The SMSTO: format (text)

An SMS QR code pre-fills a text message. The widely supported form is SMSTO:, which takes a number and an optional message separated by a colon:

SMSTO:+15550100123:Send me the brochure

Scanning opens the messaging app with the recipient and body filled in; the person taps send. The SMSTO: syntax is the most consistent across iOS and Android — other variants like sms: with a ?body= parameter exist but behave less predictably between platforms.

When to use them

  • Call now — a tel: code on a service van, billboard, or product so customers reach you instantly.
  • Text to order or enquire — an SMSTO: code with a pre-filled keyword like JOIN or MENU.
  • Opt-ins and shortcodes — pre-fill the exact message a campaign expects.
  • Support — let people reach a help line by call or text without saving the number first.

Gotchas worth knowing

It prepares; the user confirms

Neither format auto-dials or auto-sends — the phone loads the number or draft and waits for a tap. This is a built-in safeguard against malicious codes placing calls on your behalf.

  • Use the + and country code. It's the only format that works regardless of where the scanner is.
  • Keep SMS messages short. Long pre-filled text inflates the code and may be truncated by some apps.
  • Test on both platforms. SMS pre-fill behavior differs slightly between iPhone and Android — confirm yours before printing.
  • Avoid premium or short codes you don't control. And never publish a code that texts a number without the recipient's consent.

International dialing and reach

Phone and SMS codes are often scanned by people who aren't where you are, so formatting for a global audience pays off:

  • Always lead with the country code. +44, +1, +61 — the + tells the phone to dial internationally from anywhere.
  • Strip formatting characters. Spaces, brackets, and dashes are for human eyes; keep the payload to + and digits for the cleanest result.
  • Watch carrier charges. An SMSTO: code that texts a premium or international number can cost the sender money — say so near the code.
  • Consider a contact card instead. If you want people to keep your number, not just dial once, a vCard QR code saves it to their address book in one scan.

For chat-based contact rather than a phone call, a WhatsApp code opens a conversation with a pre-filled message instead.

Make a phone or SMS QR code

Use the Phone tab for a tel: code, or the SMS tab to add a pre-filled message. Enter the number in international format and export the code.

Generate a phone or SMS QR code

Pick the Phone or SMS tab, enter an international-format number, and export a print-ready code — free and private.

Open the generator

Frequently asked questions

Will scanning the code call or text automatically?

No. A tel: code loads the number in the dialer and an SMSTO: code opens a pre-filled draft. The person taps to call or send — phones never do it silently.

What number format should I use?

International format with the + and country code, e.g. +15550100123. It works no matter where the person scanning is located.

What's the difference between SMSTO: and sms:?

SMSTO:number:message is the most consistently supported way to pre-fill a text across iPhone and Android. The sms: variant with a ?body= parameter exists but behaves less predictably.

Can I pre-fill the text message?

Yes. Add it after the number with a colon in the SMSTO: format. Keep it short so the code stays easy to scan and the message isn't truncated.