Encode or decode URLs safely.
This tool percent-encodes text so it can travel safely inside a URL, and turns percent-encoded text back into readable characters. Encoding uses JavaScript's encodeURIComponent, which converts everything except letters, digits and the characters - _ . ! ~ * ' ( ). Spaces become %20, and accented letters and other non-ASCII characters become their UTF-8 bytes, so é turns into %C3%A9. Decoding uses decodeURIComponent. Both run in your browser, and the text you enter is not sent anywhere.
Because Encode escapes reserved characters too, a full address such as https://example.com/?a=1 comes out as https%3A%2F%2Fexample.com%2F%3Fa%3D1. That is exactly what you want when a URL is itself the value of a parameter, for example a return address or a link tucked inside a tracking URL. It is not what you want for an address you plan to open or publish, since it will no longer work as a link. In that case, encode only the individual parameter values.
Decode is handy for reading URLs copied from server logs, analytics exports or Search Console. Two quirks: a plus sign stays a plus sign rather than becoming a space, and a stray % or broken sequence triggers an "Error decoding URL" alert. Text that was encoded twice, where %20 shows up as %2520, needs two passes: decode, paste the output back into Input, and decode again.