URL Encode / Decode
Percent-encode text for URLs, decode %20-style escapes, and split a URL into its parts and query parameters. Full UTF-8 support, in your browser.
Runs in your browser. Nothing is uploaded.
About the URL Encode / Decode
URLs can only contain a limited set of characters. Spaces, accented letters and symbols like & or # must be percent-encoded (for example, a space becomes %20) or they break the address or change its meaning.
Encoding is needed when you build query strings by hand, pass a URL inside another URL (such as a redirect parameter), or prepare values for an API. Decoding turns escaped text from logs, analytics or browser address bars back into something readable. The URL parser splits an address into its scheme, host, path, query parameters and fragment, which helps when debugging tracking links or long redirect chains.
How to use the URL Encode / Decode
- 1
Paste text or a URL, open a file, or load the sample.
- 2
Pick how to encode: Component for a single query value or path segment, Full URL to keep : / ? & = intact, or Form to turn spaces into +.
- 3
Press Encode or Decode. Decoding reports the position of a broken % escape.
- 4
Press Parse URL to see the scheme, host, path, decoded query parameters and fragment as JSON.
Examples
red shoes & bagsred%20shoes%20%26%20bagscafé/東京caf%C3%A9%2F%E6%9D%B1%E4%BA%ACGood to know
- Component mode also escapes ! ' ( ) and *, following RFC 3986. Full URL mode cannot tell a literal & or = in a value from one that separates parameters, so encode values one by one in Component mode when that matters.
- Parse URL needs a complete URL with a scheme, such as https://. Passwords in a URL are shown as (hidden).
- Decoding does not turn + into a space unless Form is selected, because + is a literal plus sign outside form data.
Frequently asked questions
What is the difference between %20 and +?
Both can mean a space. %20 works anywhere in a URL. + means a space only in form-encoded query strings (application/x-www-form-urlencoded); elsewhere it is a literal plus.
Why does decoding say the escapes are not valid UTF-8?
The text was probably encoded with an older character set such as Latin-1. Each % escape is a byte, and those bytes do not form valid UTF-8 characters.
Is my code uploaded to a server?
No. Processing happens entirely in your browser, in a background thread. Your input is never sent to our servers or stored anywhere.
Related tools
More tools that pair well with this one.