URL encoding: what %20, %0A and %C3%B1 mean and why they show up in your links
When you generate a link with a message, the text fills up with percent signs. It isn't an error: it is how a URL carries characters it can't contain directly.
Why it is needed
A URL can only contain a limited set of characters, and several of them have a special meaning: ? marks where the parameters start, & separates them, # points to a section of the page. If your message contains one of those signs unencoded, the link is cut off there.
Percent-encoding replaces each problematic character with a % followed by its hexadecimal value. Characters outside the basic alphabet (accented letters, emojis) are first converted to UTF-8 and take up several codes in a row.
The ones you'll see most often
| Character | Encoded | Note |
|---|---|---|
| space | %20 | The most common of all. |
| line break | %0A | Emails use %0D%0A. |
| , | %2C | |
| ? | %3F | Unencoded, it starts the parameters. |
| ¿ | %C2%BF | |
| ¡ | %C2%A1 | |
| & | %26 | Unencoded, it separates parameters. |
| # | %23 | Unencoded, it cuts off everything after it. |
| + | %2B | Unencoded, it is sometimes read as a space. |
| á é í ó ú | %C3%A1 %C3%A9 %C3%AD %C3%B3 %C3%BA | |
| ñ | %C3%B1 | |
| ç ã õ | %C3%A7 %C3%A3 %C3%B5 | Portuguese. |
| 👋 | %F0%9F%91%8B | One emoji takes up twelve characters. |
A full example
The Spanish message “Hola, ¿tienen envío a Córdoba?” (Hi, do you ship to Córdoba?) inside a WhatsApp link looks like this:
https://wa.me/5491123456789?text=Hola%2C%20%C2%BFtienen%20env%C3%ADo%20a%20C%C3%B3rdoba%3F
It looks unreadable, but when opened WhatsApp shows the original text, with its accents and punctuation.
Typical mistakes when building links by hand
- Leaving spaces unencoded. Many applications cut the link at the first space when you paste it.
- Encoding twice. If you run already-encoded text through an encoder,
%20becomes%2520and the message arrives with the codes showing. - Using + as a space. It works in some web forms, but in
mailto:andsms:links it shows up as a plus sign. - Encoding the whole URL. Only the value of each parameter is encoded, not the
?,&and=that structure the link.
How to do it in code
In JavaScript, the encodeURIComponent() function correctly encodes a parameter value. It is the one QLinky uses in all its generators:
const message = "Hola, ¿tienen envío?";
const url = "https://wa.me/5491123456789?text=" + encodeURIComponent(message);
Don't use encodeURI() for this: it leaves unencoded precisely the &, ? and # signs, which are the ones that break the link.
Try it now
Generate your link for free, with no sign-up and without your data leaving the browser.
WhatsApp link generator with message and QR codeEmail link generator (mailto)SMS link generator with message