URL Encoder & Decoder
Percent-encode a value, a whole URL or form data, decode encoded text even when parts are broken, and break a URL down into its parts and parameters.
Runs in your browser. Nothing you add is uploaded.
What the URL Encoder & Decoder does
URLs may only contain a restricted set of ASCII characters, so anything else — spaces, ampersands, accented letters, emoji — must be percent-encoded to survive the trip. Get this wrong and a query parameter silently truncates at the first '&', or a redirect drops half its target. This tool encodes text the right way for where it's going — a single value, a whole URL, or HTML form data with + for spaces — and decodes percent-encoded text without giving up on the first broken escape. It also spots double encoding and breaks any URL into its parts, with every query parameter decoded.
How to encode or decode a URL
- Choose Encode, Decode or Break down a URL.
- When encoding, say what the text is: a single value or path part (which must escape / ? & =), a whole URL (which must keep them), or form data (spaces become +).
- When decoding, keep “+ means a space” on for query strings and turn it off for paths.
- Read the result. If it still contains escapes like %20, it was encoded twice — use Decode again.
- To inspect a link, use Break down a URL to see the host, path and each query parameter in plain text.
The URL Encoder & Decoder runs entirely in your browser — nothing you enter is uploaded, stored, or logged.
When to use it
Building query strings safely
A search term containing '&' or '=' will break the parameter it sits in unless encoded. Encoding the value — not the whole URL — is the correct fix.
Passing a URL as a parameter
Redirect and callback parameters carry one URL inside another. The inner URL must be fully component-encoded, turning '://' into '%3A%2F%2F', or the outer URL's parser will misread it.
Reading encoded links from logs
Analytics and server logs store URLs encoded. Decoding makes it obvious what a user actually searched for or which campaign parameters were attached.
Good to know
- Spaces become '%20' in paths but may appear as '+' in query strings — both decode to a space, but only in the query component.
- Encoding an already-encoded string double-encodes it: '%20' becomes '%2520'. If you see '%25' in output you did not expect, that is the symptom.
- The characters - _ . ~ are unreserved and never need encoding.
- Fragment identifiers after '#' are never sent to the server, so encoding problems there are purely client-side.
Frequently asked questions
Why encode URLs?
What is the difference between encodeURI and encodeURIComponent?
Why does my encoded URL have %2520 in it?
Do I need to encode non-English characters?
Should spaces be %20 or +?
Is there a maximum URL length?
Related tools
JWT Decoder
Decode a JWT, see what each claim means, and verify its signature.
JSON Formatter
Format, validate and minify JSON with exact error locations.
Query String Parser
Turn a query string into a table or JSON, decoded.
Regex Builder
Build a regular expression from blocks, with live matches.