Turn a messy string of %20s and %26s back into clean, readable text in one click. Runs entirely in your browser — nothing is ever sent to a server.
Client-side · UTF-8 · Private · Instant
Your decoded plain text will appear here
Paste an encoded string on the left to start
Definition
URL decoding — also called percent-decoding — is the reverse of URL encoding. When data travels through a web address, characters that aren't URL-safe (like spaces, ampersands, and slashes) get replaced with a percent sign followed by two hexadecimal digits. That's what makes URLs look like a jumble of %20 and %3F symbols.
URL decoding is the process of reading those percent sequences and converting them back to their original characters. %20 becomes a space. %26 becomes an ampersand. %F0%9F%98%8A becomes the emoji 😊.
This is a global standard defined in RFC 3986, and every browser, server, and API on the internet uses it. You'll need to decode URLs any time you're reading raw traffic, debugging API calls, extracting data from logs, or working with URLs that were passed as parameters inside other URLs.
Use Cases
Any time you're staring at a URL full of percent signs and hex codes, you need a decoder. It comes up more often than you'd think.
The Mechanics
The decoder scans your input from left to right. Every time it encounters a percent sign followed by two valid hexadecimal digits, it converts that sequence back to its original character. For multi-byte UTF-8 characters (like emojis or Chinese text), multiple consecutive %XX sequences are combined and decoded together.
%20→ Space ( )%26→ Ampersand (&)%3D→ Equals (=)%3F→ Question Mark (?)%2F→ Slash (/)%23→ Hash (#)%40→ At Sign (@)%2B→ Plus (+)%3A→ Colon (:)%22→ Double Quote (")Capabilities
Your encoded string is decoded the moment you start typing or pasting. No button to click, no page reloads — just instant results.
Toggle the + sign mode to treat + as a space, which is how older HTML form submissions (application/x-www-form-urlencoded) encode spaces.
Everything runs locally in your browser. Your encoded strings never leave your device, never touch a server, never get stored anywhere.
Hit Copy and the decoded plain text lands straight on your clipboard, ready to paste wherever you need it.
Handles any character — Chinese, Arabic, accented letters, emojis, and symbols all decode correctly from their multi-byte UTF-8 percent sequences.
If the input contains a malformed percent sequence, the tool tells you exactly what went wrong instead of silently returning garbage.
Step-by-Step
Drop the percent-encoded URL, query string, or text into the left panel. It can be a full URL, just the query part, or any raw encoded string you've copied from a log, API response, or browser address bar.
The right panel updates in real time. Every %20 becomes a space, every %26 becomes an ampersand, and multi-byte sequences for emojis and Unicode characters are reassembled correctly.
Click the Copy button to grab the decoded plain text to your clipboard, then paste it into your code editor, doc, spreadsheet, or wherever it needs to go.
Deep Dive
Both functions exist in JavaScript and both do percent-decoding, but they cover different scenarios — and using the wrong one can leave characters still encoded.
decodeURIComponent is the aggressive one. It decodes everything it finds — every percent sequence without exception. Use it when you're decoding an individual value, like a query parameter or a redirect target. This is what this tool uses by default, and it's the right choice in the vast majority of real-world cases.
decodeURI is the conservative one. It decodes most percent sequences but deliberately leaves characters that have structural meaning in a URL — specifically /, ?, =, &, #, and : — still encoded. Use it when you have a complete, fully-formed URL and you only want to clean up the cosmetic encoding (like non-ASCII characters in the path), without accidentally disrupting the URL structure.
The practical rule: if you're decoding a value that came from inside a URL (like a query parameter), use decodeURIComponent. If you're decoding a whole URL that you want to keep structurally intact, use decodeURI.
| Encoded | component | URI |
|---|---|---|
%20 | Space ( ) | Space ( ) |
%2F | / (Slash) | %2F (kept) |
%3F | ? (Question) | %3F (kept) |
%26 | & (Ampersand) | %26 (kept) |
%3D | = (Equals) | %3D (kept) |
%23 | # (Hash) | %23 (kept) |
%40 | @ (At Sign) | @ (At Sign) |
FAQ
Common questions about URL decoding, edge cases, and when to use each decoding method.
URL decoding is the process of converting percent-encoded characters back to their original form. When data travels through a URL, unsafe characters like spaces, ampersands, and slashes are replaced with % followed by two hexadecimal digits. URL decoding reverses that — turning %20 back into a space, %26 back into an ampersand, and so on. You need it whenever you're reading encoded URLs from logs, API responses, browser address bars, or analytics tools.
More Utilities
Need to go the other way? Encode special characters into safe percent-sequences for use in URLs and API requests.
Build properly formatted UTM tracking URLs for your marketing campaigns without typing a single percent sign.
Decode Base64-encoded strings back to plain text or binary data — a different encoding system you'll encounter in APIs and auth tokens.
Format and validate JSON payloads — often what you find after decoding a URL-encoded API request body.
If you need to make a string URL-safe by converting spaces and special characters into percent-sequences, our URL Encoder handles it instantly.