Skip to main content
ByteKiwi
Home URL Decoder

URL Decoder

Free online URL decoder. Decode percent-encoded URLs and query strings back to readable text with real-time output, error detection, and one-click copy.

URL-encoded
Decoded

Features

Everything you need, nothing you don’t.

  • Decodes percent-encoded URLs and strings in real time as you type
  • Handles %20 spaces, %26 ampersands, and all percent-encoded characters
  • Detects and reports invalid percent sequences with clear error messages
  • One-click copy decoded output to clipboard
  • Expand either pane to fullscreen for working with long URLs
  • No data leaves your browser - everything runs client-side

Frequently asked questions

What is URL decoding?

URL decoding (percent-decoding) reverses the percent-encoding process - it converts percent-encoded sequences like %20 back to their original characters (in this case, a space). It is used when reading query parameters, form submissions, or any data that was URL-encoded before transmission.

When do I need to URL-decode a string?

You typically need to URL-decode a string when reading query parameter values from a URL, parsing form data received from an HTTP request, debugging API calls by inspecting encoded request payloads, or reading logged URLs that contain encoded characters.

What does "invalid percent-encoded string" mean?

A percent character (%) must always be followed by exactly two hexadecimal digits (0-9, A-F). If the input contains a % that is not followed by two valid hex digits - or is at the end of the string - the decode will fail. Fix or remove the invalid % characters and try again.

What is the difference between %20 and "+"?

Both represent a space character, but in different contexts. %20 is the standard percent-encoding for a space in URLs (RFC 3986). The + character represents a space only in the application/x-www-form-urlencoded format used by HTML forms. This tool uses decodeURIComponent, which correctly decodes %20. A + is left as a literal plus sign.

Can I decode a full URL with query parameters?

Yes. Paste the full encoded URL and this tool decodes all percent-encoded sequences in one pass. The decoded output may contain characters like &, =, and / that are structural parts of the URL, reflecting the decoded values rather than individual parameters.

How is URL decoding different from Base64 decoding?

URL encoding replaces unsafe characters with %XX hex sequences and is used for safe transport in HTTP URLs and form data. Base64 encoding converts binary or arbitrary text to a set of 64 safe ASCII characters and is commonly used in authentication tokens, email attachments, and data URIs. They are separate encoding schemes for different use cases.

How do I decode a Proofpoint encoded URL?

Proofpoint Email Protection rewrites links in emails into a tracking URL that starts with urldefense.com or urldefense.proofpoint.com. These URLs contain the original destination percent-encoded inside the u= query parameter. To decode one: copy the full Proofpoint URL, paste it here, and look for the u= value in the decoded output. Then decode that value separately to get the original URL. Alternatively, extract the u= parameter value and paste just that portion.

How do I decode a Microsoft SafeLinks URL?

Microsoft Defender for Office 365 (formerly ATP) rewrites links in emails to SafeLinks URLs that start with *.safelinks.protection.outlook.com. The original URL is percent-encoded in the url= query parameter. Paste the full SafeLinks URL here, locate the url= value in the decoded output, and that is the destination address. To go directly to the original link, copy the url= value and paste it into your browser.

URL Decoding in Other Contexts

How percent-encoding works across HTML, HTTP, and common programming languages.

HTML and HTTP URL Decoding

Percent-encoding is the same standard whether a URL comes from an HTML <a href> attribute, an HTTP Location header, or a browser address bar. Copy any encoded URL from an HTML source file or HTTP response and paste it above - the decoder handles all of them identically.

URL Decoding in Python

Use urllib.parse.unquote() from the standard library:

from urllib.parse import unquote, unquote_plus

# Standard percent-decoding (%20 -> space)
unquote('hello%20world%21')   # 'hello world!'

# Form-encoded decoding (+ -> space, then %XX)
unquote_plus('hello+world%21')  # 'hello world!'

URL Decoding in Java

Use java.net.URLDecoder from the standard library:

import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

String encoded = "hello%20world%21";
String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8);
// Result: "hello world!"

// Note: URLDecoder also converts + to spaces (HTML form decoding).
// For strict %XX-only decoding, use URI.create(encoded).getPath() instead.