Developer utilities

URL Encoder & Decoder

Percent-encode or decode URLs, query values and form data.

0 characters

Percent-encodes every reserved character. Use this for one query parameter value.

Everything runs locally in your browser, up to 1,000,000 characters. Nothing is sent to the server or stored.

Results appear here. Paste text and the conversion runs automatically.

How to use the URL encoder and decoder

  1. Choose Encode to escape text, or Decode to turn percent-encoded text back into characters.
  2. Pick the scope that matches your data: Component, Form data or Full URL.
  3. Paste into the input box, or select Example to load a sample value.
  4. The conversion runs automatically and the result appears below, ready to copy.

Conversion runs entirely in your browser and is never sent to FKINFAST servers. Nothing you paste is stored, logged or shared.

Which scope should I choose?

ScopeInputEncodedUse it for
Component / query valuea b&c=da%20b%26c%3DdEvery reserved character is escaped. Use this for one parameter value.
Form dataa b+ca+b%2BcSpaces become + and literal plus signs become %2B, matching form submissions.
Full URLhttps://x.dev/a b?q=1&r=2https://x.dev/a%20b?q=1&r=2Structural separators such as : / ? & = are preserved.

How percent-encoding works

URLs can only carry a limited set of characters safely. Anything else is written as a percent sign followed by the byte's hexadecimal value. Because UTF-8 is used, a character such as é becomes two bytes and is encoded as %C3%A9, and an emoji becomes four bytes.

  • Unreserved characters (A–Z a–z 0–9 - _ . ! ~ * ' ( )) never need encoding.
  • Component scope encodes every reserved character, which is correct for a single query parameter value.
  • Full URL scope leaves : / ? & = # and friends intact so the URL keeps its structure.
  • Decoding can fail when an escape is incomplete or the bytes are not valid UTF-8. The tool reports the position instead of guessing.

Common URL encoding mistakes

Double encoding
hello%2520worldThe value was encoded twice, so %25 becomes %. Decode once with Component scope and check the result.
+ where a space was expected
q=hello+worldIn form data, + means a space. Choose Form data scope instead of Component before decoding.
Encoding a whole URL as a component
https%3A%2F%2Fx.dev%2Fa%3Fb%3D1Use Full URL scope to keep the structure. Component scope is for a single parameter value.
Malformed escape
100%25 %ZZEvery % must be followed by two hexadecimal digits. This tool points to the first bad character.
Invalid UTF-8 bytes
%E9 alonePercent-encoded bytes must form valid UTF-8. %E9 is Latin-1 é, not valid UTF-8; %C3%A9 is.

URL encoding FAQ

Should I encode a space as %20 or +?

Both are valid in different contexts. %20 works everywhere and is what Component and Full URL scopes produce. + is only a space inside application/x-www-form-urlencoded data, which is why the Form data scope uses it.

Why does decoding a URL not change every % sequence?

With Full URL scope, escapes for reserved characters such as %2F and %3F are left untouched on purpose, matching decodeURI. That keeps the URL structure intact. Use Component scope if you want %2F to become /.

Can I decode a value that was encoded twice?

Yes, but you have to decode it twice, because a second pass is needed to turn %25 back into %. Double encoding is usually a bug; encode once and store the raw value.

Is my URL sent anywhere?

No. This page never makes a network request with your input. Conversion uses the browser's native encoding functions, and nothing is stored or logged.