URL component
For a single query value or path segment. Uses encodeURIComponent and decodeURIComponent. Separators are escaped; decoding restores them. Literal + stays + when decoding.
café & tea → caf%C3%A9%20%26%20teaDeveloper tools
Encode URL text or decode percent escapes.
Processed in your browser
Choose an operation and mode, then convert your text.
Each run converts once. Empty text is valid. URLs are treated as text: this tool never opens or visits them.
The same characters have different jobs in a URL and in a single value.
For a single query value or path segment. Uses encodeURIComponent and decodeURIComponent. Separators are escaped; decoding restores them. Literal + stays + when decoding.
café & tea → caf%C3%A9%20%26%20teaUses encodeURI and decodeURI. Keeps URI separators when encoding and preserves their escapes when decoding, so %2F stays %2F. It does not validate a URL or escape & inside an individual query value.
https://example.com/a b?q=tea → https://example.com/a%20b?q=teaFor one application/x-www-form-urlencoded name or value, not a full query string. Spaces become +; literal + becomes %2B. Decoding changes + to space and strictly decodes UTF-8 escapes.
café + tea → caf%C3%A9+%2B+teaSelect encode or decode, then choose one component, a whole URI or one form value.
Paste into Input text and run the conversion. Nothing is trimmed and there is no fixed text-length limit.
Copy or download a UTF-8 text file. Use as input moves the result back for another run; it does not automatically convert again.
Your text stays in your browser. No uploads or server processing.
All modes decode %20 as a space. Only form-value mode also treats a literal + as a space. In component and whole URI modes a literal + remains a plus. Choose the mode that matches the original encoding.
Decoding rejects incomplete or non-hexadecimal escapes such as %2 and %ZZ, and invalid UTF-8 such as %FF. It returns no partial result. Unicode text is supported; unpaired surrogate characters are rejected rather than silently replaced.
No. Decoding %252F once produces %2F, not a slash. Encoding already escaped text escapes its percent signs again. This is a text codec, not a URL parser: it does not canonicalize hosts, convert domains to Punycode, check protocols or test destinations.
Component mode leaves letters, digits and - _ . ! ~ * ' ( ) unchanged. Whole URI also leaves ; , / ? : @ & = + $ # unchanged. Form-value encoding leaves only letters, digits and * - . _ unchanged and uses + for spaces.
Browser text boxes normalize pasted line endings to LF. Decoded carriage returns may also display as LF, but Copy result and the UTF-8 download retain the exact decoded text, without a byte-order mark. Use as input passes through a text box again and normalizes its line endings. Decoding can produce invisible control characters; the output is always plain text.
Processing happens in your browser. The tool never visits supplied URLs, uploads or logs text, or writes it to browser storage. Copy writes to your clipboard; Download saves a file when you choose. Reset clears both boxes and releases the download.
Cancel stops processing and keeps your input. Editing text or changing a setting clears the old result and cancels pending work. Large text is limited by browser memory; processing failures show an error and you can retry. Clipboard access may require browser permission; the result remains selectable.