SMS QR Code Generator
SMS QR code that prefills on iPhone and Android
Type the recipient number and the prefilled message. The generator encodes a `SMSTO:` payload, the one format that opens the Messages app reliably on iOS and Android. The user scans and only needs to tap Send.
What to encode
Style
Frame
- Files never leave your device
- Runs in your browser
- Free, no signup
How it works
- 1
Type recipient and message
Country code without the +, then the number. Body is the prefilled SMS text.
- 2
Check the SMSTO: payload
We surface the encoded string above the preview. Verify before printing; most errors are missing country codes.
- 3
Download PNG or SVG
PNG for digital, SVG for print. Both open the Messages draft on iOS and Android.
What this SMS QR generator does
SMSTO: not sms:
The only format that reliably prefills on both iOS and Android. `sms:?body=` opens blank on iPhone; SMSTO does not.
E.164 phone normalisation
Country code plus number gets cleaned into the international format every Messages app parses.
Body is optional
Leave it blank for free-text replies; prefill it for one-tap actions like JOIN or STOP.
Where this helps
Marketing opt-in
'Scan to join our list.' Body prefilled with JOIN. Inbound SMS counts as consent.
Customer feedback
'Text us a review.' Empty body. Customers write what they want.
Booking and reservations
Body 'Table for 4 at 7pm.' One-tap booking inquiry from a yard sign or window decal.
Support fallback
When the call queue is long, 'Text us at any time' with body 'Order #' prefilled.
Event check-in
QR at the entrance with body 'Arrived, name'. Front-of-house clerks tally arrivals from a single inbox.
Hotel concierge requests
QR in the room with body 'Room 304 needs '. Guests text the missing item, staff replies in one thread.
Tips that help
- 1
Include the country code
Scans from a phone roaming abroad fail without it. Always provide the country code in the form.
- 2
Keep the prefilled body short
One short line. Anything longer makes the QR dense and hurts scan reliability from a few feet away.
- 3
Test on iOS first
iOS is the strict one. If iPhone Messages opens with the body prefilled, Android will too.
- 4
Print 'Text us' label
Without context, the QR could be Wi-Fi or payment. Two words remove the guessing.
Why SMSTO: instead of sms:
Most QR generators encode SMS as `sms:<number>?body=<text>`. That payload is technically valid but unreliably parsed on iOS, and inconsistent on older Android dialers. The fix is `SMSTO:<number>:<body>`, a pre-RFC encoding that every major scanner supports because it is what Nokia and BlackBerry shipped in the original phone-feature era, and iOS / Android adopted it for compatibility.
The SMSTO format
The payload is `SMSTO:<phone>:<body>`. Phone is in E.164 with a leading `+`. Body is plain text, no URL-encoding needed, although we encode spaces and special characters that some older parsers still trip on.

Example: `SMSTO:+919876543210:I would like the takeout menu`. The recipient is set; the body is prefilled. iOS Messages, Google Messages, Samsung Messages and most third-party SMS apps parse it identically.
We surface the encoded payload above the preview. Verify it matches your intent before printing; the most common mistake is forgetting the country code.
When to leave the body blank
For free-text replies ('Tell us what you think'), leave the body empty. The Messages app opens addressed to your number, the user types whatever they want and hits Send.
For one-tap actions ('JOIN', 'STOP', 'BOOK'), prefill the body. The user only has to tap Send; friction is at its lowest.
Mixed approach: print 'Scan and text us. Add your name.' Body prefills 'Hi! My name is ' and the user adds the rest. Catches both the discoverability of the QR and the personalisation of the message.
Where the SMS QR earns its place
Marketing opt-in. 'Scan to join our list' with body 'JOIN'. The platform records the inbound SMS as consent.
Customer feedback. 'Text us a review' with body left empty. The shortcode goes to a sentiment-tagged inbox.
Booking and reservations. 'Text to reserve' with body 'Table for 4 at 7pm'. Manager replies with confirmation.
Customer support fallback. 'Phone busy? Text us.' QR opens the support number with body 'Order #' prefilled. Customers add the order number; support context arrives intact.
Read moreRead less
Costs and consent rules
SMS to a business number costs the same as a normal text to that number, usually free on a phone plan, possibly chargeable on pay-as-you-go.
Consent rules vary by country. In the US, TCPA requires explicit opt-in before sending marketing SMS to a number. The 'scan to opt in' QR is a documented consent mechanism if your terms note 'Message and data rates apply'.
GDPR and UK PECR require similar opt-in records. A QR-driven inbound SMS counts as positive consent for follow-up under most interpretations; keep the inbound text on file as evidence.
Frequently asked questions
Honest answers to what people ask before using this tool.
Further reading
Independent references if you want to go deeper on the formats and tradeoffs.
Related tools
- QR code generator
All payload types in one tool.
- Phone QR code generator
tel: QR for one-tap voice calls.
- Email QR code generator
mailto: QR with prefilled subject and body.
- Wi-Fi QR code generator
Auto-connect Wi-Fi QR alongside SMS opt-in.
- UPI QR code generator
Payment QR with optional amount and note.
- Compress to a target KB
Shrink the QR PNG for an email signature or upload form.