URL Encode & Decode

Encode parameters or whole URLs — with the right function for each job.

🔒 Runs locally in your browser — nothing is uploaded.

Query string parser

Edit any name or value below — the full URL is rebuilt and re-encoded for you.

About this tool

Spaces, accents, &, = and most symbols are not allowed raw inside a URL — they must become %XX escape sequences (percent encoding). The critical choice is which function: encodeURIComponent escapes everything including &, = and ? and is correct for parameter values; encodeURI keeps URL structure characters intact and is only for encoding a complete URL.

Mixing them up is a classic bug: encodeURI on a parameter silently breaks values containing & or =. Read the full comparison in encodeURI vs encodeURIComponent. The query-string parser below the converter decodes every parameter of a pasted URL into an editable table — change a name or value and the full URL is rebuilt for you. Everything runs in your browser — more free tools at dec0de.dev.

URL (percent) encoding replaces characters that would otherwise break a URL with a % followed by their byte value in hex — a space becomes %20, an ampersand %26. It is how you safely put search terms, redirect targets, tokens and non-ASCII text into a link or a query string. Reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), spaces and anything outside the unreserved set (letters, digits and - _ . ~) get encoded; everything else is left readable.

Frequently asked questions

encodeURIComponent or encodeURI — which should I use?

Use encodeURIComponent for a single query value or path segment — it encodes &, =, ?, / and more. Use encodeURI only for a whole URL you don’t want to break. Encoding a value with encodeURI is a classic bug.

Why is a space sometimes %20 and sometimes +?

In a URL path a space is %20. In a query string using the form-urlencoded format a space is often written as +. Both decode back to a space, and the "+ means space" toggle switches this tool between the two.

Can I encode a whole list of values at once?

Yes. Turn on "Batch: one value per line" and every line is encoded or decoded independently, keeping the original order and blank lines. The result can be copied or downloaded as a text file.

Which characters actually need encoding?

Reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), spaces, non-ASCII text and control characters. The unreserved set — letters, digits and - _ . ~ — is always left as-is.

Why does decoding fail with "invalid escape"?

A % must be followed by exactly two hex digits, and the resulting bytes must form valid UTF-8. A literal % that was never encoded (write %25), a truncated sequence like %2, or bytes from another charset all break decoding. This tool names the offending sequence and its position, and jumps you to it.

Is my URL data kept private?

Yes. Encoding, decoding and query-string parsing all run in your browser. Your input is only remembered in this browser’s local storage so it survives a reload — the Clear button wipes it. Nothing is uploaded anywhere.