Copied!
Paste any percent-encoded URL into the box above and click Decode to get a clean, readable version. Or enter a URL with special characters and click Encode to make it browser-safe. This free URL encode and URL decode tool converts any string instantly, with no download or account required.
URLs can only contain a limited set of characters. Letters, numbers, and a few symbols (like hyphens and underscores) pass through unchanged. Everything else, including spaces, punctuation, and non-Latin characters like Arabic or Hebrew, gets converted into a percent-encoded format before being transmitted over the internet.
A percent-encoded character looks like this: %20 (a space), %2F (a forward slash), or %D7%97%D7%A0%D7%95%D7%AA (a Hebrew word encoded for a URL). The browser and server both understand these codes, but they are unreadable to humans, which is where a URL decoder helps.
Use the Decode button when you have a percent-encoded URL and want to read it clearly. For example, if you copy a URL from your browser's address bar and see a long string of %XX codes, decoding it gives you the original readable text.
Use the Encode button when you have a URL with special characters or spaces that need to be made safe for transmission. Before submitting a URL in a form, API call, or query string, encoding ensures it won't break.
Not sure whether to hit Decode or Encode? Here's a quick guide based on what you're starting with and what you're trying to do:
| Your starting point | Your goal | Use |
|---|---|---|
A URL full of %20, %2F, or %D8 codes | Read it as plain text | Decode |
| A plain URL with spaces or special characters | Make it safe to share or submit | Encode |
| A copied Google or Amazon search result URL | See the original search query | Decode |
| A UTM campaign link with spaces in the campaign name | Prepare it for sharing in email or ads | Encode |
| An Arabic or Hebrew URL from a browser address bar | Get the readable characters back | Decode |
| A redirect_uri or callback URL for an API | Nest it safely inside another URL | Encode |
If you're ever unsure, try Decode first. If the output still contains %XX codes, the URL may have been encoded twice. Run it through Decode a second time to get the fully readable result.
These are the characters you'll encounter most often in encoded URLs:
| Character | Encoded Form | Where It Appears |
|---|---|---|
| Space | %20 or + | Search queries, product names, city names |
| / | %2F | Path separators inside query strings |
| ? | %3F | Query string markers passed as parameter values |
| = | %3D | Key-value separators inside query parameters |
| & | %26 | Parameter separators passed as values |
| # | %23 | Hash fragments used inside query strings |
| @ | %40 | Email addresses in query parameters |
| + | %2B | Plus sign (distinct from space encoding) |
| : | %3A | Colons in URLs passed as parameter values |
| , | %2C | Commas in list parameters |
URL encoding shows up in more places than most people realise:
URLs for websites in Arabic, Hebrew, Chinese, and other non-Latin scripts are one of the most common reasons people need a URL decoder. When you copy an Arabic URL from a browser address bar, it looks like a long string of %D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA codes. After decoding, you get the original Arabic characters back, readable and shareable.
This matters for online marketers, SEO specialists, and content managers who work with multilingual websites. A decoded URL is easier to share in emails, embed in anchor text, and reference in internal links. Many CMS platforms, including Shopify, automatically encode special characters in URLs, so running a decode check is a useful habit when auditing multilingual storefronts.
%2520 instead of %20. Run the decode twice if the first pass still shows percent codes.Most URL decoding tasks do not need software installed locally. This online tool handles the job directly in your browser. If you prefer a browser-level shortcut without visiting a separate page, consider a Chrome extension like Decode URLs, which decodes in the address bar as you browse.
URL decode means converting a percent-encoded URL back into readable text. When a URL contains characters like %20, %2F, or %D7%97, those are encoded representations of spaces, slashes, or non-Latin characters. Decoding reverses the process and restores the original string.
URLs must only contain a safe subset of ASCII characters. Spaces, punctuation, and non-Latin letters (Arabic, Hebrew, Chinese, etc.) are converted to percent-encoded sequences during transmission. The % is followed by the hexadecimal code for that character. Browsers do this automatically, and a URL decoder shows you what those codes actually say.
Copy the full URL from the browser's address bar. It will look like a long string of %D8 and %D9 codes. Paste it into the decode box above and click Decode. The tool converts the UTF-8 encoded sequences back into readable Arabic text instantly.
Encoding converts readable text into a URL-safe format (spaces become %20, Arabic characters become %Dxx sequences). Decoding reverses the process, converting those %xx codes back into readable characters. Use encoding before sending data in a URL; use decoding when you receive or copy an encoded URL and need to read it.
Yes, completely free with no limits. You can decode or encode as many URLs as you like, with no account or signup required.
Use the built-in decodeURIComponent() function. Pass the encoded string as the argument and it returns the decoded version:
const encoded = "Hello%20World%21";
const decoded = decodeURIComponent(encoded);
console.log(decoded); // "Hello World!"Use decodeURIComponent() for individual query parameter values. If you need to decode an entire URL (including slashes and colons), use decodeURI() instead, which leaves URL-structural characters intact.
Use the built-in decodeURIComponent() function. Pass the encoded string as the argument and it returns the decoded version:
const encoded = "Hello%20World%21";
const decoded = decodeURIComponent(encoded);
console.log(decoded); // "Hello World!"Use decodeURIComponent() for individual query parameter values. To decode an entire URL including slashes and colons, use decodeURI() instead, which leaves URL-structural characters intact.