Skip to content

SMS QR Code Generator

Create a QR code that opens the user's texting app with your number — and optionally a prefilled message — ready to send. Perfect for SMS opt-ins, support hotlines, and 'text us' campaigns.

Your files never leave your device. No upload. No sign-up.
Running locally

An SMS QR code encodes an SMSTO: URI in the format SMSTO:<number>:<message>. When someone scans it, their phone opens the default messaging app with the number and message body prefilled, and they tap Send to actually deliver it. Great for opt-in campaigns (‘text JOIN to 12345’), support hotlines, quick surveys, and any print material where you want a one-tap SMS action. Use SMSTO: rather than the older SMS: form, which is parsed inconsistently across platforms. Write the number in full international format with a leading plus and no spaces or dashes, since a locally formatted number fails for anyone roaming. Message length is where this breaks: a body over about 160 characters may be split or silently truncated by the messaging app, and it also makes the pattern dense. Short codes work for opt-ins but are country-specific and will not resolve abroad.

01

How does a SMS QR code work?

The SMSTO: scheme was popularised by Nokia and is the format ZXing and most modern QR readers standardise on. iOS Camera and Android Camera both recognise SMSTO: and open Messages / Google Messages with the number and body prefilled. Shortcode support (five- or six-digit US shortcodes for opt-in campaigns) is carrier-dependent — most major US and EU carriers accept them from SMSTO: URIs. Message body characters are passed through raw and can include Unicode, emoji, line breaks, and carrier-specific keywords like ‘JOIN’ or ‘STOP’.

02

Common mistakes and limitations of SMS QR codes

The user still taps Send — no phone will silently dispatch SMS from a scan. RCS-only (Rich Communication Services) messages don't fire from SMSTO: URIs; the phone always falls back to standard SMS. iMessage on iPhone honours the number but may route through iMessage instead of SMS if the recipient is another iPhone — usually fine, but worth testing for shortcode campaigns which are SMS-only. Some very old handsets ignore SMSTO: and only understand the older sms: variant; if you're printing for a very broad audience, include the phone number as plain text as a backup.

03

Where SMS QR codes get used in practice

Opt-in marketing is the classic deployment: a poster or receipt carrying 'scan to text JOIN' with the shortcode and keyword prefilled. Because the user sends the message from their own handset, the opt-in is verifiable and the number is confirmed, which is exactly what SMS marketing compliance requires. Charities use the same mechanism for donation keywords, and broadcasters for voting and competition entries. Logistics and field service deploy them for status updates — a QR on a delivery note that texts a tracking reference to a dispatch number. The operational constraints are regulatory rather than technical. SMS marketing is governed by consent rules in most jurisdictions, and a scan-to-text opt-in only counts as consent if the message the user sends genuinely expresses it and the confirmation reply explains how to stop. The second constraint is that shortcodes are leased per country, so a campaign crossing borders needs either separate codes per market or a standard long number, which changes the payload and therefore the printed artwork.

04

Printing a SMS QR code so it actually scans

SMSTO: payloads are compact — a number plus a short keyword is often under 30 characters, producing one of the smallest and most robust QR codes of any type. These scan reliably from 1.5 cm and tolerate poor printing, which is why they work well on receipts, thermal labels and low-quality flyers where other payload types would fail. That robustness is worth exploiting. Thermal printing on till receipts has low contrast and the paper darkens with age, so a low-density code is a genuine advantage for opt-in campaigns printed at point of sale. The thing to test before a print run is the shortcode. Shortcodes are carrier-routed and behave differently between networks and countries, so scan the printed proof on at least one iPhone and one Android on different carriers. A QR that opens Messages with the right number and body on your own phone can still fail on another network, and discovering that after printing ten thousand flyers is expensive.

Questions8

SMS QR code FAQ

Does the SMS send automatically?

No. The phone opens Messages with the number and body prefilled; the user taps Send to actually deliver the SMS.

Why include the country code?

International country codes (e.g. +1 for the US, +44 for the UK) make the QR work when scanned from any country. Without one, only local numbers route correctly.

Does this work for shortcodes?

Yes — most major US and EU carriers accept 5- and 6-digit shortcodes from SMSTO: URIs. Test on at least one iPhone and one Android before printing at scale.

Can I use emoji in the message?

Yes. QR codes support full Unicode, and modern SMS supports emoji via UCS-2 / GSM 7-bit fallback.

How long can the message be?

The QR itself holds up to a few thousand characters, but the SMS message you actually send is limited by carrier concatenation rules (usually 160 characters per SMS segment for GSM 7-bit).

Will this send through iMessage on iPhone?

It depends on the recipient — iMessage routes automatically for other iPhones, otherwise it falls back to SMS. For shortcode campaigns (SMS-only), the phone uses standard SMS.

Is the message stored on your servers?

No. The QR is generated locally in your browser and the payload is encoded directly into the image — nothing is logged.

Can I include line breaks?

Yes — line breaks in the message textarea are preserved in the SMSTO: payload and shown as-is when the messaging app opens.

SMS QR field reference

FieldURI segmentNotes
Recipient numberSMSTO:<number>Include country code (e.g. +1)
Message body:<message>Unicode + emoji supported
ShortcodeSMSTO:12345Carrier-dependent

Full example: SMSTO:+15551234567:JOIN

Last updated:

References: Nokia SMSTO URI documentation, IETF draft-wilde-sms-uri, ZXing SMS format documentation.

Adjacent4

You might also like