An SMS QR opens the user's text-messaging app with your phone number — and optionally a pre-written message — already filled in. They tap once to send.
We encode in the SMSTO: format, which both iOS and Android parse reliably. Older Android versions, in particular, are less consistent with the alternative sms: format.
The code is generated by JavaScript running on your device. We don't host it, log it, or send it anywhere. Close the tab before downloading and nothing is left behind.
At a glance
| Payload format | SMSTO:<number>:<message> (de-facto format, parsed by iOS and Android) |
|---|---|
| Alternative scheme | sms: URI per RFC 5724 — less consistent on older Android — RFC 5724 |
| Number format | International E.164 with leading + (max 15 digits) |
| Message length | 160 GSM-7 characters per SMS segment; 70 for Unicode text |
| Scan behavior | Opens the compose screen pre-filled; the user must press Send |
“This memo specifies the Uniform Resource Identifier (URI) scheme 'sms' for specifying one or more recipients for an SMS message.”
When to use it
Common cases: opt-in keywords for marketing lists ('Text JOIN to start'), customer service shortcuts, voting and polling on event signage, two-way support without a public phone number.
Include the country code in international format (+1, +44, etc.) so the message routes correctly regardless of where the scanner is.
Charges
Sending the message costs whatever the user's carrier normally charges for SMS — usually free on a phone plan, but rarely metered. We can't change that.
Receiving the message is on you. If you're using an SMS gateway or a shortcode, double-check the receive cost there.
Frequently asked questions
- Does scanning send the message automatically?
- No. Scanning opens the compose screen. The user has to press Send.
- Will it work without a pre-filled message?
- Yes. If you leave the message blank, the compose screen opens with just the number filled in.
- What if the user is on iMessage or WhatsApp?
- It still opens the SMS/texting app. To target WhatsApp specifically, encode a WhatsApp deep-link URL using the URL QR type instead.