URL Encoder and Decoder
Turn %20 back into a space, and escape text without breaking the URL around it.
Free, no signup, no limits
https://example.com/café?q=crème brûlée&page=2 Sales were up 100% and the report is at /docs/q3 final.pdf
How to decode a URL
Paste it on the left with Decode selected. %20 becomes a space, %C3%A9
becomes an e acute, and the address turns back into something you can read.
Consecutive escapes are decoded together, which matters: a single accented character is two escapes and an emoji is four, so decoding one at a time turns them into gibberish.
The two encoders, and why picking wrong fails silently
This is the part worth knowing, and the reason there are two buttons.
Query value escapes the structural characters as well. A slash becomes
%2F, an ampersand %26, a question mark %3F. Use it for something going
inside a URL: a search term, a name, a redirect target.
Whole URL leaves those alone, because in an address they are structure rather than content. Use it on a URL you already have, to fix the spaces and accents in it without destroying the rest.
Get it the wrong way round and nothing errors. Encode a whole URL as a query
value and you get one long unusable string, which at least you notice. Encode a
query value as a whole URL and an ampersand inside it stays an ampersand,
quietly ending one parameter and starting another. ?name=Ben & Jerry arrives
as a name of "Ben" and a mystery parameter called "Jerry". That one reaches
production.
Why 100% breaks most decoders
The browser's own decodeURIComponent throws on any % that is not followed by
two hex digits. "Up 100% this year" is not a URL, but it is exactly the sort of
thing people paste, and it raises before anything is decoded.
Most tools call that function on the whole input in one go, so a single stray percent sign anywhere gives you an error instead of a result.
Here each escape sequence is decoded on its own. Valid ones resolve, malformed ones are left exactly as written, and the panel says how many it could not read. Nothing is lost and nothing errors.
This is not the same as HTML entities
Two different escaping schemes for two different jobs, confused constantly.
Percent encoding, %20 and %C3%A9, is for URLs. Ampersand entities,
and é, are for HTML. Text that has been through both, which
happens more than it should, needs
the entity decoder as well, and the order matters:
undo the HTML layer last if the text came out of a page.
If what you have is a page full of links rather than one URL, the URL extractor pulls them all out and strips the tracking parameters on the way.
Everything runs in your browser. Nothing is uploaded.
Frequently asked questions
More Text tools
Everything else in the Text toolbox.
Something missing here?
If this tool almost does what you need, say what is missing. That is usually how the next version gets built.