Skip to content
ImgKiloImgKiloOpen tools

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.

Scan to text

What to encode

Style

Frame

  • Files never leave your device
  • Runs in your browser
  • Free, no signup

How it works

  1. 1

    Type recipient and message

    Country code without the +, then the number. Body is the prefilled SMS text.

  2. 2

    Check the SMSTO: payload

    We surface the encoded string above the preview. Verify before printing; most errors are missing country codes.

  3. 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

Marketing opt-in

'Scan to join our list.' Body prefilled with JOIN. Inbound SMS counts as consent.

Feedback

Customer feedback

'Text us a review.' Empty body. Customers write what they want.

Booking

Booking and reservations

Body 'Table for 4 at 7pm.' One-tap booking inquiry from a yard sign or window decal.

Support

Support fallback

When the call queue is long, 'Text us at any time' with body 'Order #' prefilled.

Events

Event check-in

QR at the entrance with body 'Arrived, name'. Front-of-house clerks tally arrivals from a single inbox.

Hospitality

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.

SMS QR code that prefills on iPhone and Android

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 more

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.

Yes. We encode the payload as `SMSTO:<number>:<body>`. This is the only format that opens the Messages app with both the recipient and the body prefilled on iOS and Android. The alternative `sms:?body=` form opens a blank message on iOS, which is why most other generators are unreliable.

Apple's iOS reads `sms:` body parameters inconsistently across the camera and third-party scanners. Android dialers split on whether the body delimiter is `?` or `;`. SMSTO sidesteps both by using a `:` separator inside the URI itself, and every major scanner has supported it since 2018.

Yes. Leave Body empty and the QR encodes `SMSTO:<number>`. Scans open the Messages app addressed to your number with a blank message draft. Useful when you want the customer to write their own text.

Letters, numbers, spaces, basic punctuation and emoji all encode safely. Avoid line breaks; some Android keyboards strip them. The body is a single line in the draft; the user can hit Enter once they start editing.

No. The QR opens the Messages app with the body prefilled and the recipient set. The user has to tap Send. This is by design; a malicious QR cannot silently send messages from your phone.

Not in one QR. The SMS spec only addresses a single recipient. For broadcast SMS, encode a URL QR that points at a hosted SMS form, or use an SMS marketing platform's link-tracking QR.

A single SMS is 160 GSM-7 characters or 70 UCS-2 characters (which covers most emoji and non-Latin scripts). Longer messages are sent as multipart SMS and concatenated. Carriers and devices handle that automatically; users do not notice. For QR practicality keep the body short; long bodies make the QR dense.

Most carriers do not let SMS senders pre-set a display name; the recipient sees their phone number. If your business needs a brand name, use a sender-ID-enabled SMS gateway (Twilio Programmable SMS, MSG91) and point the QR at a landing page that triggers the gateway-driven message.

Yes. A common pattern: print 'Scan to opt in. Message and data rates apply.' The QR opens an SMS draft addressed to your shortcode with a prefilled keyword like `JOIN`. The user taps Send; your platform records the opt-in.

Yes. The QR encodes the destination number and message body, same information you would print openly. The user has full control over whether to send.