URL encode
Percent-encode text so it survives a URL. Three different encodings exist for three different jobs, and picking the wrong one is how values silently break — so the page tells you which you want.
- Processed on your device
- No upload, no waiting
- No signup, no watermark
How it works
Paste your text
Any text, in any language. It is encoded as UTF-8, which is what every modern server expects.
Pick the job
One value going into a query string, a whole assembled URL, or a form submission. The difference matters and each is explained.
Copy the result
Encode line by line if you have a list to do at once.
Frequently asked questions
Which of the three should I use?
Component, almost always. Use it when you are encoding ONE value that is about to go into a query string or a path segment — a search term, an email address, a redirect target. It is the only one of the three that escapes &, =, ? and /, which is exactly what stops your value breaking out of its parameter and becoming two parameters. Use full-URI only when you already have a complete URL and just want its unsafe characters cleaned up; it deliberately leaves the structural characters alone so the URL stays a URL. Use form when you are building an application/x-www-form-urlencoded body, where a space is + rather than %20.
Why did my "&" break the URL?
Because it was not encoded, and & is how a query string separates one parameter from the next. A value of "Smith & Sons" appended raw to ?company= arrives at the server as company=Smith and a second, empty parameter called "Sons". It is the single most common URL bug, and component encoding is the fix — it turns & into %26 so the value stays one value.
Why did my "+" become a space?
Because in a query string, + means space — a rule inherited from HTML forms that nothing has ever been able to remove. So a literal plus in your data, in a phone number or a Base64 string, is read as a space by the receiving server. Component encoding escapes it to %2B, which arrives intact.
Does it handle other languages and emoji?
Yes. Text is converted to UTF-8 first and then percent-encoded byte by byte, which is what RFC 3986 requires and what every modern server expects. Japanese, Arabic, accented Latin and emoji all round-trip exactly.
Why are ! ' ( ) * encoded here when other tools leave them?
Because the browser's built-in encodeURIComponent leaves those five alone, and RFC 3986 lists them as reserved. Some servers and frameworks treat them structurally, so a value containing them can be misread. Encoding them is harmless — they decode back identically everywhere — and it removes a class of rare, hard-to-diagnose bug. This is what careful implementations do.
Is my text uploaded?
No. Everything happens inside this page, on your own device — nothing is uploaded and no request is made. You can disconnect from the internet after the page loads and it keeps working.