URL Encoder / Decoder
Percent-encode strings so they're safe inside URLs — or turn %20-riddled strings back into readable text.
Why URLs need encoding
URLs only allow a limited set of characters. Everything else — spaces, &, ?, #, non-ASCII text — must be percent-encoded: the character's UTF-8 bytes written as %XX hex pairs. A space becomes %20, & becomes %26, and নমস্কার becomes a run of %E0%A6… bytes. Skip the encoding and your query parameter silently truncates at the first & — one of the classic works-until-it-doesn't bugs.
Component mode vs full-URL mode
The two modes mirror JavaScript's two functions. Component mode (encodeURIComponent) escapes every reserved character — use it for a value you're placing inside a query string. Full-URL mode (encodeURI) leaves URL structure like :/?#&= intact — use it when encoding an entire URL without breaking it. Encoding a full URL with component mode (or vice versa) is the most common URL-encoding mistake; this tool makes the difference explicit.
FAQ
What's the difference between %20 and + for spaces?
Both mean "space", but + is only valid in the query-string part of a URL (a convention from HTML form encoding, application/x-www-form-urlencoded). %20 works everywhere. The decoder here accepts both.
Why does my decoded string throw a "malformed URI" error?
A % in percent-encoded text must be followed by exactly two hex digits. A stray % (say, from "100% free" pasted as-is) breaks decoding — that text was never actually encoded, so there's nothing to decode.
Is my data uploaded anywhere?
No — encoding and decoding run entirely in your browser using the standard JavaScript functions. Nothing is transmitted or logged.
Free tools are just the start
Deploy your next app on bare-metal cloud with per-second billing — your first app is free, no credit card required.
More free tools
Generate strong, random passwords with a cryptographically secure RNG — entirely in your browser.
Encode text to Base64 or decode it back — UTF-8 safe, with URL-safe variant support.
Decode a JSON Web Token's header and payload, check expiry, and verify HS256 signatures.
Generate MD5, SHA-1, SHA-256 and SHA-512 hashes of any text — instantly, in your browser.
Validate JSON with precise error locations, then pretty-print or minify it — with sorted keys if you like.
Strip comments and whitespace from HTML, CSS or JavaScript and see exactly how many bytes you saved.