Nouplo

URL encoder and decoder

Percent-encoding both ways, worked out as you type.

Examples temporarily replace the input and settings. You can restore your previous work.

0 characters
Output
Paste or type above to see the result here.

Your files stay on your device

This tool runs entirely in your browser. What you paste is processed on your device and is never sent to a server, so it is safe to use with tokens, keys and unpublished text.

Example

Example: a campaign name with & and % put safely into a link

A newsletter link needs the campaign name Spring Sale & Clearance – 20% off in its utm_campaign parameter. Pasted as it is, the & would start a new parameter and the % would be read as the start of an escape. “Treat it as a whole URL” stays unticked, because this is one value.

  1. Paste the campaign name and choose Encode: Spring%20Sale%20%26%20Clearance%20%E2%80%93%2020%25%20off.
  2. Spaces become %20, & becomes %26, % becomes %25, and the dash – becomes its three UTF-8 bytes, %E2%80%93.
  3. Put it after utm_campaign= in the link: https://shop.example.com/sale?utm_source=newsletter&utm_campaign=Spring%20Sale…
  4. To check, paste the whole link and Decode with the box unticked: the campaign name comes back exactly as typed.
Text Encoded as a value Encoded as a whole URL
Q&A Q%26AQ&A
#1 pick %231%20pick#1%20pick
C++ / C# C%2B%2B%20%2F%20C%23C++%20/%20C#
jane+news@example.com jane%2Bnews%40example.comjane+news@example.com
https://shop.example.com/sale?season=spring&page=2 https%3A%2F%2Fshop.example.com%2Fsale%3Fseason%3Dspring%26page%3D2unchanged

A link of 122 characters that browsers and analytics tools read the same way: utm_campaign is the whole name, with its &, its % and its dash. Encoded as a whole URL instead, the & would have stayed and cut the name off after “Spring Sale ”.

How it works

  1. Paste the text or the URL. The result appears as you type.
  2. Choose Encode or Decode.
  3. Tick “Treat it as a whole URL” when the text is a complete address, so the characters that give it its structure survive. Leave it off for a single value going into a query string — that is the case where they must not.
  4. Copy the result.

Frequently asked questions

What is the difference between the two modes?
Encoding a whole URL keeps the characters that make it a URL — : / ? # & = — so https://example.com/a b becomes https://example.com/a%20b. Encoding a value does not: a search term or a redirect URL going inside ?q= must have its own & and = encoded, or it ends the parameter early and quietly breaks the link. When in doubt about a single parameter, leave the box unticked.
Is my URL sent anywhere?
No. It is converted in this page. Links carry session tokens, signed URLs and internal hostnames often enough that this is worth saying.
Why did decoding fail?
Because a % in the text is not followed by two hexadecimal digits, which is what percent-encoding means. Text containing a literal per-cent sign — “50% off” — is not encoded text, and decoding it is not defined. Encode it first if that is what you need.
Does it handle accents and non-Latin text?
Yes. Characters are encoded as UTF-8 bytes, which is what browsers and servers expect: é becomes %C3%A9 and 日本語 becomes %E6%97%A5%E6%9C%AC%E8%AA%9E. Decoding takes them back.
Why does decoding with the box ticked leave %26 in place?
Decoding a whole URL turns back only the characters that cannot change its structure. %26 (&), %2F (/), %3F (?), %3D (=) and %23 (#) stay encoded, because decoding them would turn part of a value into part of the address. Untick the box to decode everything.
Why is a + sign encoded as %2B?
Because in a query string a + is often read as a space, after the old form convention. As a value, jane+news@example.com becomes jane%2Bnews%40example.com, and the server gets the + back rather than a space.
What about spaces becoming + signs?
That is a different convention, used in old HTML form submissions, where a space is written as + rather than %20. Both are accepted by servers in a query string; this tool writes %20, which is correct everywhere including in a path.

Related tools