Skip to content
Your text never leaves your browser

URL Encode/Decode

Percent-encode your URLs. Or un-percent-encode them. Both verbs are ugly.

Input
Output

What this does

DEVS: encodeURIComponent() / decodeURIComponent(). Plus encodeURI() for full URLs. Browser built-ins.

URLs have a strict character set. Characters like ?, &, =, #, and / are reserved for structural purposes. If your actual data contains any of those, they need percent-encoding or the URL breaks. This tool does that conversion, and reverses it when you need to read the result.

Common use cases

Building redirect URLs. OAuth callbacks, payment return URLs, tracking links. A redirect URL passed as a query parameter needs encoding so its & and = characters don't collide with the outer URL's parameters.

Debugging messy query strings. Paste an encoded URL, decode it, read the actual parameter values. Tweak what you need, encode it back.

Handling international characters. Accented letters, CJK characters, emoji. They all get UTF-8 encoded first, then each byte gets percent-encoded.

Things to know

Two encoding modes, and picking the right one matters. "Encode" uses encodeURIComponent, which encodes everything except unreserved characters. Use this for individual values: query parameters, form fields, path segments. "Encode Full URL" uses encodeURI, which leaves the URL structure intact and only encodes characters that aren't valid anywhere in a URL.

Double-encoding is the classic pitfall. You encode a string, pass it to a function that encodes it again, and %20 becomes %2520. If you're seeing percent signs in your decoded output, something encoded it twice. Decode once, check the result, decode again if needed.

Privacy

Your text stays in your browser. No server, no API, no logs. Encode and decode freely.