URL encoder & decoder
Make any text safe to put in a URL — or turn a %-riddled link back into something you can read. Converted live as you type.
Why a URL cannot just contain anything
A URL has grammar. The question mark starts the query, the ampersand separates parameters, the equals sign pairs a name with a value, the hash jumps to a fragment — those characters are structure, not content. Paste a value that contains them in raw form and the URL quietly changes meaning: search for fish & chips without encoding and everything after the ampersand is read as a brand-new parameter, so the poor server searches for fish alone. Percent-encoding is the escape hatch — each awkward byte is written as a percent sign plus two hex digits, %20 for a space being the famous one. Accented letters and emoji become several such bytes each, which is why non-English text turns into surprisingly long percent-runs. That is normal, not corruption.
Decoding: reading what a link really says
The decode mode earns its keep on links other people made. Newsletter and advert links routinely wrap the real destination inside a url= parameter of some click-tracker — decode the whole thing and the actual target pops out in plain text, which is worth doing before you trust an unfamiliar link. It is also the quick way to read what a form actually submitted or what an API call really asked for. One pattern to recognise: if the decoded text still contains sequences like %2520, the value was encoded twice — decode once more and it resolves. Double-encoding is equally the classic bug in the other direction, so when building links, encode each value exactly once, at the last moment before you assemble the URL.
Building links by hand
The workhorse use of the encode side is constructing links outside a programming language — mail-merge templates, spreadsheet formulas, support macros, quick API tests. The reliable recipe: encode each value on its own, then join the pieces with the literal ? & = yourself. That is also why the value mode escapes even slashes — inside a value, a slash is just a character. This tool is free without limits, like our whole developer set. And a tip for what you find inside decoded links: a wall of letters and digits ending in = is usually Base64 — paste it into our Base64 decoder — and a long value with two dots in the middle is most likely a token for the JWT decoder.
Two kinds of encoding — pick the right one
Encode a value escapes everything that has special meaning in a URL (including / ? & =) — use it for a single piece of text going into a query string, like a search term. Encode a full URL only escapes characters that can't appear in a URL at all (like spaces) and leaves the URL's own structure intact. Using the wrong one is the classic cause of broken links.
Why do spaces sometimes show as + instead of %20?
An older convention for web forms encodes spaces as +. The modern standard is %20. The decoder here understands both.
Is my text sent anywhere?
No — this runs entirely in your browser with plain JavaScript. Nothing is uploaded.
