No redirect

An SMS QR code that opens the messages app and stops there

The code contains your phone number and an optional first message. The guest's phone opens a text. You are not paying a gateway, and we are not in the middle.

What should the code contain?

A logo switches the code to error correction H. Nothing in this form is uploaded.

Encoded content

How to make one

  1. Step 1. Use a number that can receive texts. A mobile or a business line that actually gets SMS. Include the country code. A landline that cannot text will disappoint everyone.
  2. Step 2. Write a short first message. Something the guest can send as-is or edit: a table name, 'running late,' or the word ORDER. Leave it blank if you only want the number.
  3. Step 3. Check the sms: line. The preview shows the exact payload. The number is compacted to digits and a leading plus. The message is percent-encoded.
  4. Step 4. Export and print with the number in plain type. PNG or SVG. Next to the code, print the number for people who will not or cannot scan.
  5. Step 5. Text yourself from another phone. Confirm the thread opens to the right number and that the draft is editable before it sends. Then print the batch.

The code starts a text. It does not send one.

An SMS QR code stores a link that begins with sms: followed by a phone number, and optionally a body. The phone's camera hands that link to the messaging app. The app opens a new message to that number, with the body filled in if you set one. The person still has to press send. Nothing is transmitted when they merely scan. HonestQR does not operate a short code, a gateway, or an inbox. We do not see the text, we cannot reply for you, and we do not bill per scan, because there is no scan event we are able to observe. The number is in the code. The guest's carrier sends the message to your carrier, the ordinary way.

The preview shows the exact string. A number typed as +1 (555) 010-4410 is stored as +15550104410, because spaces and brackets are not part of the dialable number. A leading plus is kept, so include the country code yourself. The message is percent-encoded in the link and decoded by the messaging app. You should type 'Table for 2 under Cho,' not the encoded form. If the message is empty, the link is only the number, which is the most compatible option and the right one when you do not want to put words in the guest's mouth.

Where a text code earns its keep

It is for a next step that really is a text. A hostel door that says text us when you arrive. A market stall that would rather get 'is the rye still available' than miss the shout across the room. A pop-up that collects a running-late message with the party name already in the draft, so the thread is searchable. A yard sign for a pickup, where the body is the order number the buyer only has to confirm. In those cases the code removes the moment where someone miskeys a digit and texts a stranger. It does not remove the need for a human at your end of the phone.

It is a poor fit for marketing blasts, two-factor codes, appointment systems, or anything you would describe as a campaign. Those need a gateway, consent, and a way to stop. A printed code cannot record consent and cannot be unsent from phones that already scanned it. If you want people to join a list, ask them in the text after they choose to send one, and keep that program on a real provider with an unsubscribe path. Do not encode a keyword that opts them into a list they have not read about. The draft you pre-fill should be a message they can send to you, not a command they do not understand.

iPhone, Android, and the differences that matter

Current iPhones open the Messages app from an sms: link with a body. Current Android phones open the default messaging app the same way. That is the behavior this generator targets, using the sms: URI with an optional body query, which both families understand. Some older Android builds prefer a different historical format. If you are printing for a specific device fleet, scan a proof with one of those devices. We do not ship a second proprietary format, because a single standard link is more likely to be read by the camera app and less likely to be a link that only one vendor's scanner accepts.

Desktop QR tools and some laptop cameras will only show the text of the link. A person sitting at a computer cannot always send that as an SMS. This is why the number should also be printed in plain type beside the code, with the country code, in a font a person can read at the distance they will stand. The code is a convenience for the phone already in their hand. The digits are the fallback. A code with no readable number is a small puzzle you are making people solve in a doorway.

Cost, privacy, and the absence of analytics

The guest pays for the text the way they pay for any text, which on most plans is nothing, and on some plans is not. You pay to receive it the way you pay to receive any text. There is no HonestQR fee in the middle, and there is also no HonestQR record that the scan happened. If a vendor promises scan statistics on an SMS code, their code contains their URL, not your number. The phone opens their site, and their site may then open a message, or may show a page, or may do nothing once the invoice fails. You can see which kind you have by reading the code. An honest SMS code decodes to sms: and a number. Anything that decodes to https:// is a website, and the check-up will follow it.

Your number becomes public to anyone who can see the print. That includes photographs of the print. Use a number you can answer, filter, or replace. A spare business line is better than the owner's personal mobile if the code will be on a window for a year. Expect messages that are not customers. The same thing happens when you paint a phone number on a van. Do not put a one-time password, a private direct line, or a number that receives bank texts into a code. The squares are not a lock.

Keep the message short, and keep it true

A long body makes a dense code and a draft that looks like a form the person did not write. One short sentence is the useful size. 'Table for 2 under Cho.' 'Running late.' 'Question about the rye.' If you need their name, their count, and their time, you will get a better answer by letting them type it than by pretending a QR code is a reservation system. Reservation systems exist. They have URLs. Encode the URL if that is the real next step. Encoding an SMS that asks them to type a reservation into a text is how requests get lost in a personal phone at midnight.

Do not pre-fill a message that claims the person has already agreed to something. 'YES sign me up for offers' is a dark pattern even when a human has to press send, because people send drafts they did not read, especially when a queue is behind them. The draft should be obviously about the task in front of them. If you would be embarrassed to read it aloud at the counter, do not encode it. The generator will also refuse a payload that cannot fit in a QR code, rather than clipping the sentence. You will get an error on the form instead of a code that scans as a fragment.

When the number changes

A static code cannot be repointed. If you change numbers, the prints are wrong, and texts keep arriving at the old line until you reprint and until old photographs of the code age out of group chats. That lag is the cost of a code with no company in the middle. Plan for it. Keep the old number forwarding for a while if the carrier allows it. Keep the SVG with the other artwork so the reprint is a new export, not a hunt for the original website. If you change numbers often enough that reprinting is absurd, a printed SMS code is the wrong medium. Put a short URL you control on the card, and let that page show the current number, or move to a channel you can update.

We do not offer a hosted number, a shared inbox, or an autoresponder. Those are phone products with their own contracts. The waitlist at the bottom of this page is only for people who want QR codes that can be edited after printing, or who want scan counts, and who accept that those features require a service that can expire. You can make the code above without joining that list. If a code already on your window is a mystery, use the check-up and read what it actually contains before you order another hundred.

Questions

Does scanning send the text automatically?

No. The messaging app opens a draft. The person presses send. A scan by itself does not message you.

Do you charge per scan or per text?

No. There is no gateway. The guest's phone sends a normal SMS to the number in the code. We never see it.

Should I include the country code?

Yes. Type it with a leading plus. The generator strips spaces and brackets but does not guess a country.

Can I collect marketing opt-ins this way?

A printed draft is a bad way to collect consent. If you run a text list, use a provider that handles opt-in and opt-out, and do not hide that inside a pre-filled message.

What do iPhone and Android do with it?

Current cameras open the default messaging app with the number and the optional body. Always scan a proof. Print the digits beside the code as a fallback.

Can I change the number later without reprinting?

No. The number is in the code. Reprint, and forward the old number for a while if you can. A page you control is a better tool if the number changes often.

Editable codes, later

Need editable links or scan stats? Leave your email.

One note if we ship that. No account, no newsletter. Repeating an address does not create a second row.