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 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