URL Encode / Decode
Percent-encode or decode URLs and query string components instantly. Free and in-browser.
How to use the URL Encode / Decode
- 1Paste the URL or the single parameter value you want to work with into the input box on the left.
- 2Choose the direction: click Encode to turn plain text into percent-encoded form, or Decode to expand %XX sequences back into readable characters.
- 3If the tool offers it, pick component mode (encodeURIComponent) to escape reserved characters like & = ? / in a value, or full-URL mode (encodeURI) to preserve the structural characters of a complete address.
- 4Read the converted result in the output box, which updates as soon as you run the conversion.
- 5Click Copy to put the result on your clipboard, or Clear to reset both boxes and start over.
- 6If decoding shows an error, check the input for a lone % or an incomplete %X sequence, fix it, and run the conversion again.
About the URL Encode / Decode
URL Encode Decode converts text to and from percent-encoding, the escaping scheme defined in RFC 3986 that lets URLs safely carry characters they could otherwise never contain. When you encode, the tool walks through your input byte by byte, leaves the "unreserved" characters alone (A-Z, a-z, 0-9, and the marks - _ . ~), and rewrites everything else as a percent sign followed by two hexadecimal digits. A space becomes %20, an ampersand becomes %26, a question mark becomes %3F, and a Cyrillic or emoji character is first turned into its UTF-8 bytes and then each byte is percent-escaped. Decoding reverses the process, reading each %XX triplet back into the original byte and reassembling the UTF-8 string. Everything happens locally in your browser using the JavaScript engine's own encoding routines, so nothing you paste is ever uploaded, logged, or sent to a server. This matters when the "URL" you are debugging is actually a signed API request, an OAuth callback, or a query string carrying a customer email or session token. Real uses are everywhere: fixing a link that breaks because it contains a & or a # in the middle, building a redirect_uri for a login flow, encoding search terms before appending them to an endpoint, reading a webhook payload that arrived double-encoded, or decoding a UTM-tagged campaign URL to see the raw parameters. Developers, QA testers, marketers checking tracking links, and support staff pasting a mangled URL from a ticket all benefit. A practical tip: encode only the component (a single parameter value) rather than a whole URL, otherwise you will escape the :// and slashes that need to stay literal. Watch for double-encoding, where %2520 means a %20 was itself encoded again. If decoding fails on a stray % that is not followed by two hex digits, that is usually the real bug in the link you were given, not a fault in the tool.
Frequently asked questions
What is the difference between encoding a whole URL and encoding just a parameter value?
Encoding a full URL (encodeURI style) keeps structural characters like :, /, ?, # and & intact so the address still works, while encoding a component (encodeURIComponent style) escapes those characters too because inside a single value they would otherwise be misread as separators. Use component mode for individual query values and full-URL mode for entire addresses.
Why does a space sometimes become %20 and other times a plus sign?
Percent-encoding per RFC 3986 turns a space into %20, and that is what this tool produces. The plus sign for a space is a separate, older convention specific to the application/x-www-form-urlencoded format used in HTML form submissions. Both mean space in a query string, but %20 is the safe, general-purpose choice for URLs.
It says my input can't be decoded. What went wrong?
Decoding fails when the text contains a % that is not followed by two valid hexadecimal digits, for example a literal percent sign in a password or a truncated sequence like %2. That usually means the source URL was malformed or only partially encoded. Fix or escape the stray % and try again.
Does it handle emoji, accented letters, and non-Latin scripts correctly?
Yes. Non-ASCII characters are first converted to their UTF-8 byte sequence, then each byte is percent-escaped, so an emoji or a Cyrillic word may expand into several %XX groups. Decoding reassembles those bytes back into the original characters, matching how modern browsers and servers exchange Unicode in URLs.
I decoded a link and still see %XX sequences. Why?
The URL was double-encoded, meaning it was percent-encoded twice, so one pass of decoding only removes the outer layer (for example %2520 becomes %20). Run Decode a second time to recover the original text. This commonly happens when a URL passes through several systems that each encode it again.
Related tools
Browse all free online tools in Text tools and more.
Frequently asked questions
Component or full URL?+
Both encodeURIComponent and encodeURI modes are supported.