SomeeLab.tools

URL Encoder & Decoder

Percent-encode a query value or a whole address, and decode it back. Free, no signup, runs in your browser.

For a single query value. Escapes & = ? / # too, so the value cannot break out of its parameter.

One value or a whole address

The two modes differ over five characters: &, =, ?, / and #.

One value escapes all of them. Use it for anything that goes inside a parameter — a search term, a redirect target. Drop an un-escaped URL after ?next= and the & inside it reads as the start of a new parameter, truncating your value.

Whole address leaves the structural characters alone. Use it when you already have a working URL and only want the spaces and non-ASCII characters cleaned up. Run a full address through this mode and the slashes in https:// survive, so the link keeps working.

One rule settles it: building part of an address, use one value; holding an address already, use whole address.

Spaces: + or %20

You will see both, but they belong in different places. %20 is the standard form and works anywhere in a URL. + comes from the older HTML form encoding, and only counts as a space inside a query string.

A + in a path is a literal plus sign. Decode a filename with form rules and you silently rename the file. This tool follows the standard and produces %20.

Double-encoded values

If a decode leaves you with %2520 or %253A, the value was encoded twice: the % itself got escaped to %25 on the second pass.

It usually happens when code encodes a value that was already encoded. Decoding once more gets you the text, but the real fix is deciding where encoding happens. Encode once, at the point where the value is placed into the URL, and pass the raw text everywhere else.

Characters that stay as they are

A-Z, a-z, 0-9 and -, ., _, ~ are the unreserved set: the spec marks them safe, so they pass through untouched. Seeing them unchanged is not a bug.

Non-ASCII characters expand: an accented letter is two UTF-8 bytes, a CJK character three, an emoji four, each byte becoming a %XX pair. That is why an encoded address suddenly looks so long.