URL Encoder Decoder

Quick answer: URL Encoder Decoder is a free online tool: percent-encode URLs, query strings, and form data — or decode them back to readable text — instantly, free, with no signup and no data leaving your browser. Free with no signup or download: get results instantly, all inside your browser.

Percent-encode URLs, query strings, and form data — or decode them back to readable text — instantly, free, with no signup and no data leaving your browser.

What is the URL Encoder Decoder?

URL encoding (percent-encoding) converts characters that are illegal or ambiguous in a URL — spaces, ampersands, question marks, non-ASCII text — into a % followed by two hexadecimal digits, like %20 for a space. This URL encoder decoder online tool converts in both directions: encode messy text into URL-safe form, or decode a percent-encoded string back into human-readable text.

You need encoding whenever user input, search terms, or international characters go into a query string, a redirect URL, or a POST body. An unencoded & inside a search term would be read as a parameter separator; an unencoded space breaks the URL entirely. Decoding is equally useful when you are staring at a %E4%B8%AD%E6%96%87 blob in an analytics report and want to know what page it actually was.

Encoding follows the standard encodeURIComponent rules used across the web, handling full Unicode correctly. Decoding reports a clear error if the input contains a malformed sequence such as a lone %. Everything runs locally — paste production URLs freely, since nothing is sent to any server.

A practical tip: encode early, decode late. Encode user input the moment it enters a URL you are building, and decode it only when you need to display or log the human-readable value. Keeping values encoded while they travel through redirects, JavaScript, and server logs avoids the classic bug where a decoded ampersand splits one parameter into two halfway through a flow.

How to use the URL Encoder Decoder

  1. Select Encode to make text URL-safe, or Decode to turn percent-encoded text back into readable form.
  2. Paste your URL, query string, or encoded blob into the input box.
  3. Run the conversion — spaces become %20, & becomes %26, Unicode becomes multi-byte sequences.
  4. Copy or download the result for use in links, redirects, or API calls.
  5. If decoding reports a malformed sequence, look for a stray % not followed by two hex digits.

URL Encoder Decoder use cases

Building search and filter URLs

User-typed search terms with spaces, quotes, or & must be encoded before appending to ?q=. Encode the term here, then concatenate it into your link or API request.

Debugging redirect chains

Marketing links and SSO flows nest URLs inside URLs, each layer encoded again. Decode repeatedly to peel the layers and see where a redirect actually lands.

Reading analytics data

Page paths with non-English slugs appear percent-encoded in server logs and analytics exports. Decode them in bulk to recover the real page titles and search terms.

Preparing form POST bodies

Application/x-www-form-urlencoded bodies encode every special character. Encode values here when hand-crafting test requests in curl or Postman.

Tips

  • Encode only the value, not the whole URL — encoding ? and & in the structure itself will break the link.
  • A + in a query string means a space in form encoding; this tool uses %20, which is unambiguous everywhere.
  • Double-encoded text (%2520) means it was encoded twice — decode twice to recover the original.
  • Browsers display decoded URLs in the address bar but copy the encoded form; decode here to see the true text.

Frequently asked questions

What is percent-encoding?
Percent-encoding replaces unsafe or reserved characters with % followed by two hexadecimal digits representing the byte value — for example, a space becomes %20 and & becomes %26. It is how URLs safely carry characters that would otherwise break parsing.
When do I need to URL-encode something?
Whenever arbitrary text goes into a URL: search terms, usernames, redirect targets, or non-ASCII slugs in query strings and paths. Encoding guarantees the text is transmitted literally instead of being misread as URL structure. A simple rule: if the text came from a user or a database rather than from your route definitions, encode it before it touches a URL.
What is the difference between encodeURI and encodeURIComponent?
encodeURI leaves structural characters like ? & / : intact and is meant for whole URLs; encodeURIComponent encodes those too and is meant for individual values. This tool uses encodeURIComponent rules, which is what you want for query values and form data.
Why does my decoded text show an error about URI malformed?
The input contains a % not followed by two valid hex digits — for example a literal % sign or truncated input. Find the stray % and either encode it as %25 or remove it. Analytics exports and double-encoded redirects are the most common sources of these stray percent signs.
Does it handle non-English characters?
Yes. Unicode text is encoded as UTF-8 bytes first, so Chinese, Arabic, emoji, and accented characters all encode and decode correctly. This matches what browsers do when you paste international text into the address bar — the underlying encoding is identical.
Is my URL sent to a server?
No. All encoding and decoding happens in your browser with built-in JavaScript functions. Production URLs with tokens or session IDs never leave your device. That makes it safe for debugging OAuth callbacks and signed URLs that carry secrets in their parameters.
Can I decode a URL that was encoded multiple times?
Yes — just run Decode again on the output. Each pass removes one layer of encoding, so %2520 becomes %20 on the first pass and a space on the second. Marketing redirect chains and nested SSO flows commonly stack two or three encoding layers, so repeated decoding is a normal debugging step.
Why do I see %25 in my decoded output?
Because the original text contained a literal percent sign, which encodes as %25. Decoding %2520 once gives %20 (an encoded space); decoding again gives the actual space. Every %25 you see represents one more layer of encoding still to peel.