This tool converts text to percent-encoded URL syntax and back. It handles Unicode, reserved characters and malformed input, and can use the form convention where a plus sign represents a space.
Your data is processed locally in your browser and is not uploaded to our server.
This is not valid percent-encoding. Check for incomplete % sequences.
How to use this tool
1 Choose whether you want to encode text or decode a percent-encoded string.
2 Type or paste the value; the converted result updates immediately.
3 Enable “Form spaces” if spaces should become + instead of %20, as in form submissions.
4 Copy the result or clear the boxes.
Formula and calculation logic
Percent encoding
Reserved character → % + UTF-8 bytes in hexadecimal
encodeURIComponent escapes characters that are not allowed or have special meaning in a URL component. Letters, digits and a small set of punctuation marks remain unchanged.
Form spaces
space → + instead of %20
HTML form submissions may encode spaces as +. When that option is enabled, the encoder uses + and the decoder turns + back into a space before percent-decoding.
Worked example
Encoding a query value
A search term contains spaces, an ampersand and a percent sign.
Input: Hello world & 100% done
Encode with encodeURIComponent
Result: Hello%20world%20%26%20100%25%20done
Every character that could break a query string is escaped, so the value can be appended safely.
Decoding a form value
A form sends a name with plus signs instead of spaces.
Input: Ada+Lovelace
Enable “Form spaces” and decode
Result: Ada Lovelace
Without the form option, + is a literal plus sign, not a space.
Edge cases and accuracy
Whole URLs versus components
This tool encodes a component, so :// and ? are escaped as well. To encode only the query value, paste the value itself rather than the full URL.
Malformed percent sequences
A percent sign must be followed by two hexadecimal digits. Invalid sequences are reported instead of being silently replaced.
Plus signs are ambiguous
In path segments a + is a literal character; in form-encoded bodies it often means a space. Choose the form option to match the source of your data.
Frequently asked questions
What is the difference between encodeURI and encodeURIComponent?+−
This tool uses the component rules: it escapes : / ? & = and similar delimiters. That is what you want for a single query value, path segment or form field.
Why does a space become %20 or +?+−
%20 is the standard percent encoding for a space. + is the form-encoding convention; enable “Form spaces” to use or accept it.
Does it handle Chinese and emoji?+−
Yes. Characters are first converted to UTF-8 and then percent-encoded, so decoding returns the original text exactly.
Can I decode a full URL?+−
Yes, but delimiters such as ? and & are decoded too, which can make the result ambiguous. For a single parameter, decode only its value.
Is my text uploaded?+−
No. Encoding and decoding run in your browser; nothing is sent to a server.
Related developer tools
Encode Base64, format JSON or generate IDs for the same request.