URL Encode / Decode

Percent-encode a value, a whole URL, or a form body — and see exactly what changes. Offline.

Your data is processed entirely in your browser and is never uploaded.

Tool workspace

INPUT
Status: Empty0 chars

Options

direction
encoding

For query strings & form bodies. Encode always follows the mode.

Local sandbox active
OUTPUT
Output: Empty0 chars
THE THREE ENCODINGS

Same string, three different answers

Percent-encoding looks uniform, but the three modes disagree on exactly the characters that cause bugs. Pick the one that matches where the string is going.

ComponentWhole URLForm
space%20%20+
reserved / : ? & =encodedkeptencoded
tilde ~keptkept%7E
use whena query value or path segmentan entire linka form / x-www-form-urlencoded body

Non-ASCII always expands to its UTF-8 bytes — é is two (%C3%A9), an emoji is four. The readout reports bytes, not characters, so the expansion number is honest.

FAQ

Quick answers

Is my input sent anywhere?

No. Encoding and decoding run entirely in your browser. Nothing you paste leaves your machine.

Component vs whole URL — which do I want?

If you're encoding a single value to drop into a query string, use Component — it encodes the reserved characters so they can't break the URL. If you already have a full URL and just want the unsafe characters escaped, use Whole URL, which leaves the structure intact.

Why is there a plus sign instead of %20?

That's form encoding (and many real query strings), where a space is written as +. The "decode + as space" toggle reads it back correctly; turn it off to keep + literal.

What does the footprint show?

Each teal chip is a character that the current mode encodes, shown as its percent-bytes; plain characters pass through untouched. It's the encoding's effect on your exact string, made visible — and in decode mode it shows the encoded structure you're unpacking.