Free · No signup

URL Encoder / Decoder

Percent-encode text for safe use in URLs and query strings — or decode %-sequences back to readable text.

Encoding uses component rules (like JavaScript's encodeURIComponent): every reserved character is escaped. When decoding, + is treated as a space, as in query strings.

Processed in memory — never stored, no account needed.

How percent encoding works

URLs only allow a limited set of characters. Everything else — spaces, accents, &, =, ?, # — must be percent-encoded: the character's UTF-8 bytes are written as %XX hexadecimal pairs. A space becomes %20, é becomes %C3%A9.

The subtlety is context: characters like & and = are legal in a URL but have meaning as query-string separators. Encoding a whole URL versus a single parameter value are different operations — this tool applies component rules (like JavaScript's encodeURIComponent), which is what you want for individual values.

A classic pitfall is double encoding: encoding an already-encoded value turns %20 into %2520. If a decoded value still contains %-sequences, it was probably encoded twice at some point in the pipeline.

Broken query strings break APIs

ContinuumNexus calls your endpoints exactly as configured — encoded query strings included — and alerts you when responses go wrong.

Frequently asked questions

What is the difference between encodeURI and encodeURIComponent?
encodeURI keeps URL-structural characters (/, ?, &, =) intact because it expects a full URL. encodeURIComponent escapes them too, because a parameter value must not break the surrounding query string. This tool behaves like encodeURIComponent.
Why does a space sometimes become + instead of %20?
The + convention comes from the older application/x-www-form-urlencoded format used by HTML forms. In modern percent encoding a space is %20. When decoding, this tool accepts both and treats + as a space.
What is double encoding and why is it a problem?
Double encoding happens when an already-encoded value is encoded again: %20 becomes %2520. The receiving server then decodes only one layer and sees literal %20 in the data. Encode exactly once, at the last moment before building the URL.
Do I need to encode the whole URL or just the parameters?
Encode each dynamic value individually before inserting it into the URL. Encoding the entire assembled URL would also escape the structural characters (/, ?, &) and break it.