Start a text message with an RFC-based SMS link
An SMS QR code contains an sms URI with an international recipient and an optional prefilled message. On a compatible phone, scanning opens the messaging composer so the user can review, edit, and send. It works well for opt-in keywords, service requests, event check-ins, simple feedback, and signs where a phone number would otherwise be mistyped. The code never sends the message by itself.
The format follows RFC 5724 and uses the global telephone notation described by RFC 3966. Enter a plus sign, country code, and subscriber number without a local trunk prefix. The message is encoded as a single body field using UTF-8 percent encoding, so punctuation and non-English characters remain data rather than URI controls.
Use a number that can actually receive replies
Confirm that the destination accepts SMS from the countries and carriers your audience uses. Landlines, voice-only numbers, short codes, toll-free numbers, and virtual numbers may have special restrictions. For a business workflow, use a managed number with clear ownership, retention policy, and coverage outside office hours. Do not encode a staff member’s personal mobile number on permanent public material without explicit agreement.
International form improves portability, but it does not remove carrier charges or roaming rules. Place ordinary pricing language near campaigns that may incur a charge, and never imply that scanning itself completes an opt-in. The user should see the draft and choose to send it; your receiving system must separately handle consent and confirmation according to applicable rules.
Keep the prepared message concise
Prefill only the information needed to route the request, such as “INFO A14” or “I would like an accessibility callback.” Leave room for the sender to add context. Long bodies create denser QR symbols and may span multiple SMS segments after sending. Characters outside the GSM alphabet can reduce a segment’s capacity because the messaging system may use a different encoding.
A QR generator cannot predict how a carrier will count, price, filter, or deliver the final text. If your workflow relies on an exact keyword, test capitalization and surrounding whitespace with the receiving automation. Avoid prefilled legal acceptance, payment authorization, or sensitive personal details. A secure web form is better when the response needs structured fields or confidentiality.
Know the limits of device support
Phone cameras and QR apps vary in how they pass an sms URI to the operating system. Some preserve the body exactly; others open only the recipient or ask which messaging app to use. Managed devices may block SMS, and tablets may not have a sending account. Print the telephone number and keyword next to the symbol so the instruction remains usable when automatic composition fails.
This generator intentionally supports one recipient. Although the RFC permits lists, a public code that addresses several people can surprise the sender and expose numbers in a group conversation. Route a single managed number to the right team on the receiving side instead of embedding a distribution list.
Protect personal information
The number and draft are processed locally and are not uploaded to create the image. They are not encrypted inside the QR code. Anyone who sees a printed or shared copy can decode both fields, so keep account numbers, health information, access codes, and case details out of the prepared message. Let the sender add necessary context after the trusted messaging app opens.
Inbound messages create records on the sender’s device, carrier systems, and your receiving platform. Publish a privacy notice when the campaign collects personal data, explain expected replies, and offer another contact route. Remove or replace printed material when the number changes; reassigned telephone numbers make stale QR codes especially risky.
Print, scan, send, and verify
Download an SVG for designed print pieces or a sufficiently large PNG for documents. Preserve the quiet zone, use a solid high-contrast color pair, and test at the final physical size. Scan from representative distances on both iOS and Android. Check that the displayed destination number is correct before sending and that message punctuation survives the handoff.
Complete the test by sending from several carriers if the campaign matters operationally. Verify receipt, automated keyword handling, opt-in confirmation, and a human escalation path. Repeat after any vendor, number, or workflow change. A code that scans perfectly but reaches an unmonitored inbox is still a failed experience.