SMS QR Code Generator
Create a QR code that opens a prefilled text message — number and body set by you, generated entirely on this device.
Demo — sample SMS content. Fill the form above to replace it.
Version 4 · 33×33 modules
44 of 2331 bytes at level M
Show the exact payload
This is the exact string the QR pattern encodes.
SMSTO:+14155550142:On my way — there in 15
- Prefilled message behavior varies by handset — some open the composer empty and keep only the number.
- Content contains non-ASCII characters, encoded as UTF-8 — modern scanners handle this fine.
Press ? for shortcuts
Do it offline:$ qrencode -t SVG -o sms.svg 'SMSTO:+14155550134:Running late'
How to use it
- Enter the number with its country code — a plus followed by digits travels correctly whatever country the scanning phone is from.
- Add the message you want waiting in the compose box, or leave it empty to just open a new text to the number.
- Scan once with your own phone before printing; handsets differ in how faithfully they honor the prefilled body.
Set a phone number and an optional message and get a QR code that opens the scanner's texting app with both already in place — the SMSTO payload is assembled in this tab from exactly what you type. Nothing sends by itself: the person scanning still reads the draft and taps send, which is what makes these codes fine for posters and service counters.
Examples
+1 (415) 555-0134 · with a prefilled bodySMSTO:+14155550134:Running late — see you at the gate
55 bytes · version 4 at M
Prefilled message behavior varies by handset — some open the composer empty and keep only the number.Separators typed for readability are normalized away — the payload carries the bare dialable form — and the body rides verbatim after the second colon. The variance warning always accompanies a body.
+14155550142 · number onlySMSTO:+14155550142
18 bytes · version 2 at MWith no body the second colon is dropped rather than left dangling — eighteen bytes, a version 2 symbol, and the scanner opens a blank text to the number.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
The body is a suggestion, not a guarantee
SMSTO is a scanner convention rather than a formal standard, and handsets disagree at the edges: most fill both number and message, a few open the composer with only the number. Keep the message short and non-essential — a keyword or a greeting, not instructions the workflow depends on.
SMSTO versus sms:
An RFC-defined sms: URI exists, but camera apps standardized on the ZXing-documented SMSTO: form years ago, so that is what this page emits. The grammar is two colons deep at most — number after the first, message after the second.
Common errors
Message is 321 characters — the cap here is 320; longer prefills get truncated by many handsets.- Two GSM segments is the practical ceiling for a prefill that survives intact; past it, phones truncate at different points and the recipient gets half a sentence. The counter under the field shows where you stand before the refusal fires.
Phone "text HELLO to the shortcode" could not be read — use 3 to 15 digits with an optional leading +; spaces, dots, dashes and parentheses are fine.- The number field wants the destination itself, not a sentence about it. Shortcodes work — they are digits — but the words around them belong on the poster, not in the payload.
FAQ
Does scanning send the text automatically?
No. The code opens the messaging app with the number and draft in place, and nothing leaves the phone until the person taps send — scanners enforce that pause deliberately, so a QR code can never text on someone's behalf.
Do these codes work for shortcodes like 30330?
Yes — a shortcode is just digits, so it passes the number rule without a plus. Pair it with the campaign keyword as the body and the scanner lands one tap away from the opt-in text.
Why cap the message at 320 characters?
That is two full SMS segments — the length that survives the trip through the most handsets unmangled. It also keeps the symbol at a density that scans from a poster across a counter.