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.
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 likeJOINorMENU. - 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
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 generatorFrequently 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.