URL Decode — Online URL Decoder

🔒 Runs in your browser — nothing is sent to a server

URL decode any percent-encoded string back to its original, readable form in a single click. Paste a URL-encoded value below — query parameters, encoded paths, form bodies, redirect URLs — and this tool expands every `%xx` sequence into the matching UTF-8 character, so diacritics, CJK and emoji decode correctly. The entire process runs 100% inside your browser: the URL never leaves your device, nothing is uploaded, logged or sent to any server. A handy URL decoder for API debugging, log inspection and copy-pasted links.

Two-pane view: input and output side by side
Copied!

When to use a URL decoder

Developers reach for a URL decoder countless times a day: reading Google Analytics campaign parameters pulled from `utm_*` query strings, reverse-engineering a signed redirect URL inside an OAuth flow, cleaning up log entries that store the raw request line, inspecting the `href` of a shortened link, or pulling back human-readable values from a form body captured in DevTools. Running the decode in a trustworthy, offline-first page is the fastest and safest way to see what a URL-encoded string actually represents before acting on it — no copy-pasting into an online service that might log your tokens.

How percent decoding works

Percent encoding works at the byte level. Every `%` is followed by two hexadecimal digits that represent one byte in the original sequence. To decode, a URL decoder walks the string left to right, pastes every `%xx` into a byte buffer, keeps unescaped characters as their ASCII bytes, and finally interprets the whole buffer as UTF-8 text. Malformed input — a stray `%`, non-hex digits, truncated escapes — throws an error immediately. This page performs the full walk in the browser by delegating to the native `decodeURIComponent` implementation, so no network call is needed and no byte ever leaves your device.

Examples

Input
hello%20world
Output
hello world
URL decode classic — `%20` to space
Input
https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dfree%20converter
Output
https://example.com/search?q=free converter
Decode URL online — full query string
Input
Chi%C8%99in%C4%83u
Output
Chișinău
URL decode diacritics — Romanian city name
Input
decode%20percent%20encoded%20string
Output
decode percent encoded string
Decode percent encoded string — keyword demo

FAQ

How do I URL decode a percent-encoded string?

Paste the percent-encoded string into the input box above — this tool runs `decodeURIComponent` on it and shows the decoded result in the output pane. No button press, no upload. Programmatically, call `decodeURIComponent(str)` in JavaScript, `urllib.parse.unquote(str)` in Python, or `java.net.URLDecoder.decode(str, "UTF-8")` in Java.

What is URL decoding (percent decoding)?

URL decoding, also known as percent decoding, is the reverse of URL encoding. It expands `%xx` escape sequences back to the bytes they represent, then interprets those bytes as UTF-8 text. Percent decoding is needed anywhere a URL, query string, form body or path segment carries characters outside the safe ASCII alphabet — spaces, `&`, `?`, diacritics, emoji.

What is the difference between `decodeURIComponent` and `decodeURI`?

`decodeURIComponent` decodes every escaped sequence, including reserved URL characters like `%2F` (`/`) and `%3F` (`?`). `decodeURI` is stricter — it leaves reserved characters alone so the URL structure stays intact. For decoding a query parameter value, form body or path segment, you almost always want `decodeURIComponent`. This page uses `decodeURIComponent` under the hood.

Can this URL decoder handle diacritics, CJK and emoji?

Yes. The decoder treats every `%xx` pair as a byte and reassembles the bytes into UTF-8. That is the right path for Romanian diacritics, Chinese/Japanese/Korean characters, Arabic, Hebrew and emoji — all of which get expressed as multi-byte UTF-8 before URL encoding. Pasting `Chi%C8%99in%C4%83u` returns `Chișinău`, and longer non-Latin strings behave identically.

Why does `+` become a space in some decoders but not here?

`+` meaning a space is a convention of the legacy `application/x-www-form-urlencoded` media type used by HTML forms — not of URLs in general. JavaScript's `decodeURIComponent` keeps `+` as a literal plus sign. If you are decoding a form body and need `+` → space, replace `+` with `%20` before pasting, or use a dedicated form-decoder.

Is my data safe when I decode URL online here?

Yes. This URL decoder runs entirely in your browser using the native `decodeURIComponent` function. Your URL-encoded input and the decoded result stay on your machine — nothing is uploaded, no server-side logging happens, and there is no account or history. Safe for tokens, session IDs, signed redirect URLs and other confidential strings.

Glossary

Percent encoding

Percent encoding is the URL-safe transport format defined by RFC 3986. Any byte that cannot appear literally in a URL — reserved characters, control codes, non-ASCII text — is replaced by `%` followed by two hexadecimal digits. UTF-8 multi-byte characters produce a sequence of `%xx` escapes, one per byte. Percent decoding reverses the process.

URL decoder

A URL decoder is any tool or function that reverses percent encoding. It accepts a string containing `%xx` escapes and returns the original bytes, usually interpreted as UTF-8 text. URL decoders exist in every language's standard library and in browser APIs; this page is a URL decoder that runs fully client-side and never uploads your input.

decodeURIComponent

The built-in JavaScript function that performs full percent decoding, including reserved URL characters. `decodeURIComponent("%C8%99")` returns `ș`. It throws a `URIError` on malformed escape sequences, which is why the input box shows an "Invalid URL-encoded input" error when a stray `%` is present. This page's decoder is a thin wrapper around `decodeURIComponent`.

URI vs URL

A URI (Uniform Resource Identifier) is the broader concept — any string that identifies a resource, including URNs like `urn:isbn:…`. A URL is a URI that also tells you how to fetch the resource (scheme, host, path). In practice, most tooling uses the two terms interchangeably, and a "URI decoder" behaves identically to a URL decoder — they share the same percent-encoding rules.

unescape

`unescape` is a deprecated JavaScript global that was the original way to decode `%xx` escapes. Unlike `decodeURIComponent`, it does not understand UTF-8 and produces mojibake on non-ASCII input. Modern code should always use `decodeURIComponent`. If you land here after seeing `unescape` in old tutorials, treat it as the legacy name for percent decoding and use this page's decoder instead.

Related tools