URL Decode

Paste URL-encoded text and get the readable characters back. This tool runs decodeURIComponent to turn percent-escapes like %20 and %2F into their original characters, with an optional + as space toggle. Everything runs in your browser — nothing is uploaded.

ENCODED
DECODED
Waiting for input

How to URL-decode a string

Paste your URL-encoded text into the input above. The tool runs decodeURIComponent locally, converting percent-escapes like %20 (space), %2F (slash), and %3D (equals) back into the original characters. If the string uses + for spaces — common in query strings — leave the + as space toggle on. Then click Copy.

What is percent-encoding?

URLs can only safely contain a limited set of ASCII characters, so anything else is written as a percent sign followed by two hex digits — this is percent-encoding. A space becomes %20, a slash becomes %2F, and non-ASCII characters are encoded as their UTF-8 bytes (é becomes %C3%A9). One wrinkle: in application/x-www-form-urlencoded data — the format query strings use — a space can instead be written as +. That creates ambiguity, because a raw + might mean a space or a literal plus. The + as space toggle above lets you pick: on decodes + to a space (query-string behavior), off keeps it a literal +. Note that an explicit %2B always decodes to a plus either way.

Is this private?

Yes. The decoding runs fully in the browser with JavaScript — your text is decoded locally and nothing is uploaded to any server. You can confirm in DevTools → Network: decoding fires no request.

Frequently asked questions

How do I decode a URL-encoded string?

Paste the encoded text into the input above. The tool runs decodeURIComponent locally, turning %XX escapes like %20 and %2F back into the original characters. Toggle + as space if the string uses + for spaces, then click Copy.

Why is %2B not becoming a plus?

%2B always decodes to a literal + sign — that is correct. What the toggle changes is a raw + character: with + as space on it becomes a space, and with it off it stays a plus. An explicit %2B is unaffected by the toggle.

Should '+' be decoded as a space?

It depends on context. In application/x-www-form-urlencoded query strings, + means space, so leave the toggle on. In path segments or other contexts, + is a literal plus, so turn the toggle off.

Is URL encoding the same as Base64?

No. URL encoding escapes unsafe characters as %XX so text is safe inside a URL, while Base64 turns arbitrary bytes into a compact ASCII alphabet. They solve different problems — see What is Base64? for the distinction.

Need plain Base64 encode/decode?

The main base64.dev tool handles text, files, and URL-safe mode with auto-detect.

Open base64.dev →