URL-encode Text
Paste text and get percent-encoded output instantly.
Options
URL-encoded text
How to URL-encode text
Paste your text into Your text, or press Load example. Choose
URL component (spaces become %20) or Form encoding
(spaces become +). The percent-encoded output updates as you type. Copy the result
or download it as a .txt file. Everything runs in your browser, so nothing you paste is uploaded.
Examples
| Input | Output (component mode) |
|---|---|
| Hello world | Hello%20world |
| Café & croissants? 100% | Caf%C3%A9%20%26%20croissants%3F%20100%25 |
| a=b+c | a%3Db%2Bc |
Try the sample: Hello world! Café & croissants? 100% 😀
Limits and edge cases
- Encoding is UTF-8: non-ASCII characters become one
%XXsequence per byte. - Unreserved characters
A-Z a-z 0-9 - _ . ~are never encoded. - Reserved characters are encoded, including:
| Character | Encoded |
|---|---|
| space | %20 (+ in form mode) |
| & | %26 |
| = | %3D |
| ? | %3F |
| # | %23 |
| % | %25 |
- Form mode only differs for spaces:
%20becomes+. Use component mode for URL paths and most query values. - Already-encoded input is encoded again (
%becomes%25). Always start from the raw text to avoid double-encoding.
Frequently asked questions
How do I URL-encode text?
Paste your text into the input box and the percent-encoded output appears instantly. Copy it or download it as a .txt file.
What is the difference between component and form mode?
Component mode encodes spaces as %20, which is correct for URL path segments and query values built with encodeURIComponent. Form mode encodes spaces as +, which matches application/x-www-form-urlencoded submissions.
Which characters get encoded?
Unreserved characters A-Z a-z 0-9 - _ . ~ are left unchanged. Everything else, including spaces, reserved characters like & = ? #, and non-ASCII text, becomes %XX sequences using UTF-8 bytes.
How are emoji and accented letters encoded?
They are encoded as UTF-8 bytes, so e with an acute accent becomes %C3%A9 and an emoji becomes four %XX sequences. Decoding reverses this exactly.
Why did my % turn into %25?
The encoder always encodes a literal percent sign, so already-encoded input is encoded again. That is expected: to avoid double-encoding, start from the raw text, not from previously encoded output.
Is my text uploaded anywhere?
No. Encoding runs in your browser with JavaScript and nothing is sent to a server. Inputs under 200 KB are kept in your browser's local storage so they are still there when you come back.