URL Decoder

    Decode percent-encoded URL text into a readable string using Digital Domain Kit's server-side PHP decoder. Paste an encoded full URL, path, query string, or individual parameter value to convert escape sequences such as %3F, %26, %2F, and %20, with copy support for the decoded result.

    URL Decoder overview

    The Digital Domain Kit URL Decoder converts URL-encoded text back into a more readable form. It is designed for quick inspection of encoded links, query strings, redirect parameters, tracking URLs, copied form payloads, and individual URL components. Paste the encoded text into the single input field, submit it, and the tool returns the decoded string in a success panel with a Copy action.

    This page was last checked on September 16, 2026. The live tool is a server-side Livewire component maintained by Digital Domain Kit. Its submit handler passes the submitted string to PHP's urldecode() function, then displays the result in the page. The visible decoded result is escaped by Blade, and the copy link now receives the decoded value through Blade JSON escaping. That matters for results containing apostrophes, quotes, ampersands, or angle brackets, because the copy handler should receive the string as data instead of breaking the inline JavaScript attribute.

    A URL decoder is most useful when you need to read what a URL already contains. It does not validate whether a destination is safe, prove that a link is trustworthy, remove tracking, or normalize every URL according to a browser's navigation rules. Treat the output as inspection text. If the decoded string contains another encoded URL inside a parameter, decode that nested value deliberately and review each level before using it anywhere sensitive.

    How to use the URL Decoder

    1. Copy the encoded URL, query string, path segment, or parameter value you want to inspect.
    2. Paste it into the field labeled for the URL value. The tool accepts plain text rather than requiring a complete URL.
    3. Click the submit button to send the value to the server-side Livewire component.
    4. Read the decoded result in the green success panel below the input.
    5. Use Copy if you want to place the decoded result on your clipboard. If browser clipboard access is blocked, select the displayed result manually and copy it with your operating-system shortcut.

    The interface is intentionally minimal. There is no mode selector, batch input, file upload, download button, or syntax-highlighting editor in the verified tool. Repeated submissions replace the previous result when the new input is not empty.

    What this decoder changes

    The verified implementation follows PHP urldecode() behavior. According to the PHP manual for urldecode(), percent encodings in the form %## are decoded and plus signs are converted to spaces. That plus-sign rule is important: name=Jane+Doe becomes name=Jane Doe. This matches traditional application/x-www-form-urlencoded query-string behavior, but it is not the same as every raw URI decoding workflow.

    The URI generic syntax specification, RFC 3986, defines percent-encoded octets as a percent sign followed by two hexadecimal digits. In practical terms, %20 represents a space, %2F represents a slash, %3F represents a question mark, and %26 represents an ampersand. MDN's encodeURIComponent() documentation is also a useful reference for understanding why URL components often encode reserved characters before they are placed into a query string.

    Encoded input Decoded output observed in the live tool What changed
    https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dred%2Bshoes%26page%3D2 https://example.com/search?q=red+shoes&page=2 Reserved URL punctuation was restored. The encoded %2B became a literal plus sign.
    name=Jane+Doe&city=New+York name=Jane Doe&city=New York Literal plus signs became spaces because the server uses PHP urldecode().
    caf%C3%A9%20menu café menu The UTF-8 byte sequence for the accented letter decoded, and %20 became a space.
    bad%ZZvalue% bad%ZZvalue% Malformed percent-looking text was left visible rather than converted into another character.
    a%27%3Ctag%3E a'<tag> Apostrophe and angle-bracket characters decoded and remained safely copyable in the repaired copy handler.

    Inputs, outputs, and limitations

    The input is a single text value. It can be a full URL, a query string, a path fragment, a redirect parameter, or a smaller encoded value copied from logs, analytics tools, email links, QR-code payloads, browser developer tools, or API debugging output. The tool does not require the input to start with http:// or https://. It also does not check whether the decoded text is a valid URL after decoding.

    The output is one decoded text string displayed on the page. The result is not split into individual parameters, sorted, normalized, syntax highlighted, or classified by safety. For example, if %26 decodes into &, the output may now look like it contains another query parameter. That is expected, but it also means decoding can change how a string would be interpreted by another parser. RFC 3986 cautions that URI components should be separated before percent-encoded octets are decoded, because decoded delimiter characters can change interpretation. Use this tool to inspect text, then decide whether the decoded delimiters belong in a path, query value, fragment, or nested URL.

    Malformed percent sequences are not presented as a validation error in the live checks performed for this draft. A sample value of bad%ZZvalue% remained visible as bad%ZZvalue%. That means the tool is forgiving for messy copied text, but it also means it should not be treated as a strict URL syntax validator. If your workflow needs rejection of incomplete escapes, invalid UTF-8, or malformed URL structure, run a separate validation step after decoding.

    Blank input has a small interface caveat. The component only decodes when the submitted input is non-empty. In a live test, submitting an empty field after a successful decode did not clear the old success result; the previous decoded string stayed visible. If you need to avoid copying stale output, confirm that the input you meant to decode is present before pressing the button, or refresh the page before starting a new check.

    Copy behavior and repaired escaping

    The result panel includes a Copy link that calls the site's clipboard helper with the decoded result. This behavior was retested against a decoded apostrophe and angle-bracket sample. The input a%27%3Ctag%3E produced the visible result a'<tag>, and the rendered copy handler passed the value using escaped JavaScript string data such as \u0027 and \u003C. That confirms the previously documented raw inline-string breakage is no longer present in the live copy handler.

    Clipboard success still depends on the browser environment. Browser permissions, page focus, an embedded webview, security settings, extensions, or clipboard manager behavior can prevent a scripted copy. If the link does not copy, manually select the displayed decoded result and copy it. The copy action does not change the decoded text; it only attempts to place the current result onto your system clipboard.

    Privacy and security expectations

    This is not a browser-only decoder. The verified Livewire implementation submits the entered string to the Digital Domain Kit server, where PHP runs urldecode() and returns the result. Because processing is server-side, do not paste secrets, private access tokens, signed URLs, one-time login links, password reset URLs, medical identifiers, customer data, internal hostnames, or confidential query strings unless you are comfortable submitting that text to the site. Digital Domain Kit's URL Decoder page should not be read as a privacy guarantee, anonymity guarantee, secure storage guarantee, or safe-link scanner.

    Decoding a URL can make hidden structure easier to inspect, but it does not make the URL safe to open. A malicious or misleading link can remain malicious after decoding. Watch for nested redirect parameters, lookalike domains, unexpected ports, encoded slashes in path values, repeated decoding layers, or values that turn into script-like text. If you are investigating a suspicious link, inspect the decoded text without visiting the destination unless you have a controlled analysis environment.

    Common decoding examples

    Use the decoder when a link copied from an email, ad platform, analytics export, log file, QR payload, or API response is hard to read. A search URL such as https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dred%2Bshoes%26page%3D2 becomes https://example.com/search?q=red+shoes&page=2, which makes the scheme, host, path, query name, query value, and page number easier to see. If a parameter contains a nested URL, you may need to copy only that nested encoded value and decode it separately.

    For form-style query values, remember the plus-sign rule. first_name=Ana+Maria decodes to first_name=Ana Maria. If you need to preserve a literal plus sign in an encoded value, the encoded form is usually %2B. That is why red%2Bshoes decodes to red+shoes, while red+shoes decodes to red shoes with this tool's PHP behavior.

    For UTF-8 text, percent-encoded byte sequences can turn back into readable characters. The live test caf%C3%A9%20menu decoded to a readable cafe word with an accented final letter followed by a space and menu. If a copied string uses an unusual character set or was encoded incorrectly before it reached you, the result may still contain unexpected characters. Decode first, then compare the output with the system or language context that produced the URL.

    Troubleshooting

    Problem Likely cause What to try
    The output still contains percent signs. The input may contain malformed sequences, literal percent characters, or nested encoding that needs another deliberate pass. Check whether each percent sign is followed by two hexadecimal digits. Decode nested values separately instead of blindly decoding the entire string repeatedly.
    Plus signs became spaces. The tool uses PHP urldecode(), which treats + as a space. If a literal plus is required, the encoded source should use %2B. Use this caveat when comparing query values.
    The decoded URL appears to gain new parameters. An encoded delimiter such as %26 or %3D became & or =. Identify whether the delimiter belongs to the outer query string or to a nested value before using the result elsewhere.
    Copy does not work. The browser may block clipboard access or the page may not have the required focus or user gesture. Select the visible result manually and copy it with your keyboard or context menu.
    An old result remains after submitting an empty field. The current component only processes non-empty input and does not clear the previous success result on blank submission. Refresh the page or enter the new encoded text before submitting so you do not copy stale output.

    Related tools

    Use the URL Encoder when you need the reverse operation: preparing spaces, reserved characters, and non-ASCII text for use inside a URL. Use URL Extractor when you need to pull URLs out of a larger block of text before decoding one of them. Use QR Code Reader when the encoded URL is stored in an image-based QR code. Use Base64 to Text when the unreadable value is Base64 rather than percent encoding. Use JSON Viewer when a decoded parameter contains JSON that needs to be inspected as structured data.

    Editorial notes

    This documentation is based on the inspected production Livewire component, the production Blade view, live headless-browser checks of the public page, and the PHP and URI references linked above. To report a problem with the URL Decoder, use the Digital Domain Kit contact page.