URL Encoder / Decoder
Percent-encode, decode and inspect any URL
🔒 100% free · no signup · files never leave your device
URLs are only allowed to contain a small set of ASCII characters, so everything else — spaces, accents, emoji, ampersands inside a value — has to travel as percent-encoding. That is why a search for 'hello world' arrives as hello%20world, and why a value containing & silently breaks a query string when it is not escaped first. JavaScript exposes two different rules for this, and picking the wrong one is a classic source of broken links.
This URL encoder and decoder gives you both rules side by side: Component mode (encodeURIComponent) escapes reserved characters such as &, ?, / and #, which is what you want for one query parameter value; Full URL mode (encodeURI) leaves the URL structure alone so a complete address stays clickable. Decoding works in both directions with a clear message when a percent-escape is malformed, and the Parse URL view splits an address into protocol, host, port, path and a table of decoded query parameters — handy for reading a long redirect or tracking link at a glance.
Why use URL Encoder / Decoder
Building a query string by hand
Encode a search phrase or email address in Component mode before dropping it into ?q= so ampersands and spaces do not truncate the value.
Reading a long OAuth or redirect URL
Paste the whole callback URL into Parse URL to see redirect_uri, state and scope as separate readable rows instead of one unreadable line.
Debugging double-encoded links
If a URL shows %2520 instead of %20, decode it twice here to confirm a value was encoded once too often somewhere in your pipeline.
Sharing a link with non-Latin characters
Encode a path that contains Cyrillic, Arabic or Chinese text so chat apps and email clients do not mangle it when they linkify the address.
Pro tips
- Use Component mode for a single value and Full URL mode for a whole address — encoding a complete URL with encodeURIComponent turns https:// into https%3A%2F%2F and kills the link.
- Seeing %2520 means the text was encoded twice: %20 got encoded again, and the % became %25. Decode until the result stops changing.
- encodeURIComponent leaves ! ' ( ) * unescaped even though some strict backends reject them, so check your API docs if a value with parentheses fails.
- In the Parse URL view the query table shows decoded values, so you can tell whether a parameter really contains a space or a literal %20.
- A URL with no scheme is parsed as https:// — add http:// explicitly if you are inspecting an insecure endpoint, because the protocol row will otherwise mislead you.
How to use URL Encoder / Decoder
- 1Pick Encode or Decode and choose Component or Full URL mode
- 2Paste your text or URL into the input box
- 3Copy the converted result with one click
- 4Switch to Parse URL to see host, path and query parameters
Frequently Asked Questions
What is the difference between Component and Full URL mode?▾
Component mode uses encodeURIComponent and escapes reserved characters like & ? / #, so it is right for a single query value. Full URL mode uses encodeURI and leaves those characters intact.
Why does decoding fail with an error?▾
A percent sign must be followed by two hex digits. A stray % or a sequence like %ZZ is invalid, and the tool points at the exact spot.
Are spaces encoded as %20 or +?▾
This tool produces %20, the standard percent-encoding. The + form only applies inside application/x-www-form-urlencoded form bodies.