URL Encoder & Decoder
Encode or decode text for use in a URL — separately for a single component or an entire structured URL — with malformed input clearly reported, never silently corrupted.
Enter text above.
Encode/decode component is for a single value that will sit inside a URL — a query parameter or path segment — and encodes every special character, including & = ? #. Encode/decode full URL is for an already-structured URL and leaves those structural characters alone, only encoding characters that would never be valid in a URL at all.
Encoding text that's already percent-encoded will encode the % signs again (e.g. %20 becomes %2520) — this is expected, standards-correct behavior, not an error, so only encode a value once.
This runs entirely in your browser — nothing you enter here is sent to a server.
Example: encoding the component 50% off & free! produces 50%25%20off%20%26%20free! — safe to place inside a query parameter. Encoding the same text as a full URL would leave characters like & untouched, since a full-URL encoder assumes those characters are already doing their structural job.
A common mistake is running a value through full-URL encoding when it will be placed inside another URL as a parameter — this leaves characters like & and = unescaped, which can accidentally start a new parameter instead of being treated as part of the value. Use component encoding whenever you're building one piece of a URL, not encoding an already-complete one.
How to use the URL Encoder & Decoder
- Pick a mode: Encode component, Decode component, Encode full URL, or Decode full URL.
- Type or paste your text into the input box; the Result updates as you type.
- If the Result shows a red error, fix the stray % or invalid %XX sequence it describes.
- Click Copy result to copy the output, or Clear to start over.
Example: Encoding a full URL with an accent and a space
Choose Encode full URL and paste https://example.com/search?q=café menu&lang=fr. The Result is https://example.com/search?q=caf%C3%A9%20menu&lang=fr: the é becomes its UTF-8 bytes %C3%A9 and the space becomes %20, while : / ? = and & are left in place.
Questions about the URL Encoder & Decoder
- Does decoding turn + signs into spaces?
- No. Both decode modes only translate %XX sequences, so a+b%20c decodes to a+b c. If your text came from an HTML form submission that used + for spaces, replace + with %20 before decoding.
- Why does Decode full URL leave some sequences like %26 encoded?
- Full-URL decoding keeps escapes for characters that have structural meaning in a URL, such as & = ? and #, so decoding cannot change how the URL is split into parts. Use Decode component on a single value to decode those too.
- How are emoji and non-English characters encoded?
- They are converted to UTF-8 bytes, each written as %XX. For example, café 😀 encoded as a component becomes caf%C3%A9%20%F0%9F%98%80.
- Why do I get "Could not encode this text"?
- The input contains an unpaired surrogate, a broken half of an emoji or other character, which cannot be represented in UTF-8. This usually comes from text that was cut off mid-character; re-copy the original text.