URL Decoder

Turn percent-encoded text back into something readable. The decoder handles plus signs as spaces and can unwind strings that were encoded more than once, which is the usual cause of a URL full of %25 sequences.

Your files never leave this device

Decode a URL Live · Handles double encoding

Options

Repeat decoding unwinds strings that were encoded more than once.

How to decode a URL

  1. Paste the encoded text or URL into the box above.
  2. Leave plus-as-space on unless the text came from a path segment.
  3. Turn on repeat decoding if you can see %25 sequences in the input.
  4. Read the decoded result below.
  5. Copy it, or download it as a text file.

What this decoder handles

  • Standard percent-encoding, including multi-byte UTF-8 sequences.
  • Plus signs converted to spaces, matching form-encoded data.
  • Repeat decoding for strings encoded twice or more.
  • A report of how many passes were needed.
  • Clear errors when a % is not followed by two hex digits.
  • Live updating with no upload.

Reading an encoded URL

Encoded URLs are hostile to read. A tracking link, a redirect chain or a logged request arrives as a wall of percent signs, and the interesting part, where it actually points, what the parameters say, is buried in the escapes.

Decoding turns it back into text. %20 becomes a space, %2F becomes a slash, %C3%A9 becomes é. What was unreadable becomes obvious, which is usually all you needed.

The double-encoding problem

If a URL contains %2520, it has been encoded twice. The first pass turned a space into %20; the second pass encoded that percent sign into %25, leaving %2520.

This happens constantly in redirect chains, where a URL is encoded to be a parameter and then the whole thing is encoded again by another layer. Decoding once leaves you with %20 still visible. The repeat option keeps decoding until the string stops changing, and reports how many passes it took, which tells you how many layers of encoding were applied, and therefore roughly where in your pipeline the extra one is coming from.

Plus signs are ambiguous

  • In application/x-www-form-urlencoded data, which is what HTML forms send, a plus means a space.
  • In a path segment, a plus is a literal plus character.

Nothing in the string tells you which context it came from, so the option is yours. Plus-as-space is on by default because query strings are what people decode most often. Turn it off when decoding a path, or when the value genuinely contains a plus. A phone number in international format, for example, where turning +44 into " 44" is clearly wrong.

When decoding fails

A percent sign must be followed by exactly two hexadecimal digits. If it is not, the string is malformed and cannot be decoded, usually because it was truncated when copied, or because a literal percent sign was never encoded in the first place.

Malformed UTF-8 sequences fail too. %C3 on its own is the first byte of a two-byte character with the second byte missing, which is a sign the string was cut short.

Reading the parameters properly

Once a URL is decoded, breaking it into components is often the more useful next step. The URL parser separates protocol, host, path, query and fragment, and lists every parameter with its decoded value already in place, which saves decoding by hand at all.

To encode in the other direction, the URL encoder handles both component and whole-URL modes. Everything runs in your browser, so URLs containing session tokens are never transmitted.

What decoding reveals in a tracking link

Marketing and referral links are where percent-encoding piles up most. A link from an email campaign typically wraps the real destination inside a click-tracking service, which wraps it again inside an analytics redirect, each layer encoding the one below it.

Decoding repeatedly unwraps that chain and shows the final destination. That is genuinely useful for two reasons: it tells you where a link actually goes before you follow it, and it exposes the parameters being attached to your visit. If you are auditing a campaign, or simply checking a link you were not expecting, this is the fastest way to see what is really there.

Frequently asked questions

What does %2520 mean?

The string was encoded twice. A space became %20, then the percent sign was itself encoded as %25. Turn on repeat decoding to unwind it.

Should + be treated as a space?

In query strings and form data, yes. In a path segment a plus is a literal plus. There is nothing in the string to tell you which, so the option is yours.

Why does decoding fail with an error?

A percent sign must be followed by two hexadecimal digits. If it is not, the string was probably truncated when copied, or contains a literal percent that was never encoded.

Can I decode just one parameter?

Yes, paste the value on its own. Or use the URL parser, which splits the URL into parts and shows every parameter already decoded.

Is my URL sent anywhere?

No. Decoding happens in your browser, which matters because URLs frequently contain session tokens and identifiers.