ToolNest logoToolNest.

How to Decode a URL Online Free

To decode a URL online free, paste the encoded address into a decoder, which turns percent codes like %20 back into spaces and %3F back into question marks, restoring the original readable address. Decoding never changes the destination, it only reveals it. Decode any link instantly with our free URL encoder and decoder.

Try it now: URL Encoder / Decoder →

What URL Decoding Reverses

A URL can only safely contain a limited set of characters, letters, digits, and a handful of punctuation marks, so everything else travels in disguise. A space becomes %20, a question mark becomes %3F, an ampersand becomes %26, and an accented letter becomes a sequence of percent codes for its UTF-8 bytes, so a link shared in an email or pasted from a spreadsheet often arrives looking like a string of percent signs. Percent encoding is the disguise: each unsafe byte is replaced by a percent sign followed by two hexadecimal digits giving the byte value, and decoding is simply reversing that replacement, turning each %XX group back into the character it stands for. Decoding never changes where the link goes, it only changes how the link looks, which is why a decoded link and its encoded form are the same address in two costumes. The reason encoding exists at all is that characters such as the question mark, the ampersand, and the hash have jobs inside a URL: the question mark starts the query string, the ampersand separates parameters, and the hash starts the fragment, so a literal question mark inside a search term would break the URL structure unless it is encoded. Encoding keeps those characters as data instead of structure, and decoding restores them to readable data for a human reader.

Try it now: URL Encoder / Decoder →

Step by Step: Decode a URL Online Free

Decoding a URL online takes four short steps, and the only skill involved is telling the encoded part from the rest of the link. Step one, copy the full encoded URL, from the https:// at the start to the last character, because decoding half a URL gives half an answer and can hide the parameter that matters. Step two, paste it into a decoder, which scans for percent groups and replaces each one with its character, leaving the ordinary letters untouched. Step three, read the decoded result and check the query string, the part after the question mark, because that is where the interesting values live: a search term, a product name, or a redirect target, all readable once decoded. Step four, decide what to do with the decoded address: if you only wanted to read it, stop there, and if you need to share it, re-encode it before pasting, because a decoded URL with raw spaces and special characters breaks when pasted into many tools. One caution belongs here before the chart below: decoding a link does not make it safe, it only makes it readable, and a readable link to an unfamiliar domain is still an unfamiliar domain, so read the domain name after decoding, not just the friendly-looking parameter values. Our free URL encoder and decoder handles both directions, and our guide to encoding URL special characters explains the forward trip in full.

Percent Decoding Chart: The Codes You Meet Most

A short chart covers nearly every percent code an ordinary reader meets, because the same handful of characters gets encoded again and again. A space is %20, and it is the most common code of all, appearing in every search term and file name with a space in it. A question mark is %3F, an ampersand is %26, an equals sign is %3D, a plus sign is %2B, a hash is %23, a percent sign itself is %25, a forward slash is %2F, and a colon is %3A. Two codes deserve a special note because they cause the most confusion: %2B is a literal plus sign, while a bare plus sign in a query string is often read as a space by form handling, which means a plus in a decoded query can mean two different things depending on where it appears, and the only safe reading is to check the context. The %25 code is the second trap, because %25 decodes to a percent sign, so the sequence %2520 decodes once to %20 and only twice to a space, which is the double-encoding problem covered below. Accented and non-Latin characters take a different form: each character becomes several percent codes, one per UTF-8 byte, so a single accented letter can appear as two codes and a Chinese character as three, and decoding them requires reading the whole byte sequence together, not one code at a time. A decoder that handles UTF-8 does this automatically, which is one reason to use a real decoder rather than replacing codes by hand.

URL Decode vs Encode: Which Direction Fixes What

Encoding and decoding fix opposite problems, and choosing the wrong direction is the most common URL mistake after double-encoding. Encode when a value is about to be placed inside a URL, such as a search term, a file name, or a parameter value, because encoding protects the structural characters from being misread as structure. Decode when a URL has already arrived encoded and needs to be read, checked, or debugged, because decoding restores the human-readable form. The classic failure is decoding a URL and then pasting the decoded form into a tool that expects an encoded one, which breaks on the first space, and the classic double failure is encoding an already-encoded URL, which turns %20 into %2520, a code that decodes to the literal text %20 instead of a space. The test for double-encoding is simple: decode once, and if the result still contains percent codes that look like they belong to the original value, decode again, but only if you are sure the value was encoded twice, because decoding a legitimately encoded value twice corrupts it in the other direction. A related pair of guides helps here: our guide to encoding URL special characters lists which characters must be encoded, and our guide to creating URL slugs from titles shows how clean readable URLs avoid most encoding trouble in the first place.

How to Decode a URL in JavaScript

In code, decoding is a built-in function, and the choice between the two built-ins matters. The function decodeURIComponent decodes a single component, such as one parameter value, and it decodes everything including %2F and %3F, which is correct for a value but wrong for a whole URL, because it would also decode the slashes and question marks that structure the URL. The function decodeURI decodes a whole URL and deliberately leaves the structural characters encoded, so the slashes, question mark, and hash survive, which is the right behavior when the input is a complete address. The safe pattern is to decode components with decodeURIComponent and whole URLs with decodeURI, and never to decode a component with decodeURI, which leaves %26 inside a value that will later be split on ampersands. Both functions throw an error on a malformed sequence, such as a lone % at the end or a % followed by non-hexadecimal characters, so production code wraps the call in a try-and-catch block and falls back to the original string when decoding fails. The same caution applies in other languages: Python has urllib.parse.unquote for the same job, and PHP has urldecode, and in every language the component-versus-whole-URL distinction is the decision that matters. For campaign links, our guide to adding UTM parameters to a Facebook ad URL shows encoded parameters in a real marketing link, and our free UTM builder constructs those links without hand-encoding anything.

When Decoding Exposes a Problem

Decoding is also a diagnostic tool, because the readable form often reveals what the encoded form hid. A link that decodes to a different domain than the text around it promised is a phishing warning, and it is worth pausing on: the encoded form hides the destination from a quick glance, which is exactly why suspicious links arrive encoded. A redirect chain becomes visible after decoding, when a parameter named url or redirect decodes to a second full address, and following that chain by hand, decoding each hop, shows where the link really ends before a browser follows it automatically. A broken percent sequence, such as %2 at the end of a string or %ZZ in the middle, means the URL was truncated or corrupted in transit, and the fix is to re-copy it from the source rather than guessing the missing character. A decoded parameter that still contains percent codes is the double-encoding signal from the earlier section, and a decoded value full of replacement characters means the original text was not UTF-8, or the decoder read it in the wrong encoding, both of which point back to the source system. None of these problems is fixed by decoding alone, but all of them are invisible until decoding happens, which is why decoding is the first step in checking any link you do not fully trust. For a related encoding family, our free text to binary converter shows another reversible encoding, and our free word counter keeps any report about a suspicious link inside a length limit.

Do it in one click

Encode or decode any URL instantly — free, no signup.

Open the Free Tool →