URL encoder / decoder
From readable text to URL-ready characters, and back.
How to use ↓encodeURIComponent / decodeURIComponent: convert one value. Spaces encode as %20 and plus signs as %2B.
Inputs and results are not stored or uploaded. Entered addresses are never visited; results are displayed as text only.
One value or a complete address? Choose first.
URL encoding is not encryption. Do not use it to protect passwords or tokens.
- 01
Choose the scope
Choose Query value / path segment for one search term or filename segment, and Full URL for an entire address. Form value uses + for spaces in one value; it does not parse a query string into fields.
- 02
Choose a direction and convert
Select encode or decode, then convert. Whitespace is not trimmed and conversion runs once. Browser textareas normalize line breaks to LF; use Copy or Download to preserve decoded CR/CRLF. Editing the input or settings clears the previous result.
- 03
Review, copy and save
Copy the result or save it as UTF-8 TXT. Reverse with result moves it into the input and switches direction. Results exceeding the input limit can only be copied or downloaded.
Spaces and plus signs are different.
hello world+
→ hello%20world%2B
→ hello+world%2B (form)
Full URL example:
https://example.com/a b?q=hello world
→ https://example.com/a%20b?q=hello%20world
Behavior references: ECMAScript URI functions · WHATWG form encoding
Frequently asked questions
Is this the same as URL-safe Base64?
No. URL encoding represents UTF-8 bytes as %HH. URL-safe Base64 is a different encoding with an adjusted Base64 alphabet.
Why does full-URL decoding keep %2F?
decodeURI preserves encoded URL delimiters such as /, ?, &, = and #. Select Query value / path segment to decode %2F into /. Full URL mode does not validate addresses, convert domains to Punycode or normalize URLs.
What happens to already encoded text?
Encoding changes existing % characters into %25 too. Encoding %20 gives %2520; decoding %2520 once gives %20. The tool does not guess or recursively undo multiple encoding layers.
How is form-value decoding different?
Form decoding changes + to a space and %2B to a literal plus. The other two scopes keep + unchanged. Malformed percent escapes and UTF-8 report errors instead of being repaired with replacement characters. Other character encodings, such as EUC-KR, are not supported.
Are all special characters encoded?
Query value / path segment follows JavaScript encodeURIComponent, keeping letters, digits and - _ . ! ~ * ' ( ). Form value also encodes ! ~ ' ( ). Neither is a JSON or HTML string-escaping tool.