URL Encoder — Encode & Decode URLs (Batch Supported)
Encode text to a percent-encoded (URL-encoded) string, or decode it back to text. Supports batch processing of multiple lines at once, plus a choice between component-style (for query parameter values) and full-URI-style encoding. Everything runs in your browser; nothing is ever sent anywhere.
Your input is processed entirely in your browser and is never sent anywhere.
How to use
- Choose a direction under "Direction": Encode (text → URL-encoded) or Decode (URL-encoded → text).
- Choose an "Encoding style": Component (for a single query parameter value) or Full URI (for a whole URL).
- Paste your text into the input box. Paste multiple lines to convert them all at once — results appear instantly.
How it works
How encoding works
Input is processed one line at a time. Each line is converted to UTF-8 bytes and percent-encoded (the %XX hexadecimal format). If you paste multiple lines, each is encoded independently and the results are joined back with line breaks — this is the batch processing behavior.
Component vs. Full URI style
Both styles are standard, RFC 3986-compliant forms of URL encoding.
- Component style (matches the browser's
encodeURIComponent): encodes every character except letters, digits, and- _ . ~. This is the right choice for a single piece of data meant to sit inside a URL — a query parameter value, part of a path segment, and so on. - Full URI style (matches the browser's
encodeURI): leaves URL-structural characters (; / ? : @ & = + $ , #) unencoded. It's meant for encoding an already-structured URL as a whole, without breaking that structure.
Either way, non-ASCII characters — Japanese text, emoji, anything outside plain ASCII — are always encoded.
How decoding works
Percent-encoded sequences are decoded back to UTF-8 bytes and then to text. When decoding in Full URI style, sequences that correspond to URL-structural characters (like %2F) are deliberately left encoded, so decoding never accidentally changes a URL's structure.
Limits
Input is supported up to 1,000,000 characters. Anything longer is rejected with an error rather than silently truncated.
When you'll see an error
Decoding fails if a % isn't followed by two valid hexadecimal digits, or if the decoded bytes aren't valid UTF-8. In batch mode, if even one line is invalid, the whole conversion is treated as an error rather than showing a partial result.
FAQ
Is my input sent to a server?
No. All encoding and decoding happens entirely inside your browser — nothing is transmitted anywhere.
Should I use Component or Full URI style?
Use Component style when you're encoding a single value that will sit inside a URL — a search term, an ID, anything going into a query parameter. Use Full URI style when you're encoding an entire URL (something starting with https://) and want to keep its structural characters, like / and ?, intact.
Can I convert multiple lines at once?
Yes. Paste multiple lines into the input box and each one is converted independently, with the results shown one per line. This is handy for converting a whole column of CSV data or a list of values at once.
Why does decoding fail with an error?
This happens when a "%" isn't followed by two valid hexadecimal digits, or when the decoded percent-encoded sequence doesn't form valid UTF-8 bytes. In batch mode, if even one line among several is invalid, the whole result is shown as an error rather than a partial conversion.
What happens if I encode an already-encoded string?
The "%" character itself gets encoded too, so you end up with double encoding (for example, "%20" becomes "%2520"). If you want to reverse an already-encoded string back to plain text, use Decode mode instead.
Related tools
- Base64 Converter — Encode & Decode TextEncode text to Base64, or decode Base64 back to text — with correct handling of emoji and other multi-byte UTF-8 characters. Supports the URL-safe variant for JWTs and URL parameters. Everything runs in your browser; nothing is ever sent anywhere.
- CSV Column EditorExtract, reorder and merge CSV columns. Combine "First name" and "Last name" into a single "Full name" column, or reshape a contact list before importing it elsewhere. Everything runs in your browser — your data is never sent anywhere.
- CSV ⇔ JSON ConverterConvert between CSV and JSON in either direction. Use dot notation in column headers (like user.name) to represent nested objects and arrays. Everything runs in your browser — your data is never sent anywhere.
- JWT Decoder | View Header & Payload in Your Browser (No Signature Verification)Paste a JWT (JSON Web Token) to instantly decode and view its header and payload. This tool does not verify signatures. Everything runs in your browser only — your token is never sent anywhere.
- All tools