RFC 3986 · percent-encoding · query strings

URL percent encoder

Escapes unsafe characters as %XX hex pairs for use in URLs and query strings. Toggle options below for different URL contexts.

0 chars
encodes to
or decode
0 chars

How to use this tool

  1. Type or paste text into the Text → URL-encoded box — the percent-encoded result appears instantly in URL-encoded.
  2. Toggle Encode all non-alphanumeric to escape every non-alphanumeric character, not just the reserved ones.
  3. Toggle + for space to emit + instead of %20 for spaces — on by default, matching application/x-www-form-urlencoded.
  4. Hit Copy result to copy the encoded string to your clipboard.
  5. To go the other way, paste a percent-encoded string into URL-encoded → Text and the decoded text appears below it.
  6. Use Clear any time to reset a box and start over.

Why this tool is helpful

Build query strings

Encode values for ?key=value pairs so &, =, and spaces don't break the URL structure.

Fix broken links

Decode %20, %2F, and friends to read a URL as plain text and see what's actually in the path or query.

Match RFC 3986

Unreserved characters — A–Z a–z 0–9 - _ . ~ — pass through untouched; everything else becomes a %XX pair.

Handle Unicode safely

Non-ASCII characters (including emoji) are encoded as their UTF-8 bytes, each written as its own %XX escape.

Debug double-encoding

Spot %25 (an encoded %) to catch values that were encoded twice and are breaking downstream parsers.

Stay private

Everything runs in your browser. Nothing is uploaded, logged, or sent to a server — safe for sensitive tokens and URLs.

FAQ

What is percent-encoding?

Percent-encoding (also called URL encoding) writes unsafe characters as a % followed by two hex digits — the byte's value. A space becomes %20, and / becomes %2F.

Which characters are left alone?

By default, the RFC 3986 unreserved set — A–Z, a–z, 0–9, -, _, ., ~ — passes through unchanged. Check Encode all non-alphanumeric to escape everything except letters and digits.

Why does a space become + instead of %20?

HTML form data (application/x-www-form-urlencoded) uses + for spaces, and that option is on by default. Turn it off to get plain %20, matching RFC 3986 for raw URLs.

Is URL encoding the same as encryption?

No. It's fully reversible and provides no security — anyone can decode it. It only makes text safe to transport inside a URL, not hidden.

Can it handle Unicode, like emoji?

Yes. Characters outside ASCII are encoded as their UTF-8 bytes, each as a separate %XX escape. Decoding reverses this back to the original text.

What does "unique hex codes" mean?

The line under the encoded output counts how many distinct %XX escapes your input produced — a quick way to see the variety of bytes being escaped.

Does any of my data leave my browser?

Never. All encoding and decoding happens locally in JavaScript. Your input is not sent to, stored on, or logged by any server.