URL encoder and decoder
Encode text for URLs or decode percent escapes as you type.
Maximum 100,000 UTF-16 units. Inputs up to 500 characters appear in the page URL.
Related tools
-
JSON formatter
Format, minify and check JSON, with the line and column of the first error. -
JWT Decoder
Read token contents and dates. Signatures are not verified. -
UUID generator
Create secure random v4 or timestamp-based v7 UUIDs in batches. -
Text to Binary
Convert text and byte values in both directions, using ASCII or UTF-8.
Encode text before placing it inside a URL, or turn percent escapes back into readable characters. Choose a component for a query value or a single path segment; choose a full URL when its separators must stay intact. This is useful when debugging a search link, inspecting an API parameter, or reading an escaped filename. Conversion happens as you type, entirely in your browser. Accents, emoji, and non-Latin scripts use UTF-8 without changing the original text.
How to use
- Paste text or an escaped value into the input box.
- Choose Encode or Decode, then select a component or a full URL.
- For form data, enable plus as space while decoding.
- Copy the result; use Clear to remove the saved input.
What it handles
- Component mode escapes URL separators such as &, =, /, and ?.
- Full URL mode preserves separators, including escaped separators when decoding.
- Literal + becomes a space only when decoding with the toggle enabled.
- Malformed percent escapes and invalid UTF-8 produce an error instead of a partial result.
- Input limit: 100,000 UTF-16 units; short input is saved in the page URL.
FAQ
Should I use encodeURIComponent or encodeURI?
Use encodeURIComponent for one value, such as a search term, so an ampersand inside that value cannot start another parameter. Use encodeURI for an already assembled address whose slash, question mark, and hash are structural. Neither mode checks whether the address points to a real or safe website.
Why does decoding leave some percent escapes unchanged?
Full URL mode uses decodeURI, which preserves escapes for reserved separators such as %2F and %3F. This avoids changing the structure of an address. Select component mode to decode those characters as well. Decoding happens once: %2520 becomes %20, and only a second decode turns it into a space.
Does a plus sign mean a space?
In form-encoded query data, a literal plus often represents a space. Turn on the toggle to apply that convention before decoding. An escaped plus, %2B, remains a plus. Encoding always follows the selected JavaScript function and writes spaces as %20; it does not create form-encoded output.
What is saved, and how much text can I process?
The limit is 100,000 UTF-16 units; most letters use one and many emoji use two. Input up to 200 KB is remembered locally. Up to 500 characters also appear in the page query, which may remain in browser history or shared links. Clear removes the saved input and current query text.
Updated