How to decode or encode a URL
- Paste text or an encoded string into Input under Encode / decode.
- Click Encode component for a single value, Encode full URL for a whole address, or Decode.
- To inspect a link, paste it into the URL field of the parser.
- Edit, add or remove query parameters and copy the rebuilt URL.
What you can do with URL Encode / Decode & Parser
- Two encoding modes
- Encode component escapes everything except letters, digits and - _ . ! ~ * ' ( ), while Encode full URL keeps : / ? & = # intact.
- Decoder with + support
- Decodes %XX sequences including multi-byte UTF-8, and turns + into a space as form submissions and query strings expect.
- URL parser
- Splits a link into protocol, host, port, path, hash and origin, each shown on its own row with a copy button.
- Editable query parameters
- Every parameter appears as a key and value you can change or remove, and you can add new parameters too.
- Rebuilt URL
- The edited URL is reassembled and properly encoded as you type, ready to copy. Handy for adding or stripping UTM tags.
Percent encoding and encodeURI vs encodeURIComponent
URLs may only contain a limited set of ASCII characters, so anything else, such as spaces, accented letters, emoji, or reserved symbols like & and = inside a value, must be percent-encoded. Each byte becomes a % followed by two hex digits: a space becomes %20, é becomes %C3%A9 in UTF-8, and & becomes %26. HTML forms and many query strings also use + for spaces. Decoding reverses this so you can read tracking links, redirect parameters and API requests.
Choosing the right encoder matters. Use Encode component (encodeURIComponent) for a single value you're inserting into a query string or path segment, because it escapes / ? & = and #. Use Encode full URL (encodeURI) on a complete address you only want to make valid, because it leaves those structural characters alone. Encoding twice is a common bug: %20 turns into %2520. If decoded output still contains %XX codes, run Decode again. The parser also helps audit campaign links by listing every utm_ parameter.
Frequently asked questions
Are the URLs I decode kept private?
Yes. Encoding, decoding and parsing all run in your browser with built-in JavaScript functions. Links you paste, including ones with tokens, session IDs or personal data in the query string, are never sent to a server or stored.
What's the difference between encodeURI and encodeURIComponent?
encodeURIComponent escapes every character with special meaning in a URL, including / ? & = and #, so it's meant for individual values. encodeURI leaves those characters alone and is meant for whole URLs. Here they are the Encode component and Encode full URL buttons.
Why do I get a URI malformed error when decoding?
The input contains a % that isn't followed by two valid hex digits, or a byte sequence that isn't valid UTF-8, often because the string was cut off or only partly encoded. Fix or remove the stray % sign and decode again.
How do I remove UTM parameters from a link?
Paste the link into the URL parser. Each utm_source, utm_medium and other parameter appears as its own row. Click the x next to the ones you want to drop, then copy the cleaned link from the Rebuilt URL field.
Does it decode + as a space?
Yes. The decoder converts + to a space before decoding, which is how HTML forms and most query strings encode spaces. If you need a literal plus sign in the output, it must appear as %2B in the input.