URL Decoder
Decode any percent-encoded URL or string back to plain text instantly in your browser. Follows RFC 3986. Free, no sign-up required.
Updated May 2026
How the URL decoder works
Three steps from percent-encoded to readable
1. Paste the encoded string
A full URL, a query string fragment, or any percent-encoded value.
2. Read the decoded result
Every `%XX` sequence turns back into its original character, multi-byte UTF-8 sequences are reassembled, and `+` becomes a space.
3. Copy it
Click Copy or press Shift+Enter to grab the decoded string.
What this URL decoder does
More than a bare decodeURIComponent() call
Handles `%XX` and `+`
Decodes percent-encoded sequences and also converts + back to a space, the way application/x-www-form-urlencoded bodies use it.
Reassembles multi-byte UTF-8
Accented letters, CJK characters, and emoji made of several %XX bytes come back as a single, correct Unicode character.
Flags malformed sequences
A % not followed by two valid hex digits throws a clear error instead of silently returning garbled text.
Runs entirely in your browser
Decoding happens locally via decodeURIComponent() — nothing is sent to any server.
Examples
Common percent-encoded strings and what they decode to
When you'll reach for a URL decoder
The scenarios that come up most often
Debugging an API response
Headers like Location or Referer routinely arrive percent-encoded and unreadable as-is.
Reading raw server logs
Query strings in access logs turn from %3F noise into an actual sentence once decoded.
Inspecting a redirect chain
A redirect URL embedded inside another URL is almost always double-encoded — decode twice to see the real destination.
Working through an OAuth flow
Authorization codes and tokens show up percent-encoded in callback URLs — you need them plain to copy into a request.
Security review of HTTP requests
Encoded payloads in request parameters can hide injection attempts that are only obvious once decoded.
Decoded output looks wrong? Start here
The mistakes that trip people up most
Double encoding
A string encoded twice needs two passes through the decoder — the first pass still leaves %XX sequences in the result.
`+` isn't always a space
It only means space inside application/x-www-form-urlencoded query strings — in a path segment, a literal + is just a plus sign.
Malformed `%` sequence
A % not followed by two valid hexadecimal digits is invalid and will produce an error rather than a guessed result.
Why decode a URL here
Every decode happens locally in JavaScript, right in your browser — nothing is uploaded, nothing is logged.
Correct multi-byte UTF-8 reassembly and proper handling of + as a space in query strings sidestep the two mistakes people run into most when they try to decode a URL by hand.
Quick Tools vs. the browser console
Same underlying function, a much faster workflow
Frequently asked questions
URL decoding converts percent-encoded %XX sequences back to characters, following RFC 3986. Base64 decoding converts a string made of A–Z a–z 0–9 + / characters back into its original bytes — they're unrelated formats. If your string looks like aGVsbG8=, use a [Base64 decoder](/en/tools/base64-decode) instead.
References
Related Tools
- URL Encoder Developer Encode any URL or text to percent-encoding instantly in your browser. Follows RFC 3986. Free, no sign-up required.
- Base64 Decoder Developer Free online Base64 decoder — decode Base64 strings back to plain text instantly in your browser. Validates input and shows decoded payload size.
- Base64 to Image Developer Paste a Base64 string or data URL and instantly preview the decoded image — free online converter supporting PNG, JPEG, WebP, GIF, SVG. No upload, runs locally.
- HTML Entity Decoder Developer Decode HTML entities to plain text online — unescape <, >, &, " and all named entities instantly in your browser.
- Base64 Encoder Developer Encode any text or string to Base64 instantly in your browser. Supports UTF-8, shows character count and output payload size. Free, no signup, 100% client-side.