Developer Tools

URL Encoder / Decoder

Encode or decode URL components, whole URIs or form values locally. Choose the right treatment for reserved characters and plus signs, then copy or download plain-text results.

Your content stays on your device Free, with no account
The right escaping for the part you are working with Local conversion · plain-text output
Up to 50,000 UTF-16 units. Spaces, line breaks and original text are retained.

Component mode encodes separators such as /, ?, & and =. Literal plus signs stay plus when decoding; spaces encode as %20.

YOUR RESULT

Ready. Choose a mode and operation.

Decoding runs once and rejects malformed percent escapes or UTF-8. This does not validate or sanitize URLs. Results are never opened or executed. Form mode treats the entire input as one value, not a query string.

A FEW SIMPLE STEPS

How to use URL Encoder / Decoder

  1. Paste text to encode or percent-encoded text to decode.
  2. Choose Encode or Decode and the mode that matches a component, whole URI or single form value.
  3. Select the conversion button. Review the mode hint, result and text-unit counts.
  4. Copy or download TXT. Input and setting edits clear old results; no links are opened.
PRIVATE BY DESIGN

Why use this tool?

All conversion uses local browser functions and a shared site codec, with no uploads, accounts, dependencies or input storage. Decoded text is displayed in a readonly editor and never interpreted as markup, navigated to or executed.

Tool inputs stay in your browser. Only your theme preference is saved on this device.

A few things worth knowing

Which mode should I choose?

Use a component mode for one query parameter value or path segment. JavaScript component mode uses encodeURIComponent; RFC 3986 component mode additionally escapes !, apostrophe, parentheses and *. Whole URI uses encodeURI and decodeURI, retaining URL structural separators. Form value uses application/x-www-form-urlencoded rules for one value, with + for spaces. It does not parse or construct an entire query string.

How are plus signs and spaces handled?

Component and whole-URI decoding preserve literal + signs. Spaces encode as %20 in those modes. Form-value encoding converts spaces to + and literal plus signs to %2B. Form decoding converts + to a space before percent-decoding. A form value containing a=b&c=d is treated as one string, not multiple fields.

Why are some percent escapes still present after whole-URI decoding?

decodeURI intentionally leaves escaped structural characters such as slash, question mark, ampersand and hash encoded, while decodeURIComponent decodes them. Whole URI mode is the browser’s JavaScript operation, not URL normalization or validation: it can encode square brackets and does not perform hostname-to-punycode conversion. Build dynamic components separately when assembling URLs.

Does decoding repair bad escapes or decode repeatedly?

No. It runs one strict decoding pass, rejecting malformed percent escapes or invalid percent-encoded UTF-8. Form-value decoding is intentionally stricter than the forgiving URLSearchParams parser. For example, %252F decodes once to %2F. Encoding existing percent escapes encodes the percent sign again, so choose the operation deliberately.

What happens to whitespace, Unicode and markup?

No trimming or Unicode normalization occurs. Native UTF-8 percent encoding is used; unpaired surrogate units are rejected. The codec preserves literal line endings, while browser textareas normalize pasted CRLF/CR to LF. Decoded markup remains plain text. Encoding is neither encryption nor URL sanitization, and decoded links are never opened automatically.

What are the limits and privacy behavior?

Encoding accepts 50,000 UTF-16 text units and decoding accepts 500,000. Over-limit or malformed input returns an error without truncation or partial output. Empty results have no download. Clear keeps selected settings; Example loads an example for the current mode and direction. Inputs and results are not uploaded or saved. The existing Text Encoder/Decoder shares component-mode behavior.