Utility

URL encoder / decoder

Encode and decode text for use in URLs. Converts special characters to the %XX standard used by modern browsers.

Any AI today can explain what URL encoding is in seconds. But not everyone has a paid plan, tokens available all the time, or knows how to ask for it properly. This encoder exists for that: a real, instant conversion — and further down, we explain exactly what gets encoded and why.
Result
The result will appear here.

What gets encoded exactly, and why

Which characters get encoded, and which don't only the "unreserved" characters stay the same: A–Z, a–z, 0–9, hyphen (-), underscore (_), period (.), tilde (~) — everything else becomes %XX — This is the exact rule encodeURIComponent follows, defined in RFC 3986. For example, the letter "ñ" is encoded as %C3%B1, and the "&" symbol as %26. Any character outside that set of ~66 "safe" characters gets transformed, no exceptions.
Why an emoji ends up as several %XX groups in a row characters outside the ASCII range (accents, ñ, emoji, kanji) are first encoded to UTF-8 bytes, and each byte becomes one %XX — a single character can take up 1 to 4 %XX groups — Example: the word "café" gets encoded as caf%C3%A9 (the é takes up 2 bytes → 2 %XX groups), while an emoji like 🎉 takes up 4 UTF-8 bytes → it becomes %F0%9F%8E%89. That's why a short text with emoji or non-Latin characters can produce an encoded URL quite a bit longer than it looks at first glance.

Key concepts

URL encoding (also called percent-encoding) converts characters that are unsafe to use in a URL into an escape sequence of the form %XX, where XX is the hexadecimal value of the character. For example, a space becomes %20 and an at-sign becomes %40. This ensures the URL is valid across all browsers and servers.

Whenever you embed free text in a URL: GET parameters with special characters or spaces (e.g. ?q=café latte), hash fragments, or any user-supplied data in the query string. Without encoding, the server may interpret reserved characters (&, =, #) as structural URL elements rather than data.

encodeURI encodes a full URL and leaves structural reserved characters untouched (:, /, ?, &, #). encodeURIComponent encodes everything, including those characters, because it assumes you are encoding a parameter value rather than a full URL. This tool uses encodeURIComponent, which is the correct standard for encoding individual values.

There are two conventions: RFC 3986 uses %20 for spaces, while the application/x-www-form-urlencoded format (HTML forms) uses +. Modern browsers and encodeURIComponent follow RFC 3986 and produce %20, which is correct for any URL. The + sign should only be used in HTML form bodies, not in general URLs.

Web and back-end developers use it daily to encode dynamic parameters in REST APIs, build query strings with special characters, and debug malformed URLs received from clients. SEO specialists need it to correctly encode keywords in search parameters, canonical URLs, and UTM parameters containing non-ASCII characters. Data analysts use it to clean URLs extracted from server logs or analytics tool exports that contain accented characters, spaces, and extended characters. Cybersecurity professionals use it to analyse and build test payloads during penetration tests and input validation exercises. Designers and content creators consult it to understand why a URL appears with percent signs and how to decode it into a readable form.

On desktop, press Ctrl + D (Windows/Linux) or Cmd + D (Mac) in Chrome, Firefox, or Edge to add this page to your bookmarks instantly. In Safari for Mac, use Cmd + D or go to Bookmarks → Add Bookmark. On mobile with Chrome (Android), tap the three-dot menu (⋮) and choose "Add to Home screen" or "Add to bookmarks." On mobile with Safari (iPhone/iPad), tap the share button (□↑) and then "Add to Home Screen." Keeping it in your browser's bookmarks bar saves you time searching for it whenever you encounter an encoded URL that needs decoding.

Direct WhatsApp links (wa.me) follow the format https://wa.me/<number>?text=<message>, where the number is in international format (no +, spaces, or dashes) and the message must be URL-encoded. Type your message into this tool, copy the encoded result, and paste it after ?text= in your link. That way, when someone clicks it, WhatsApp opens the chat with the message already typed, ready to send or edit. Note: with the rollout of WhatsApp usernames (July 2026, designed to avoid exposing your phone number), there may eventually be a way to build these links using a username instead of a number — but as of this writing, there's no public documentation of a wa.me-equivalent format based on usernames.

Yes. A mailto: link accepts parameters like ?subject= and &body= just like a regular URL, and those values also need to be encoded if they contain spaces, accents, or symbols like & or ?. For example: mailto:contact@example.com?subject=Inquiry&body=Hi%2C%20I%20wanted%20to%20ask... — encode the subject and body separately with this tool and build the link by hand.

Many link schemes use free-text parameters that need to be encoded: SMS links (sms:+15551234567?body=...), social share "intents" (https://twitter.com/intent/tweet?text=..., the Facebook sharer), Google Calendar quick-add events (.../render?action=TEMPLATE&text=...&details=...), direct Google Maps searches (.../maps/search/?api=1&query=...), and search parameters for any search engine (?q=...). In all these cases, if the text has spaces, accents, symbols, or emoji, it needs to be encoded first for the link to work correctly.