Skip to the generator

SMS QR code generator

Open a text message to your number with the message already written.

Include the country code so it works from anywhere.

Optional. Appears in the message box, ready to send.

Your QR code appears here

Start typing and it updates as you go.

PNG is 2048px. SVG scales to any size, which is what print wants.

Design
Colours

Or start from a pair that scans well:

Module shape

The empty border around the code. 4 is the standard.

Recovers about 15% damage. The usual choice.

Centre logo

Optional. Keep it simple - a mark reads better than a wordmark at this size.

What is actually in an SMS QR code

An SMS QR code holds one line of text: the word SMSTO, the phone number, and the message, separated by colons. The scanner recognises the prefix, opens the messaging app, fills in the recipient and drops your wording into the message box. Nothing is sent - the person reads it and taps send, or does not.

The prefix matters more than it looks. There is also an sms: URI scheme, and it is the one most people would reach for, but platforms disagree about whether the message body is introduced with a question mark or an ampersand. Pick either and the message half is silently dropped on one of the two big platforms while working perfectly on the machine you tested with. SMSTO is the older convention that scanning apps actually implement consistently, so that is what this generator writes.

The prefilled wording is the whole point of the format. Keyword campaigns - text JOIN to sign up, text the bay number to pay for parking - fail on typos, and a QR code that fills the keyword in exactly removes that failure. It also means the number and the message are both fixed at the moment you print. There is no way to change either afterwards.

The text inside the code

SMSTO:+15551234567:I would like to book a table

Good for

  • A text-to-join sign-up poster
  • A parking bay payment sign
  • A trade van sticker
  • A poll card at an event
  • A delivery instructions notice at a gate
  • A callback request card in a showroom

Worth knowing before you print it

  • Include the country code

    Write the number as +15551234567 or +447700900123. A local-format number works for a phone on a local network and fails for a visitor roaming on a foreign SIM, which is exactly the audience a sign in a tourist spot is aimed at. Spaces, dashes and brackets are stripped for you.

  • Keep the message under about 160 characters

    Past that a text splits into multiple parts, which costs the sender more on a pay-per-message plan and can arrive out of order on some networks. A long prefilled message also makes the code denser for no benefit, since most people delete anything longer than a line before sending.

  • Print the keyword next to the code as well

    A few third-party scanning apps fill in the number and drop the message. If the wording is what makes the campaign work, put "text JOIN to 555-1234" in readable type beside the code so a scan that half-works still gets you the right message.

  • Say what it will cost if it is not a normal number

    Standard mobile numbers cost the sender whatever their plan charges. Premium short codes can cost considerably more, and a sign that does not say so gets complaints. If you are using a short code, test it with a real handset on more than one network before printing - support for non-standard numbers varies.

Common questions

No. It opens the messaging app with your number and your wording already in place, and the person taps send. A QR code cannot make a phone send a message on its own, on any platform, which is why nobody is ever charged by accident for scanning one.

Because sms: disagrees with itself across platforms about how the message body is attached - one wants a question mark, the other an ampersand - so the wording gets dropped on one of them. SMSTO is what the widely-copied ZXing scanner defined, and it is what messaging apps handle consistently on both iPhone and Android.

Yes. The camera shows a banner, and tapping it opens Messages with the recipient and text filled in. Android does the same in its default messaging app. The variation is in third-party scanning apps, a few of which fill in only the number.

The person sending it, at whatever their plan charges for a text. You pay nothing for the code and nothing for the scan. If the number is a premium short code, the cost can be much higher than a normal text, and that needs saying on the sign.

Not with this type - WhatsApp does not read SMSTO. It does have its own link format, wa.me followed by the number, with the message as a text parameter. Paste that link into the URL type instead and you get the same prefilled-message behaviour inside WhatsApp.

No. Both are inside the code, so a change means generating a new one. Nothing expires and nothing is tracked, so there is no dashboard where a printed code could be repointed - which is the trade for a code that keeps working forever.

Other kinds of QR code

All free, all made in your browser.

Printing it? How to print a QR code covers size, contrast and the quiet zone.