URL Encode / Decode
Percent-encode text so it travels safely inside a URL, or decode an encoded URL back into readable text. Choose component mode for individual values or full-URL mode for complete addresses — everything runs in your browser.
URL converter
Example: caf%C3%A9 decodes to "café".
How percent-encoding works
A URL is limited to a small, unambiguous character set. Characters outside it — spaces,
accents, emoji — and characters that have structural meaning inside it — ?,
&, =, /, # — must be escaped as
% plus the character's UTF-8 bytes in hexadecimal. Encoding
price = 100% & up as a query value produces
price%20%3D%20100%25%20%26%20up — every reserved character escaped, so the value cannot be mistaken for
URL structure.
Full-URL mode instead preserves the structure: https://example.com/a b?q=1&r=2
becomes https://example.com/a%20b?q=1&r=2 — only the space is escaped, and the
? and & keep doing their jobs. Both examples on this page are generated
by the same code that powers the converter above.
Choosing the right mode
The most common encoding bug is using the wrong scope. Encoding a whole URL in component mode
escapes the :// and breaks the link; pasting a raw value into a query string without
component encoding lets a stray & truncate it. Rule of thumb: building a URL from
parts → encode each part in component mode; fixing up a URL you already have → full-URL mode.
Frequently asked questions
What is percent-encoding?
URLs may only contain a limited character set, so every other character is written as % followed by its UTF-8 bytes in hex. A space becomes %20, & becomes %26, and é becomes %C3%A9. Decoding reverses the process.
When do I use component mode vs. full-URL mode?
Component mode encodes everything reserved — use it for a single value going into a query string or path segment, so characters like & = / ? do not break the URL structure. Full-URL mode keeps structural characters (:/?#&=) intact — use it to clean up a complete URL that contains spaces or non-ASCII characters.
Why does + sometimes mean a space?
Only in query strings using the HTML form convention (application/x-www-form-urlencoded) — a legacy of early web forms. Everywhere else in a URL, + is a literal plus. The decoder leaves + alone by default; tick the option if your input came from a form-style query string.
Why did my %-string fail to decode?
Every % must be followed by exactly two hex digits, and the byte sequence must form valid UTF-8. A trailing "%2" or a stray "100%" in the text makes the string undecodable — encode the % itself as %25.
Text is processed locally in your browser and never transmitted. The conversion functions are tested and typed — see the methodology page.