URL Encoder and Decoder — Percent Encoding Tool
Encode or decode URLs and query strings, with a full breakdown of every URL part.
🔒 Runs in your browser — files never uploaded ⚡ No signup 💯 Free
URL breakdown
Percent-encode text for safe use in a URL, or decode an encoded URL back to something readable. Paste a full URL and you also get it broken into protocol, host, path, query parameters and fragment.
How to use URL Encode / Decode
- Choose encode or decode.
- Paste your URL or text.
- Pick the encoding scope — see below for which one you need.
- Copy the result, or read the URL breakdown underneath.
Component vs full URI — the choice that matters
This is the distinction that causes most URL bugs.
Component encoding escapes everything with special meaning, including & ? = / #. Use it for a single query value. If a parameter contains an ampersand and you do not encode it, the server reads it as the start of a new parameter and your value is silently truncated.
Full URI encoding leaves the structural characters intact so a complete URL stays functional. Use it when encoding a whole address that already has a valid structure.
Form encoding matches application/x-www-form-urlencoded, where spaces become + rather than %20. Use it for form submissions.
Common encodings
Space is %20, & is %26, ? is %3F, = is %3D, # is %23, / is %2F, and + is %2B. Each byte becomes a percent sign plus two hex digits; non-ASCII characters are encoded as their multi-byte UTF-8 sequence.
Frequently asked questions
When should I use component vs full URI encoding?
Use component encoding for a single query parameter value — it escapes & ? = / which would otherwise break the URL structure. Use full URI encoding when encoding a complete, already-valid URL.
Why is a space sometimes %20 and sometimes +?
%20 is the standard percent encoding. The + form comes from HTML form submission (application/x-www-form-urlencoded). Both are decoded correctly here — pick "Form" mode for the plus variant.
Why does my decode fail?
A percent sign must be followed by exactly two hexadecimal digits. A stray % in the text — common in copied content — makes the whole string invalid.