URL Encoder/Decoder
Encode text so it can travel safely inside a web address, or decode a percent-encoded URL back into something readable. Spaces, ampersands, question marks and non-Latin characters all mean something specific in a URL, so they have to be escaped before they can be carried as data.
How to URL-encode or decode text
- Paste your text or encoded URL into the input box.
- Tap Encode or Decode.
- Copy the result from the output box.
When you'd use this
- Query strings β Putting a search term containing spaces or symbols into a URL parameter.
- Debugging links β Reading a long tracking URL that has been encoded into illegibility.
- API requests β Encoding parameter values while assembling a request by hand.
- Non-Latin text β Addresses containing Hindi, Arabic or Chinese characters are always percent-encoded.
Good to know
- Percent-encoding is what you get β A space becomes %20, an ampersand %26. Each byte is written as a percent sign followed by two hexadecimal digits.
- Unicode round-trips correctly β Non-Latin text is encoded as UTF-8 bytes, so decoding returns exactly what you started with.
- Encode values, not whole addresses β Encoding an entire URL escapes the slashes and colons that make it work. Encode only the individual values you are inserting.
- It is not security β Encoding makes text safe to transmit. It conceals nothing and protects nothing.
Frequently asked questions
What exactly gets encoded?
Everything that isn't safe in a URL component: spaces become %20, & becomes %26, and non-Latin text like Hindi becomes its UTF-8 percent-sequence. This is JavaScript's standard encodeURIComponent behaviour.
Why did decoding fail?
Decoding expects valid percent-encoding β a % must be followed by two hex digits. Malformed sequences fail with a clear message instead of producing garbage. A + is treated as a space, as it appears in query strings.
When do I need this?
Whenever a value goes inside a URL: search queries, redirect targets, API parameters, or sharing links containing special characters.
Why is a space sometimes %20 and sometimes a plus sign?
Both exist. Percent-encoding uses %20, while the older form encoding used by HTML forms uses +. This tool produces %20, which is correct in URL paths and accepted in query strings.
Should I encode the whole URL?
No. That would escape the slashes and colons the address needs in order to work. Encode only the values you are putting into it β a search term or a parameter, not the address itself.
Why does my decoded text still look wrong?
Usually because it was encoded twice, turning a percent sign into %25. Decode it a second time and it should come out properly.