URL Encoder & Decoder — percent-encode online, free

Percent-encode a URL, path or query string, or decode one back to readable text. Handles Unicode and reserved characters. Free and fully browser-side.

Input
Output

About the URL encode / decode tool

URLs were specified in an era when a limited set of ASCII characters was all anyone expected to need, and that assumption is baked into the standard permanently. Spaces, accented letters, ampersands inside values, question marks in a search term, slashes in a parameter and every non-Latin script have to be represented some other way. Percent-encoding is that way: each disallowed byte becomes a percent sign followed by two hexadecimal digits.

This is why a link to a page about "café & bar" arrives as caf%C3%A9%20%26%20bar, and why a URL pasted into a chat client sometimes breaks halfway. It is also why search queries, tracking parameters and redirect URLs nested inside other URLs look like unreadable strings — they are ordinary text that has been encoded so it can survive being carried inside a URL without changing its meaning.

The distinction between the two encoding modes is where most mistakes happen. Full-URL mode leaves the structural characters alone — the colons, slashes, question mark and ampersands that separate one part of a URL from another — because encoding those would destroy the address. Component mode encodes them too, and that is what you need when a value is going inside a URL rather than being one.

Get that backwards and things break in ways that are hard to diagnose. A redirect URL placed in a query parameter without component encoding has its own ampersands read as separators for the outer URL, so the server sees several truncated parameters instead of one complete address. The link appears to work and quietly loses data. The rule is simple: encoding a whole address uses full mode, encoding anything that will sit inside one uses component mode.

How it works

1

Paste your URL or text

Drop in a full address, a query value, a path segment, or an encoded string you need read back.

2

Pick encode or decode

Encoding offers component mode for values going inside a URL; decoding turns percent sequences back into text.

3

Copy the result

Output appears instantly. A string that is not validly encoded is reported rather than silently mangled.

Frequently asked questions

When should I use component mode?
Whenever the thing you are encoding is going inside a URL rather than being the URL. Search terms, redirect targets, email addresses in a parameter, filenames in a path segment — all need component mode, because their colons, slashes and ampersands would otherwise be read as structure by whatever parses the outer address.
Why is a space sometimes %20 and sometimes a plus sign?
Two different standards. Percent-encoding proper uses %20 everywhere. HTML form submissions use a slightly different format that encodes spaces as +, which is why search URLs from web forms so often contain them. Both appear in the wild; %20 is correct for URLs generally, and + is only meaningful in a query string built by a form.
Do I need to encode non-English characters?
For the raw URL, yes — accented letters, Vietnamese, Chinese, Arabic and emoji all have to be percent-encoded as their UTF-8 bytes, which is why a single accented character becomes something like %C3%A9. Browsers display the readable version in the address bar while sending the encoded one, so what you see and what travels are different.
What does double encoding mean and why is it a problem?
Encoding a string that was already encoded, so the percent signs themselves get encoded and %20 becomes %2520. It happens when a value passes through two layers that each helpfully encode it. The symptom is a URL that contains %25 sequences and a page that receives literal percent codes as data. Decoding twice recovers the original.
Which characters actually need encoding?
Unreserved characters — letters, digits, hyphen, period, underscore and tilde — never need it. Reserved characters that carry structural meaning, such as : / ? # [ ] @ ! $ & ' ( ) * + , ; = need it when used as data rather than structure. Everything else, including spaces and all non-ASCII, always needs it.
Will encoding change what my link points to?
Not if you use the right mode. Encoding a complete URL in full mode preserves its structure exactly and only makes unsafe characters transmissible. Using component mode on a whole address will break it, because the separators get encoded as data. That mismatch is the single most common cause of a link that looks encoded but no longer resolves.
Is anything sent to a server?
No. Encoding and decoding happen in your browser tab. URLs frequently carry session tokens, password reset links, signed download URLs and tracking identifiers, so a tool that transmitted them would be leaking exactly the sensitive part. Nothing here is stored, logged or sent anywhere.

Related tools