The click-to-chat format, and the one rule that breaks it
A WhatsApp QR code encodes a wa.me link — WhatsApp's official click-to-chat URL:
https://wa.me/442079460018?text=Hi%2C%20I%27d%20like%20to%20book%20a%20table
The formatting rule for the number is strict and unforgiving: country code followed by the number, with no plus sign, no spaces, no dashes, no brackets, and no leading zero.
| Number as normally written | In a wa.me link |
|---|---|
| +44 20 7946 0018 | 442079460018 |
| 020 7946 0018 (UK) | 442079460018 |
| +1 (555) 019-2837 | 15550192837 |
| 0912 345 678 (PH, national) | 63912345678 |
The leading zero is the trap. Many countries write domestic numbers with a leading 0 that is dropped when dialling internationally. Including it produces a link to a number that does not exist, and WhatsApp responds with "the phone number shared via url is invalid" — a message that gives the user no idea whose fault it is.
The + is also not optional-but-harmless; it must be omitted. https://wa.me/+442079460018 fails.
The pre-filled message is the actual value
Without the ?text= parameter, a WhatsApp code just opens an empty chat. That is fine, and it is also most of what people lose by not bothering with the parameter.
A pre-filled message does three useful things:
- It removes the blank-page problem. A customer who scans a code on a table and sees an empty chat window has to invent an opening line. Many will not bother.
- It gives you context for free.
Hi, I'd like to order from table 6tells you where they are without asking.Enquiry about the 2-bed flat on Mill Streettells you which listing. - It gives you attribution. Different codes on different materials with different pre-filled text let you tell which placement produced the conversation.
The text must be percent-encoded — spaces as %20, apostrophes as %27, ampersands as %26, line breaks as %0A. The generator above handles this.
Keep it short. Every character of the message inflates the QR code, and a long pre-filled message reads as scripted rather than helpful. One line is right.
Density, and where the characters go
https://wa.me/442079460018 is 26 characters — a version 2 or 3 code, chunky and forgiving. The message is what costs you:
| Payload | Length | Version at level M |
|---|---|---|
| Number only | 26 | 2 |
| Plus a 20-character message | 60 | 4 |
| Plus a 60-character message | 130 | 7 |
Percent-encoding roughly triples the cost of every space, so a 40-character message can add 60 characters to the payload. If you need a longer opening message and a small code, put a short redirect on your own domain in front of it.
What happens when someone scans it
WhatsApp installed: the app opens directly on a chat with your number, message pre-filled, waiting for the user to press send. Nothing is sent automatically.
WhatsApp not installed: the wa.me link opens in the browser and shows a page inviting them to install WhatsApp. This is a dead end for that user, which is worth remembering before you make a WhatsApp code your only contact route.
Desktop scan: the link opens WhatsApp Web or the desktop app if the user has linked their phone; otherwise it shows the install page.
The number does not need to be saved. This is the main advantage over telling someone to "message us on WhatsApp" — normally starting a WhatsApp conversation requires having the contact in your address book first. A wa.me link bypasses that entirely.
WhatsApp's own QR codes are a different thing
WhatsApp generates two kinds of QR code natively, and neither is what this tool makes:
- The linked-devices code in WhatsApp Web. This is a session authentication code, regenerated every few seconds. Never photograph, share or print it — anyone who scans it gains full access to your account and can read and send your messages. This is an active scam vector: someone asks you to scan a code "to verify" and takes over your WhatsApp.
- Your profile QR code, under Settings → QR code, which adds you as a contact. It is functionally similar to a
wa.melink but requires the other person to be inside WhatsApp already, and it cannot carry a pre-filled message.
A generated wa.me code is more useful for printed material precisely because it works from the phone's camera, carries a message, and can be placed anywhere.
WhatsApp Business, and why it changes the calculus
If you are putting a WhatsApp code on customer-facing material, use a WhatsApp Business account rather than a personal one. It is free, takes minutes to set up, and adds:
- A business profile — address, hours, website, category — visible before the customer messages
- A catalogue for products
- Greeting and away messages, so a scan at 11pm gets an acknowledgement rather than silence
- Quick replies for the questions you answer forty times a week
- Labels for organising conversations
The alternative is your personal number appearing on printed material in perpetuity, which is difficult to undo.
The 24-hour rule and consent
If you scale up to the WhatsApp Business Platform (the API tier), the messaging rules become strict: outside a 24-hour window from the customer's last message, you can only send pre-approved template messages, and marketing templates require explicit opt-in.
Even on the free Business app, the ordinary consent rules apply. A customer messaging you about an order has not consented to promotional broadcasts. WhatsApp enforces this through account restrictions, and users report unwanted business messages readily — the enforcement is real and account bans do happen.
Say what the code is for on the printed material next to it. "Message us to book" sets an expectation that "Scan here" does not.
Where these work well
- Restaurant tables — ordering, or calling for the bill, without waving at anyone
- Shop windows and market stalls — enquiries outside opening hours
- Property boards — viewing requests with the address pre-filled
- Trades and services vehicles — quote requests, where a call would be inconvenient for the customer
- Delivery and takeaway packaging — reorders and issue reports
- Events and stands — follow-up conversations that do not require the visitor to hand over an email address
Frequently asked questions
Do I need WhatsApp Business for this?
No, a personal account works. But for customer-facing material, WhatsApp Business is free and adds a business profile, automated greeting and away messages, and quick replies — and it keeps your personal number off printed material you cannot recall.
Why does my link say the phone number is invalid?
Almost always a leading zero or a plus sign. The format is country code plus number with nothing else — 442079460018, not +442079460018 and not 4402079460018. Spaces, dashes and brackets also break it.
Does the message send automatically?
No. The chat opens with the text pre-filled and the user has to press send. This is deliberate — it means the code cannot be used to make someone message you without their knowledge.
What if the person does not have WhatsApp installed?
The link opens in their browser and shows a page prompting them to install WhatsApp. That is a dead end for that user, so do not make a WhatsApp code your only contact route on printed material — pair it with a phone number or email.
Can the customer see my number?
Yes. Starting the chat reveals your number to them, exactly as if they had it saved. This is the main practical reason to use a business number rather than a personal one on anything public.
Is this the same as the QR code in WhatsApp Web?
No, and the distinction matters. The WhatsApp Web code is a session login that grants full access to your account. Never print or share it. A wa.me code simply opens a chat with your number and is safe to publish.
Is my number sent to your servers?
No. The link is assembled and the image rendered in your browser. Nothing you type into the form is transmitted to us.