URL-encode Text

Paste text and get percent-encoded output instantly.

Options

Mode
The result updates as you type. Ctrl + Enter encodes now.

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

InputOutput (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 %XX sequence per byte.
  • Unreserved characters A-Z a-z 0-9 - _ . ~ are never encoded.
  • Reserved characters are encoded, including:
CharacterEncoded
space%20 (+ in form mode)
&%26
=%3D
?%3F
#%23
%%25
  • Form mode only differs for spaces: %20 becomes +. 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.