URL encode every character — full %XX percent-encoding

Unlike a normal URL encoder, this one turns every character into %XX, even plain letters and digits, so you can see each UTF-8 byte. It also decodes any percent-encoded text back.

Live demo · real result from this tool
Direction

Encoded

%73%61%66%65%2D%74%65%78%74%5F%31%32%33%20%E2%9C%93

Processed on your device — nothing is uploaded.

How to use the full URL encoder

  1. Set Direction to Encode or Decode.
  2. Paste your text into Input.
  3. Copy the Encoded or Decoded result. Encoded output uses upper-case hex, such as %2D.

What it does and when to use it

Normal URL encoding, as done by a browser’s encodeURIComponent, keeps letters, digits and a few symbols readable and encodes only the rest. This tool encodes everything, one %XX per UTF-8 byte. That makes it useful when:

  • You want to see how many bytes a word or emoji takes in a URL.
  • You are testing that a server, proxy or security filter decodes URLs correctly before checking them.
  • A legacy system or a strict spec demands that all characters be encoded.
  • You need to decode a value that someone encoded in full.

For links you will actually publish, use the URL encoder, which follows the usual rules and keeps URLs short and readable. To decode form data where + means a space, or to decode double-encoded values, use the URL decoder. For a byte view with offsets, see the hex dump viewer.

How it works

Percent-encoding is defined in RFC 3986, section 2.1: a byte is written as % followed by two hex digits.

Encode: the text is converted to UTF-8 bytes, and every byte becomes % plus its value in upper-case hex. ASCII characters are one byte, so a becomes %61. Accented letters take two bytes, and ✓ takes three: %E2%9C%93.

Decode: runs of valid %XX escapes are collected, turned into bytes and read as UTF-8. Anything else, including + and a lone %, is copied through unchanged.

Everything runs in your browser.

Worked examples

a b               →  %61%20%62
safe-text_123 ✓   →  %73%61%66%65%2D%74%65%78%74%5F%31%32%33%20%E2%9C%93
%E2%9C%93         →  ✓            (Decode)
%61%20%62+c       →  a b+c        (Decode)

In the second line, a normal encoder would leave safe-text_123 alone and encode only the space and the tick. Here all 15 characters become 17 escapes, because the tick is three bytes. The last line shows that + survives decoding.

Limits and tips

  • Fully encoded URLs are about three times longer than the original. Keep them out of places with length limits, such as some email clients and older browsers.
  • Do not encode a whole URL including https:// if you want a working link: the : and / would be encoded too. Encode only the part that needs it.
  • The decoder assumes UTF-8. Bytes from older encodings like Latin-1 may show as replacement characters.

Frequently asked questions

Why would I encode letters that do not need it?
To see exactly which bytes a string contains, to build test cases for URL parsers, firewalls or input filters, or for an old system that only accepts fully encoded values. For everyday links, a normal URL encoder is the better choice.
Is %61 the same as a in a URL?
RFC 3986 says letters, digits and - . _ ~ are unreserved, and a URL that percent-encodes them is equivalent to one that does not. Well-behaved servers treat them the same, but some systems compare URLs as plain text, so the fully encoded form may not match there.
Why is a plus sign not turned into a space when decoding?
Only HTML form data uses + for a space. In other parts of a URL, + is just a plus. This decoder leaves + alone, so it does not damage values such as phone numbers or Base64. Use the URL decoder if your input is form data.
What happens to a broken escape like 50%?
It is kept as it is. A % that is not followed by two hex digits is copied through instead of causing an error, so 50%+off decodes to 50%+off.
Does percent-encoding hide the text?
No. It is an encoding, not encryption. Anyone can decode %XX values, and browsers often display them decoded in the address bar.

Sources

  1. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax — IETF / RFC Editor, accessed 2026-10-08

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close