Skip to content

URL encoder and decoder

Percent-encode text for URLs, or decode it back to readable form.

Runs in your browser — nothing is sent anywhere.

Why URLs need encoding

A URL has a grammar. Characters such as ? & = / # carry structural meaning, and spaces are not permitted at all. When a value inside a URL contains any of those, it has to be percent-encoded or the address is parsed wrongly — the query string ends early, a parameter splits in two, or the link simply breaks.

The distinction that matters

There are two encoding modes and choosing the wrong one is the most common mistake here.

Component encoding escapes the structural characters too. Use it for a single value — a search term, a redirect target, an email address in a query parameter. A URL passed through it is fully escaped, which is exactly right when that URL is a parameter inside another URL.

Whole URL encoding leaves the structure intact and escapes only what is genuinely illegal, such as spaces. Use it when you have a complete address that needs tidying rather than embedding.

The rule of thumb: encoding a value means component; encoding an address means whole URL.

Spaces, plus signs and a long-standing confusion

In a path, a space becomes %20. In a query string, older form encoding uses + instead, which is why the two appear interchangeably and why a + in a search term sometimes arrives as a space. Percent-encoding is unambiguous, and it is what this tool produces.

Decoding

Decoding turns %E2%9C%93 back into ✓. Malformed input — a stray % without two hex digits after it — is reported rather than silently mangled, since a half-decoded URL is worse than an unchanged one.

01

Common questions

When should I use component encoding?

For a single value inside a URL — a search term, an email address, or a redirect target that is itself a URL.

Why is a space sometimes + and sometimes %20?

Older form encoding uses + in query strings. Percent-encoding is unambiguous and is what this produces.

What does %20 mean?

A space. Percent-encoding writes a character as % followed by its hexadecimal byte value.

Why did decoding fail?

A stray % not followed by two hex digits. We report it rather than returning half-decoded text.

Is my text uploaded?

No. Everything runs in your browser.