URL Encoder / Decoder

Encode or decode URL components in three flavours, with a live query-string builder

✨ New🔒 Browser Only
Nothing leaves your browser
Input
0 chars
Output
0 chars
CtrlEnterswapCtrlKclear
## URL encoding done the way it should work Three different functions handle URL encoding in JavaScript — `encodeURIComponent`, `encodeURI` and form-encoding (`+` for space). Pick the wrong one and you end up with double-encoded query strings, broken Slack links and stripped path segments. This tool makes the three visible side-by-side and keeps your URL correct. ### Features that save time - **Live encode / decode**, no buttons to press — the result follows as you type. - **Three modes:** - **Component** (`encodeURIComponent`) — for individual query values. - **Whole URL** (`encodeURI`) — preserves reserved URL characters. - **Form** (`application/x-www-form-urlencoded`) — `+` instead of `%20`. - **Auto-detect direction.** Paste a string with `%XX` sequences and the tool flips into Decode mode automatically. - **Query string builder.** Paste a full URL and a table of key/value rows appears below — edit values in place and the URL updates live. Sort keys A→Z, add or remove params, never hand-escape again. - **Copy as curl.** One click gives you `curl "…"` ready to run. - **Shareable links.** The tool's own state is mirrored to the URL, so sending a coworker a "here's exactly what I was doing" link works out of the box. - **History.** Recent inputs are kept locally in a chip row — click to restore. Everything runs in your browser. Links and tokens stay on your machine.

Frequently Asked Questions

Everything you need to know about this tool

For almost every case where you are building a query value, use the default Component mode. Switch to Whole URL when you have a complete URL with a scheme, host and path that you do NOT want to alter. Use Form for HTML form submissions that encode spaces as "+".

A "%" character must be followed by exactly two hex digits. "%z3" is malformed; "%20" is fine. The tool shows the exact JS error so you can locate the bad byte.

Because the specs disagree. encodeURIComponent always uses %20. The application/x-www-form-urlencoded rule (originally from HTML forms) says space must be "+". Use the matching Decode mode — or the decoder can produce ambiguous output.

Yes. The scheme, host, path and fragment (#...) stay untouched. Only the "?" query portion is rebuilt from the rows.

Yes — the address bar gets your input, direction and mode (up to 1 KB). The recipient opens the same link and sees the exact encode/decode you had.

No. Every transformation happens inside your browser tab. You can verify in DevTools → Network — no outbound request fires when you type.