SMS QR Code Generator
Generate an SMS QR code containing a destination phone number and an optional prefilled message.
This generator keeps the GS1 Digital Link URI directly inside the QR code. Premium QR dynamic redirects are not used for GS1 Digital Link codes.
Advanced Customization
Colors & Gradients
Logo & Social Icon
QR Code Size
SMS QR Code Generator
Quick answer: An SMS QR code encodes a phone number and optional prefilled message using the SMSTO: format. Scanning opens the messaging application with the number and message pre-loaded — the user must tap send. SMSTO: has the widest scanner support. The RFC 5724 sms: scheme is an alternative.
How to create an SMS QR code
- Enter the phone number in E.164 international format: a plus sign, country code, and subscriber number with no spaces or dashes. Example: +14155550123.
- Enter the prefilled message text, if you want one. The field is optional — the code can contain only the number.
- Choose error correction level M for standard use. If you add a longer message body, the symbol will be slightly denser.
- Customise the pattern, finder eyes, colours and logo.
- Download PNG, SVG, WEBP or JPG at 512, 1024, 2048 or 4096 px.
The code is generated in your browser as you type. Nothing is uploaded.
What an SMS QR code is
An SMS QR code is a standard QR code whose payload directs the device to open the messaging application. The symbol follows ISO/IEC 18004:2015. When scanned, the operating system reads the payload, identifies it as a messaging URI, and opens the SMS or MMS application with the destination number pre-filled. If a message body was included in the payload, the message field is pre-populated with that text.
Critically, the message is not sent automatically. The user sees the pre-filled message and must tap the send button. This is consistent behaviour on iOS and Android — the confirmation step protects users from unintended messages.
SMS payload formats
SMSTO: — the format with widest support
The SMSTO: format has the broadest compatibility across QR scanner implementations and mobile operating systems:
SMSTO:+15551234567:Pre-filled message textThe format begins with SMSTO: (uppercase), followed by the phone number in E.164 format, a colon separator, and the message body. The message body is plain text; no URL-encoding of the message is required in this format.
Example for a keyword opt-in campaign:
SMSTO:+15551234567:JOINsms: — the RFC 5724 standard
The IETF defined the sms: URI scheme in RFC 5724. The format is:
sms:+15551234567?body=URL%20encoded%20message
In the sms: scheme, the message body is expressed as a query parameter and must be URL-encoded: spaces become %20, and special characters are percent-encoded. The scheme is a formal standard but has less consistent support than SMSTO: across devices and QR scanner applications.
For maximum cross-device compatibility, prefer SMSTO:. The research guidance (elido.app, 2026-08-11) summarises this as: "treat the text as a nice-to-have and the number as the thing that must work."
Message length limits and GSM-7 vs UCS-2
The length of the prefilled message affects two things: the QR code symbol density and what the recipient actually receives.
Standard SMS uses GSM-7 encoding, which represents each character in 7 bits. A single GSM-7 SMS message is 160 characters. GSM-7 supports the basic Latin alphabet, digits, and a small set of symbols. Messages within the 160-character limit are delivered as a single SMS.
Messages longer than 160 characters are split into multiple messages (concatenated SMS), each carrying 153 characters of content, with the remaining characters used for the join header. Each segment is billed as a separate SMS by most carriers.
If the message contains any character outside the GSM-7 charset — such as an emoji, an accented character not in the GSM-7 extended table, or any character from a non-Latin script — the entire message switches to UCS-2 encoding. UCS-2 uses 16 bits per character, reducing the single-message limit from 160 to 70 characters. A 70-character UCS-2 message that would have been a single SMS as plain text becomes multiple segments if any UCS-2 characters are added.
For a prefilled SMS QR code message, the practical advice is: keep the message to 160 characters or fewer, use only basic Latin characters and digits, and avoid emoji. This ensures the message arrives as a single SMS on any carrier and any device.
| Encoding | Character set | Max chars per segment | Typical trigger |
|---|---|---|---|
| GSM-7 | Basic Latin, digits, standard symbols | 160 | ASCII-compatible text |
| UCS-2 | Full Unicode | 70 | Any emoji, accented or non-Latin character |
The message is pre-filled, not pre-sent
This is the most important fact to communicate to users new to SMS QR codes. Scanning the code opens the messaging application with the number and message filled in. The user sees the screen and taps send. The carrier's normal SMS send process then applies — delivery reports, carrier fees, and regulations are the same as for any manually typed SMS.
This design is intentional. An SMS that sends without user confirmation would be a significant privacy and spam concern. All mainstream platforms prevent auto-sending from an SMS URI.
When to use an SMS QR code
Keyword opt-in campaigns. A code printed on packaging or signage encodes a number and a keyword such as JOIN or YES. Customers scan, the messaging app opens with the keyword pre-filled, and they send it to opt in to a list. The QR code replaces the need to display the number and keyword as plain text.
Customer support shortcut. A code on a receipt, warranty card, or help page opens the messaging app with the support number pre-filled. The customer types their query and sends it, without having to transcribe a number.
Restaurant and hospitality order-by-text. A code on a table or a menu card opens a text thread with a pre-filled order format. The customer modifies and sends. No app download is required.
Appointment reminders and confirmations. A code on a booking confirmation email (printed) lets the patient or guest text a confirmation keyword. The practice or venue receives the response in their SMS inbox.
Event registration and check-in. A code on an event poster or programme lets attendees text a number to confirm attendance or join a group thread.
Retail promotions. A code on a product shelf tag or a window sticker invites customers to text for a discount code or more information. The pre-filled message includes the product reference or campaign keyword.
Design and print requirements
Maintain a quiet zone of at least four modules on all sides. ISO/IEC 18004:2015 §6.3.3 specifies this minimum; the scanner requires unprinted margin to locate the symbol boundaries.
SMS QR codes with only a number and a short message are compact — they encode in byte mode but the total payload is typically under 50 characters. The symbol stays in a low version and scans reliably at 2 cm square.
Longer prefilled messages increase the payload and push the symbol to a higher version. If the message body is more than 100 characters, print the code at 3 cm square or larger to ensure reliable scanning.
Use dark modules on a light background. Test the printed code on both iOS and Android before finalising a campaign — messaging app behaviour for SMSTO: can vary between manufacturers.
Troubleshooting: why your SMS QR code is not working
The message did not pre-fill. Pre-fill support in the message body is device-dependent. The phone number should always pre-fill. If the message body does not appear, the device's messaging app may not support the message field in the SMSTO: format. The message is documented as a "nice-to-have" — the number is the critical element.
The message pre-filled but shows garbled characters. This occurs when UCS-2 characters were included in the SMSTO: body. Regenerate with ASCII-only text, avoiding emoji and special characters.
The code opens the dialler instead of the messaging app. The device misidentified the payload as a tel: URI. This can occur if the SMSTO: prefix was truncated or malformed. Regenerate the code and verify the payload string by scanning with a raw QR reader first.
The number is missing the country code. Without the country code, messaging may fail from international devices. Re-encode with the full E.164 number including the plus sign and country code.
The symbol is dense for the print size. A long prefilled message increases symbol size. Shorten the message, or increase the print size.
SMS QR codes versus phone QR codes
| SMS QR code | Phone QR code | |
|---|---|---|
| URI scheme | SMSTO: or sms: (RFC 5724) | tel: (RFC 3966) |
| Action on scan | Opens messaging app | Opens dialler |
| Auto-sends / auto-calls | No — user taps send | No — user taps call |
| Prefilled message | Yes (optional) | Not applicable |
| Best for | Lead gen, opt-in, support text | Direct calls, helplines |
What this SMS QR Code Generator gives you
This browser-based tool prepares an SMS recipient and optional message so the user can review and send it from the phone’s messaging app. It is designed for support requests, booking references, event check-ins, opt-in prompts and service enquiries. The live preview updates while you edit, which makes it easier to catch a missing field or an unexpectedly dense symbol before download.
You can adjust matrix patterns, finder-eye styles, foreground and background colours, gradients, frames, size and an optional logo. Exports are available as SVG, PNG, WEBP and JPG at 512, 1024, 2048 or 4096 pixels. SVG is the practical choice for professional print. A high-resolution PNG suits office documents and digital artwork.
The static payload is constructed in your browser. The information entered into the generator does not need to be uploaded to create the QR image. SMS charges, sender availability and message encoding depend on the user’s mobile plan and device; the QR code does not send anything by itself.
Using this QR code in Bahrain and abroad
For Bahrain campaigns, use the +973 country code and keep the prefilled text short enough to remain clear in both Arabic and English workflows.
Use British English spelling in customer-facing copy when that matches your organisation’s house style, and provide Arabic wording where the audience expects it. Keep the action after scanning obvious. A short line beside the symbol such as “Scan to save the contact” or “Scan to open the location” gives people confidence before they point their camera.
Test the final design on current iPhone and Android devices. Test it again after printing on the actual paper, sticker, card, sign or packaging material. Bahrain’s bright outdoor light can expose glare and low-contrast problems that are less obvious on a computer screen. For international use, confirm country codes, currencies, time zones, regional app availability and payment-network compatibility.
Before you publish
- Correct QR payload type
- Complete and verified data
- Four-module quiet zone
- Strong foreground contrast
- Proportional square scaling
- Logo kept within safe limits
- SVG or high-resolution PNG
- Final-size device scan test
Frequently asked questions
Open a question to read a concise technical answer.
01How do I create a QR code that opens a text message?+
Enter the phone number in E.164 international format (plus sign, country code, subscriber number, no spaces) and optionally add a prefilled message. The generator encodes both in the SMSTO: format. When someone scans the code, their messaging application opens with the number and message pre-loaded. They still tap send — the message is not sent automatically.
02Can I pre-fill the message body in an SMS QR code?+
Yes. The SMSTO: format includes an optional message field after a colon: SMSTO:+15551234567:Your message text. Pre-fill support varies by device — every scanner should pre-fill the number, but some messaging applications on some devices do not populate the message body. Treat the pre-filled text as a convenience rather than a guarantee.
03What is the SMSTO: format for QR codes?+
SMSTO: is a messaging URI format used in QR codes and NFC tags. The structure is SMSTO:<E.164_number>:<message_body>. It has wider QR scanner support than the RFC 5724 sms: scheme. Example: SMSTO:+15551234567:JOIN sends the word JOIN as the pre-filled message to +15551234567. The source for SMSTO: compatibility is elido.app (2026-08-11).
04What is the difference between sms: and SMSTO: in QR codes?+
SMSTO: is a widely supported de facto format used in QR codes and NFC. The sms: scheme is the IETF standard defined in RFC 5724 and uses URL-encoded query parameters for the body (sms:+15551234567?body=Your%20message). SMSTO: has broader scanner support in practice. Both encode a number and optional message; SMSTO: is the recommended choice when maximum device compatibility is needed.
05Does an SMS QR code work on iPhone and Android?+
Yes, on both platforms. iOS and Android open the native messaging application when scanning an SMSTO: code. Message body pre-fill behaviour can vary between messaging apps and device manufacturers. The phone number pre-fill is reliable on both platforms; the message pre-fill should be treated as a best-effort feature.
06Does a prefilled SMS send automatically when scanned?+
No. Scanning an SMS QR code opens the messaging application with the number and optional message pre-loaded. The user sees the message on screen and must tap the send button. No mainstream operating system or messaging application sends an SMS automatically from a URI — the confirmation step is by design.
07How long can a prefilled SMS message be?+
A standard GSM-7 SMS segment is 160 characters. Messages longer than 160 characters are split into multiple segments, each of 153 characters, with the remainder used for the join header. Each segment may be billed separately by the carrier. If the message contains any character outside the GSM-7 charset (such as an emoji), the whole message switches to UCS-2, reducing the single-segment limit from 160 to 70 characters.
08Why does my SMS QR code show the number but not the message?+
Pre-fill support for the message body is not universal. Some messaging applications on some devices support the SMSTO: message field; others ignore it and pre-fill only the number. This is a device and app limitation, not a QR code failure. The number is the reliable element — the message is an optional enhancement.
09Can I use an SMS QR code for keyword opt-in campaigns?+
Yes. A common pattern is to encode SMSTO:+15551234567:JOIN — the recipient scans, the messaging app opens with JOIN pre-filled, and they send it to opt into a list. This complies with standard SMS opt-in practices because the user initiates and confirms the send. The shortcode or long code on the receiving end processes the keyword as with any inbound SMS opt-in.
10What characters can I use in an SMS QR code message?+
For maximum compatibility, use only GSM-7 characters: the basic Latin alphabet (A–Z, a–z), digits (0–9), and standard symbols (space, period, comma, exclamation, question mark, and others in the GSM-7 table). Avoiding emoji, accented letters, and non-Latin characters prevents the message from switching to UCS-2 encoding, which reduces the single-message limit from 160 to 70 characters.