URL Decoder

Paste percent-encoded text, choose how raw plus signs behave, and decode exactly once without opening a URL.

One strict pass: decode UTF-8 percent escapes as text. This tool does not open, follow, or validate a URL.

Interpret plus signs

Maximum 100,000 UTF-16 code units. Whitespace and unescaped Unicode stay unchanged.

Private decoding: input and result stay in this tab. They are not added to the URL, history, storage, cookies, requests, analytics, errors, or console. Analytics receives fixed tool and action identifiers only.

URL component plus versus form-data plus

Percent encoding writes bytes as % followed by two hexadecimal digits. This decoder supports two explicit interpretations for a raw +. URL component keeps it as +; Form data changes it to a space before decoding, following the form URL-encoded convention. An encoded %2B becomes a literal plus in either mode.

InputInterpretationOne-pass output
name=Tool+Neko&note=red%2BblueURL componentname=Tool+Neko&note=red+blue
name=Tool+Neko&note=red%2BblueForm dataname=Tool Neko&note=red+blue

Strict UTF-8 errors and one pass

The tool requires every percent sign to start a complete two-digit hexadecimal escape. It also rejects invalid, overlong, truncated, surrogate, or out-of-range UTF-8 byte sequences. A failure returns no partial result. This strict behavior follows the failure boundary documented for decodeURIComponent(); the more general URL Standard percent-decoding algorithm can retain malformed percent text instead.

Each submission performs one pass from the unchanged input. For example, %252Fadmin%253Fx%253D1 becomes %2Fadmin%3Fx%3D1, not /admin?x=1. Decoded delimiters may change how text would be understood elsewhere, so the result remains inert text and is never opened or rendered as markup.

Scope and limits

Raw input is limited to 100,000 UTF-16 code units. Unescaped Unicode, line breaks, and whitespace remain unchanged. This page decodes URL percent escapes only; it does not encode, recursively decode, parse query fields, validate URLs, follow redirects, expand short links, decode Base64 or Punycode, unwrap vendor Safe Links, extract QR codes, save results, or provide accounts.

Frequently asked questions

Does this URL decoder upload or save my text?

No. Decoding and copying run in this browser tab. Input, output, error positions, lengths, and plus interpretation are not put in the URL, storage, cookies, requests, analytics, errors, or console.

Does a plus sign become a space?

You choose. URL component mode keeps a raw + unchanged. Form data mode changes a raw + to a space before percent decoding. In both modes, %2B becomes a literal plus.

What happens with malformed percent encoding?

The tool rejects the first percent sign not followed by two hexadecimal digits and rejects invalid UTF-8. It returns no partial or stale result.

Does Decode run more than once?

No. Each Decode action performs exactly one pass against the unchanged input. A result such as %2F remains that way; the tool never recursively decodes it.

Is URL decoding the same as decryption or opening a link?

No. This tool changes percent-encoded text only. It does not decrypt, validate, parse, open, follow, or judge the safety of a URL.

How much text can I decode?

The raw input accepts at most 100,000 UTF-16 code units. This fixed limit keeps the browser-only operation bounded.

Sources and method

Related tools