URL Problems

How to Decode a URL and Read Percent-Encoded Text

Decoding a URL turns sequences such as %20 and %2F back into the characters they stand for, so you can read a query string or debug a redirect. Errors usually mean the text is not valid percent-encoding.

Last updated: 2 November 2026

Open URL Encoder and Decoder →

Step-by-step

  1. Paste the encoded text into the URL decoder.
  2. Use Decode URL for a full address, or Decode Component for a single encoded value.
  3. Read the result. If it reports invalid encoding, look for a lone % sign or a % followed by non-hex characters.
  4. If the text was encoded twice, decode it a second time. You will see %25 where a single % was expected.
  5. Check the decoded value before using it in a script or database query.

Reading common sequences

%20 is a space, %2F is a slash, %3F is a question mark, %26 is an ampersand, %3D is an equals sign and %23 is a hash. Non-English characters are encoded as several %XX groups, because they are first converted to UTF-8 bytes.

Double encoding

If you see %2520, the text has been encoded twice: %25 is an encoded percent sign. This often happens when a link passes through two systems that both encode it. Decode once for each layer.

A safety note

Decoded input is untrusted data. Never put it straight into a database query, file path or page without validating or escaping it for that context.

USE THE TOOL

Finish the task with DevUtilityKits

Use the relevant online utility, check the result, and continue with your development workflow.

Open URL Encoder and Decoder →Open URL Analyzer →
FAQ

Frequently asked questions

What does %20 mean?

It is the percent-encoded form of a space.

Why does the decoder report malformed encoding?

A % sign must be followed by two hex digits. A stray % or a cut-off sequence is invalid.

What is double encoding?

It happens when already encoded text is encoded again, for example %20 becoming %2520. Decode it once for each layer.

Is decoded text safe to use?

Treat it as untrusted. Validate or escape it before using it in queries, paths or HTML.