WhatsApp Click-to-Chat Link Generator

A wa.me link with the number normalised to international form, because a leading zero or a plus is what makes WhatsApp say the number is not registered.

Enable JavaScript to customise; default output below.

Type it however you like: spaces, brackets, dashes and a plus are all stripped. What matters is that the country code is there and the national trunk zero is not.

Optional. Given it, the tool checks the number starts with it and catches a trunk zero left in after it.

Percent-encoded for you. The sender can edit it before sending, so do not put anything in it that has to be accurate.

Link form

wa.me is the documented short form. api.whatsapp.com/send is the older one and behaves the same.

Live preview whatsapp-link.txt
https://wa.me/447700900123?text=Hi%2C%20I%20have%20a%20question%20about%20the%20Pro%20plan.

Number as typed     +44 7700 900123
Number in the link  447700900123
Digits              12
Message             41 characters

HTML
<a href="https://wa.me/447700900123?text=Hi%2C%20I%20have%20a%20question%20about%20the%20Pro%20plan." target="_blank" rel="noopener">Chat on WhatsApp</a>

The plus was removed. It is correct in a tel: link and wrong in a wa.me
one.

The number is the whole trick: full international form, no plus, no
spaces, no brackets and no national trunk zero. A wrong number produces
a link that opens WhatsApp and reports that the number is not
registered, which looks like the recipient's problem rather than the
link's.

The message is percent-encoded. Without that, an ampersand ends the
message at that point, a hash truncates it, and a newline breaks the URL
outright. Line breaks survive encoding, so a two-line prefilled message
works.

wa.me is the documented short form and it redirects to the right place
on desktop and on mobile. api.whatsapp.com/send is the older form and it
behaves the same; the difference is length. Neither needs an API key,
and neither is the WhatsApp Business API, which is a different product
with a different setup.

A prefilled message is a suggestion, not a commitment: the recipient
sees whatever the sender actually sends, and the sender can edit it
before sending. Do not put anything in it that has to be accurate, such
as an order number you have not verified.

Output is valid and updates as you type.

A click-to-chat link is https://wa.me/447700900123?text=Hi. The whole difficulty is the number.

It has to be full international form: country code on, no plus, no spaces, no brackets, and no national trunk zero. A London number written 020 7946 0958 becomes 442079460958. The code goes on and the zero comes off, and if you leave the zero in you get 4402079460958, which opens WhatsApp and reports that the number is not registered. That message sends people looking for the fault at the other end.

So this normalises the number, checks it against the country code you name, and refuses the shapes that cannot work with the fix in the message.

How to use

  1. Type the number however you have it. Spaces, dashes, brackets and the plus are all stripped.
  2. Put the country code in the second field so the tool can check the number starts with it.
  3. Add a prefilled message if you want one. It is encoded for you.

Example

https://wa.me/447700900123?text=Hi%2C%20I%20have%20a%20question%20about%20the%20Pro%20plan.

Number as typed     +44 7700 900123
Number in the link  447700900123
Digits              12
Message             41 characters

HTML
<a href="https://wa.me/447700900123?text=Hi%2C%20I%20have%20a%20question%20about%20the%20Pro%20plan." target="_blank" rel="noopener">Chat on WhatsApp</a>

The plus is gone, the spaces are gone, and the message’s comma and spaces are percent-encoded.

Pitfalls

The trunk zero is the number one problem. In most of Europe, Australia and much of Asia, a domestic number starts with a 0 that is not part of the international number. UK 07700 900123 is 447700900123, not 4407700900123. The United States and Canada have no trunk prefix, so a US number is just 1 plus the ten digits.

No plus, even though every other link format wants one. tel:+447700900123 is correct. wa.me/+447700900123 is not.

Encode the message. An unencoded ampersand ends the message at that point, a hash truncates it, and a newline breaks the URL. The tool encodes it; if you assemble these links in code, encode there too.

The message is a suggestion. The sender sees it in their input box and can change it before sending. Do not put an order number, a price or a discount code in it and then treat what arrives as verified.

The number has to be on WhatsApp. The link cannot know. A landline, a number on a different messenger, or a number that has been recycled all produce the same “not on WhatsApp” screen.

Business hours are not in the link. A click-to-chat button visible at midnight starts a conversation at midnight. Either say your hours next to the button or use WhatsApp Business, which can send an away message.

wa.me links in an app’s in-app browser sometimes fail. Some social apps open links in a webview that cannot hand off to WhatsApp. There is nothing the link can do about it; it is worth knowing when a campaign’s clicks do not turn into chats.

Compatibility

Everything runs in the browser: nothing is uploaded and nothing is stored.

wa.me is WhatsApp’s own documented short form and works on iOS, Android, WhatsApp Web and the desktop apps: it redirects to the right target for the device. The older api.whatsapp.com/send?phone= form does the same thing in more characters, and it is offered here because plenty of existing code uses it and consistency is worth something.

Neither form needs an API key, an account or approval. Both are different from the WhatsApp Business Platform, which is a paid API with templates and approval, and which is what you want for automated messaging rather than for a link on a page.

For a printed QR code pointing at a chat, generate the link here and paste it into the QR code generator on this site. The QR is just an encoding of this URL.

Frequently asked questions

What number format does WhatsApp want?
Country code then the national number with no leading zero, digits only. 1 for the US and Canada, 44 for the UK, 91 for India, 55 for Brazil, 234 for Nigeria, 61 for Australia.
Can I use a link for a WhatsApp group?
That is a different link, an invite link of the form chat.whatsapp.com/<code>, and it comes from the group’s own settings inside the app. It cannot be constructed from anything here.
Does the recipient see who clicked?
They see the message arrive from the sender’s own number, exactly as if the sender had typed it. Nothing about the page the link was on is passed along, which is why a prefilled first line naming the page is useful.
Will this work as a WhatsApp button on my site?
Yes: the HTML in the output is a plain anchor. Style it as a button and it behaves as one. target="_blank" and rel="noopener" are there so it opens without taking the page with it.
How do I track clicks on it?
Tag the page, not the link: UTMs on a wa.me URL are passed to WhatsApp and ignored. Track the click as an event in your analytics, or use a distinct prefilled message per page so you can tell where a conversation started.
Weekly drops

New tools, when there are new tools

One email when something worth using ships. No schedule to fill, so no filler.

Your address goes nowhere else, and one click unsubscribes.