Nothing you enter is sent anywhere — 100% on-device

URL Encode · Decode

Percent-encode text and query values, or decode them back.

0 B uploaded — nothing you enter has been sent anywhere?

Nothing you enter and no file you choose is sent anywhere — everything runs inside this page, and no request carries your content to a server.

Other tools send what you type to a server and process it there. Even when they promise to erase it afterwards, your text sits on someone else’s machine in the meantime. Here there is no sending step at all. The more sensitive the content — passwords, contract wording, private notes — the more that difference matters. See how to verify it →

Put spaces, symbols and accented text into a URL safely, and read mangled links back

Copy a link whose search term has spaces or accented letters and you get strings like %20 or %C3%A9 in it. This tool converts text into that percent notation and back again. You can choose between a mode for a single value and a mode for a whole address.

A closer look

A URL can only carry letters, digits and a handful of symbols as they are. Everything else is converted to UTF-8 bytes, and each byte is written as % followed by two hex digits. A space becomes %20, an accented letter like é takes two bytes and becomes %C3%A9, and an emoji takes four bytes, twelve characters in all. Symbols such as ?, &, =, # and / act as separators in an address, so when they appear inside a value they must be encoded, or the URL will be split in the wrong place.

In the drop-down, encodeURIComponent (for query values) leaves only letters, digits and a few marks such as - _ . ~ untouched and encodes the separators too. encodeURI (for full URLs) keeps the characters that form an address’s skeleton, ; , / ? : @ & = + $ #, and converts only things like spaces and non-ASCII letters. Decoding ignores the drop-down and reverses every percent sequence; following the convention web forms use for spaces, it also reads + as a space. Decoding always assumes UTF-8.

How to use it

When it helps

Building a search linkEncode a term like “fish & chips” in value mode before putting it after ?q=, so the & does not cut the URL short.
OAuth redirect_uriWhen one address travels as a parameter of another, encode the whole thing, https:// included, in value mode so its own ? and & do not mix with the outer URL.
Reading paths in logsDecode a path that shows up in server logs or analytics as %C3%A9 or %20 to see the address a visitor really opened.
Sharing links to files with spacesRun a download link whose file name has spaces or accents through encodeURI so chat apps are less likely to cut the link at the first space.

Common snags

It says “Not valid percent-encoding”.Two causes are common. The text contains a bare % sign that was never encoded, as in “50% off”, or the link was encoded in an older character set such as Latin-1, where é is %E9 instead of %C3%A9. This tool decodes UTF-8 only, so such links cannot be turned back here.
The decoded text still contains %25.The string was encoded twice: the % signs themselves became %25. Paste the result into the lower box again and decode a second time.
My + signs turned into spaces.Decoding reads + as a space. If the original contained a raw, unencoded +, such as a phone number starting with +1 or the word C++, fix those spots by hand afterwards. When encoding, value mode turns + into %2B, which avoids the problem.
After encodeURI, my parameters split in the wrong place.encodeURI leaves & and = alone, so an & inside a value is read as the start of a new parameter. Keep the address skeleton as it is and encode each value separately with encodeURIComponent before joining them.

Tip When in doubt, encode only the part that goes after an = sign, using encodeURIComponent; that one habit prevents most broken links.

Notes

component vs URI — what's the difference?

encodeURIComponent also encodes separators like ?, &, = — use it when inserting a single query value. encodeURI keeps the URL structure intact and only encodes spaces and non-ASCII characters — use it for a whole address.