SMS QR Code Generator

Scanning opens the messaging app with your number and message filled in — handy for opt-ins, short codes and support requests.

Support for a prefilled message body has historically varied between platforms, so a code that fills the message on one phone may open an empty one on another. Test both before printing, and keep the message short enough that somebody will actually send it.

Used for
  • Keyword opt-ins and subscriptions
  • Service and maintenance requests
  • Parking and access requests
  • Voting and feedback lines
  • Signs where data coverage is poor
Content categories

Preview

Enter content to generate QR code

How SMS QR codes work

The code holds an SMSTO: instruction — the number, then the message body after a colon. Scanners have used this convention for years and hand it to the phone’s messaging app, which opens a draft addressed to you. Nothing is sent by the scan; the person presses send, and that press is what makes an SMS opt-in an opt-in.

What the code actually contains

Number and keyword, and the code holds:

smsto:+15550001234:FAULT 14

Number, colon, message. The colon is the separator, so any colon in the number is removed first, otherwise half the number would end up inside the message.

Why SMS still beats a form on some signs

A text message works on a weak signal that will not load a web page, on a phone with no data plan, and on handsets too old for anything else. For gates, parking lots, rural signage and industrial sites, that reliability is the whole argument. Where a page will load, a form usually collects better data.

The message body is the keyword

Whatever you pre-fill is what arrives, so make it something you can route on: a keyword, a site number, a machine ID. "FAULT 14" tells you what and where before you read a word of the rest. Keep it short — the body is encoded character for character and a long template both bloats the pattern and gets deleted.

Test on both platforms before printing

Handling of the SMSTO convention differs slightly between iOS, Android skins and third-party scanner apps: most open a draft, a few show the raw text. Scan your proof with a stock iPhone camera and a stock Android camera before committing to a print run, and print the number in words underneath so there is always a manual route.

Charges are the sender’s

A message sent to a normal mobile number costs the sender their usual rate. Short codes and premium numbers can cost considerably more, and in most markets you are required to say so. If the code goes on public signage, print the cost next to it.

Troubleshooting

The scan shows raw text instead of opening a message
That scanner does not act on the SMSTO convention. Stock camera apps on both platforms generally do; print the number in words beside the code so there is always a manual route.
The message arrives without the keyword
The sender cleared it before sending. Keep the keyword short enough that deleting it is more effort than sending it.

SMS QR code FAQs

No. The message is drafted and the sender presses send. That press is what makes it a genuine opt-in, which matters if you are collecting subscriptions.

Keyword opt-ins, service and fault requests, and anywhere a web page will not load reliably — parking lots, gates, rural signage. Anything that needs a reply from a number you can answer.

Standard SMS limits apply once it is sent, and longer text also makes the pattern denser. Keep the pre-filled part to a short keyword or reference.

Most stock camera apps on iOS and Android open a draft, but a few third-party scanners only display the raw text. Test with both platforms and print the number in words beside the code as a fallback.

The sender, at their normal rate — or considerably more for a short code or premium number. Say so on the sign if the code is public.

No. SMSTO: is an instruction to the messaging app, not a web address, so there is nothing for a redirect to intercept. If the number may change, print a short link to a page carrying a "text us" button instead, and make that link the dynamic one.