URL Encoder / Decoder: Percent-Encode or Decode Text

Encode plain text into a percent-encoded URL string, or decode a percent-encoded string back into plain text, directly in the browser.

URL Encoder / Decoder

Report an Issue

Found a bug or have a suggestion for URL Encoder / Decoder: Percent-Encode or Decode Text? Let us know!

URL Encoding and Decoding

This tool converts text between its plain form and its percent-encoded form for use inside a URL, in either direction. In Encode mode it turns any text into a URL-safe string; in Decode mode it reverses a percent-encoded string back into the original text, character for character.

How it works

Encoding replaces every character outside a small unreserved set, uppercase and lowercase letters, digits 0 to 9, and the six symbols - _ . ! ~ * ' ( ), with a percent sign followed by its two-digit hexadecimal byte value in UTF-8, so a space becomes %20 rather than a plus sign and an accented letter becomes two or three %XX bytes. The URL-safe option goes one step further and also escapes the asterisk to %2A, since that character is left alone by default but rejected by some APIs and signature schemes. Decoding reverses the same table; Recursive Decode repeats decoding up to sixteen times in a row, useful for a link that was encoded more than once and would otherwise still show %25 or other leftover percent signs after a single pass. Encode Each Line splits the input on line breaks, processes every line on its own, then rejoins the results with a separator chosen from LF, CRLF, CR, space, comma, or semicolon, so a list of values stays one entry per line instead of turning into a single unbroken block. A separate swap control exchanges the input and output text while switching modes at the same time, and the result can be copied to the clipboard or downloaded as a plain-text file for later use. The input can also be filled by uploading a text file or pasting from the clipboard, without changing how the conversion itself works. The output updates immediately whenever the input or any option changes, without a separate action needed, and none of this sends the text to a server.

Worked example

Take the phrase coffee & crème brûlée, typed as a search-query value. Encoding turns it into coffee%20%26%20cr%C3%A8me%20br%C3%BBl%C3%A9e: the two spaces become %20, the ampersand becomes %26 so it is not read as a parameter separator, and each accented letter, è, û, é, becomes its own %C3%XX byte pair because UTF-8 stores those letters as two bytes. Pasting that same encoded string into Decode mode returns coffee & crème brûlée exactly, spaces, ampersand, and accents included.

Example output

Input (Encode):  coffee & crème brûlée
Output:          coffee%20%26%20cr%C3%A8me%20br%C3%BBl%C3%A9e

Input (Decode):  coffee%20%26%20cr%C3%A8me%20br%C3%BBl%C3%A9e
Output:          coffee & crème brûlée

Frequently Asked Questions