URL Encode & Decode.
Percent-encode text for URLs and decode it back — live, UTF-8 aware, entirely in your browser.
URL Encoder
Percent-encoding · RFC 3986
The result appears here.
Everything runs on your device — nothing you enter is transmitted, stored, or logged.
Why URLs need encoding
A URL is plain ASCII with strict structure: ? starts the query, & separates parameters, = assigns values. Any of those characters inside a value — or any non-ASCII character — must be percent-encoded as its UTF-8 bytes (ä → %C3%A4), or the URL silently changes meaning.
Component vs. full URL
The single most common mistake is using the wrong scope. Component mode (JavaScript's encodeURIComponent) escapes structural characters too — right for query values, path segments and form fields. Full-URL mode (encodeURI) keeps :/?#&= intact — right only for tidying a complete URL. Encoding a full URL with component mode destroys it.
URL encoding in your code
JavaScript
component vs URI
// single query value
encodeURIComponent("a&b=c"); // "a%26b%3Dc"
// safer: let URLSearchParams do it
const p = new URLSearchParams({ q: "a&b" });
p.toString(); // "q=a%26b"Python
urllib.parse
from urllib.parse import quote, unquote, urlencode
quote("a&b=c", safe="") # "a%26b%3Dc"
unquote("%C3%A4") # "ä"
urlencode({"q": "a&b"}) # "q=a%26b"Frequently asked questions
What is URL encoding (percent-encoding)?
URLs may only contain a limited set of ASCII characters. Everything else — spaces, umlauts, emoji, and characters with special meaning like ? or & — is written as one or more %XX escapes of its UTF-8 bytes. A space becomes %20, ä becomes %C3%A4.
Should I encode the whole URL or just a value?
Almost always just the value. Encoding a query-string value (the component mode here, like JavaScript's encodeURIComponent) escapes &, =, ? and / so they cannot break the URL structure. Whole-URL mode (encodeURI) keeps those structural characters intact — use it only to clean up a complete URL that already has its structure.
Why does a + sometimes mean a space?
In the application/x-www-form-urlencoded format — the classic HTML form submission — spaces are encoded as +. In every other part of a URL, a space must be %20 and a literal + means plus. When decoding form data, treat + as a space; this decoder leaves + untouched because it is correct percent-encoding behavior.
What is double encoding, and why is it a problem?
Encoding an already encoded value: %20 becomes %2520, because the % itself gets escaped. The classic symptom is %25 sequences appearing in URLs. Encode exactly once, at the moment you assemble the URL — and decode exactly once at the consumer.
Which characters never need encoding?
The unreserved set defined by RFC 3986: letters A–Z and a–z, digits 0–9, and the four symbols - _ . ~. Everything else is either reserved (has structural meaning) or must be percent-encoded.
Is my data uploaded when I use this tool?
No — encoding and decoding run entirely in your browser. Nothing you enter is transmitted, stored, or logged, which you can verify in your browser's network tab.
Free tools from a European software company.
- Runs in your browser
- Made & hosted in the EU
- No account needed