Nothing you open here is ever uploaded

Encode and decode URLs

Turn text into something safe to put in a query string, or take a string full of %20 and read what it actually says. Whatever is in the box is treated as one value, so a whole address has its colons and slashes escaped as well. It converts as you type, but switching Direction does not re-run it on its own. Press Convert after you switch.

This page loads no libraries at all. The work is done by the browser itself. Your file is read on your own machine and never sent anywhere. Open your browser’s network tab and watch while you use it.

Questions

Can I encode a whole URL?

You can paste one, but the box is treated as a single value: https://example.com/a?q=1 comes back as https%3A%2F%2Fexample.com%2Fa%3Fq%3D1. That is what you want for one parameter, and not what you want for an address.

Which characters are left alone?

Letters, digits and - _ . ! ~ * ' ( ). Everything else becomes a percent sign and two hex digits, and anything outside ASCII is encoded as its UTF-8 bytes, which is why é comes back as %C3%A9.

Why is a space %20 and not a plus?

Because this is percent encoding; the plus convention belongs to form bodies. Decoding does not reverse it either. A + in the input stays a plus rather than becoming a space, so replace those yourself before you decode.

Why does decoding fail on some strings?

Two reasons: a % that is not followed by two hex digits, which a line like 100% done is enough to trigger, and percent bytes that do not form valid UTF-8, such as %FF on its own. Either one stops the whole string; you do not get a partly decoded result.

Other text & code tools

Everything here is free and works the same way, in your browser.

New tools, once in a while

A new DeskKit tool lands every week or two. Leave an address to hear about it. Nothing else is ever sent, and one click removes you.