Developer tools

URL encoder and decoder

Encode or decode URL values, form values and URI text locally. Clear plus-sign handling, Unicode support, recoverable imports and complete downloads.

Source: editor text.

Import UTF-8 text or drop a file here

The contents are treated as text. Links are never opened or fetched.

Add text or try an example, then convert when ready.

Choose the encoding for your task

For a search term, a query parameter value or one path segment, choose One URL value. It escapes reserved punctuation, including a literal plus sign. For an individual HTML form value, choose One form value: spaces become +, and an actual plus sign becomes %2B. These modes transform one value; they do not split or assemble a query string.

Choose URI text when separators such as : / ? # & = must remain intact. It also retains IPv6 brackets. This mode does not parse, validate, resolve or normalize a URL. Encode individual values separately before inserting them into a URL; a literal & inside a query value must not be mistaken for a separator.

Why does + sometimes mean a space?

The text a+b c becomes a%2Bb%20c as a URL value and a%2Bb+c as a form value. Only form decoding treats a raw + as a space. Select the convention used by the source of your text.

Decode exactly once

Decoding %252F produces %2F, without a second decoding pass. URI decoding retains escaped reserved punctuation, so %2F stays escaped instead of becoming a path separator. Use the URL-value mode when you intentionally want those characters decoded. Invalid percent escapes and invalid UTF-8 produce a correction message instead of replacement characters.

Encoding existing percent escapes encodes the percent sign again. A notice calls this out so you can avoid accidental double encoding. Unicode text, including Tamil and emoji, is represented as UTF-8 bytes. A byte-order mark and control characters are treated as data; invisible control characters are flagged in the result.

Recover your input and download the complete result

Example, import, clear, large paste and reverse conversion support one Undo replacement. Undo restores the saved input, conversion direction, encoding choice and source filename, and returns to the beginning of the editor. Changing options retains that history; ordinary typing clears it. File imports preserve original line endings until you edit the text. The editor displays line breaks as LF, while downloads preserve original carriage returns. No newline is appended to a download.

Large results show the first 32,768 characters. Copy and Download use the complete result, including when the preview is shortened. If clipboard access is unavailable, use Download. Empty input is valid and produces an empty text file.

Private processing and practical limits

All conversion happens locally in a cancellable worker. No input is uploaded, saved automatically, opened as a link or rendered as HTML. Encoding accepts up to 1 MiB of UTF-8 input; decoding accepts up to 4 MiB to accommodate percent-encoding expansion. Output is limited to 4 MiB. File reading and conversion each have a ten-second deadline.

URL-value escaping follows the unreserved character set in RFC 3986. Form values follow the WHATWG form-encoding convention. For a different binary-to-text encoding, use the Base64 encoder and decoder.