URL Encode / Decode (Percent Encoding)
Encode text for safe use in URLs and query strings, or decode %-sequences back into readable characters. For debugging redirect chains, building query parameters by hand and understanding what a mangled URL actually says.
How to use
- Paste the text or URL fragment into the input.
- Choose Encode or Decode.
- For encoding, pick component mode (encodes & = ? /) or full-URL mode (preserves separators).
- Copy the result.
URLs may only contain a limited ASCII repertoire, so everything else travels as percent-encoding: the byte's hex value prefixed with %. A space becomes %20, an ampersand %26, and multi-byte UTF-8 characters become one %XX per byte, the Hindi letter न is %E0%A4%A8. This is defined in RFC 3986, which also splits characters into unreserved (letters, digits, and - . _ ~, never needing encoding) and reserved (: / ? # & = and friends, which have structural meaning).
The crucial subtlety is context. Encoding a whole URL must preserve the separators, you cannot encode the slashes in https:// without breaking the URL. Encoding a single query-string value must do the opposite: an unencoded & inside a value splits the parameter in two, and an unencoded = shifts everything after it. This is exactly the difference between JavaScript's encodeURI and encodeURIComponent, or Python's urllib.parse.quote with different safe arguments, and choosing the wrong one is the source of most URL bugs.
Two more classics. The + character means a literal plus in a URL path but a space in query strings under the older form-encoding convention, so decoders must know which context they're in. And double encoding, %20 becoming %2520 because something encoded an already-encoded string, shows up constantly in redirect parameters and OAuth callback URLs. Decoding step by step here reveals how many layers deep you are.
Velona encodes and decodes server-side with correct UTF-8 handling and stores nothing you paste.
Examples
Input: hello world & more
Output: hello%20world%20%26%20more
Input: café menu
Output: caf%C3%A9%20menu
Input: q%3Dvelona%26page%3D2
Output: q=velona&page=2
Frequently asked questions
What's the difference between %20 and + for spaces?
%20 is the RFC 3986 encoding, valid everywhere in a URL. + means space only inside query strings, a convention inherited from HTML form encoding. In a path, + is a literal plus, decoding it as space corrupts the URL.
Which characters must be encoded in a query parameter value?
At minimum & = ? # % and any non-ASCII character. & and = are structural in query strings. A raw % is ambiguous because it looks like the start of an encoded byte. Space must become %20 (or + in form data).
Why is my URL encoded twice (%2520)?
Two layers of code each encoded it: %20 was re-encoded so its % became %25. It usually happens when a framework auto-encodes a value you had already encoded manually. Encode exactly once, at the point the URL is assembled.
How are Hindi, Tamil or emoji characters encoded?
The text is converted to UTF-8 bytes and each byte is percent-encoded, so one character can become 3-4 %XX groups. Browsers display the decoded form in the address bar but transmit the encoded bytes.
Related tools
Velona is India's INR-native AI API gateway with 300+ models, UPI top-up from ₹10, no foreign card needed. These tools are free forever.