URL Encoder & Decoder
Runs in your browserPercent-encode and decode URLs and query parameters, with the right escaping for each.
A single value — escapes / ? : @ & = + $ , # so it is safe inside a parameter.
Swap and reuse the current output as input.
Plain text
Encoded
Nothing to show yet
Type or paste on the left and the result appears here as you go.
Which mode? If you are encoding one value to drop into a query string — a search term, a redirect target, an email address — choose a value in a URL. If you are encoding an address that is already a URL and only needs its spaces and accents fixed, choose a whole URL. Using the wrong one either breaks the URL’s structure or leaves a delimiter unescaped, and both fail in ways that are hard to spot.
Your data never leaves your device
This tool runs entirely in your browser. Nothing you enter is uploaded, stored or logged by BeeTools.
How to use the url encoder & decoder
Choose encode or decode
Encode turns readable text into percent-escapes; decode reverses it. If you are not sure which you have, paste it into decode — invalid input is reported rather than mangled.
Pick what you are converting
Choose "a value in a URL" for a single parameter such as a search term or redirect target. Choose "a whole URL" when the input is already an address and only needs its spaces and accents fixed.
Read the result and the breakdown
The output updates as you type, with a count of how many characters were affected. If the input parses as a URL, its parts are listed underneath with values decoded.
Copy, or swap and verify
Copy takes the result to your clipboard. Swap feeds it back as input, which is the quickest way to confirm a round-trip is lossless.
Features
Both encoders, chosen explicitly
Switch between encoding a single value and encoding a whole URL, with the difference explained.
Swap direction in one click
Feed the output straight back in to verify a round-trip without retyping anything.
URL breakdown
Paste a full URL and see its scheme, host, path, fragment and each query parameter decoded.
Strict decoding
Malformed escapes are reported precisely rather than producing quietly corrupted output.
Correct for every language
Characters are encoded as UTF-8 octets, so Arabic, Chinese and emoji all round-trip exactly.
Nothing is transmitted
Encoding happens in this tab, which matters when a URL contains a token or a signed link.
About this tool
URLs can only carry a restricted set of characters. Everything else — spaces, accented letters, ampersands, emoji — has to be percent-encoded, written as a "%" followed by the hexadecimal value of each byte. That is why a space becomes %20 and a bee emoji becomes %F0%9F%90%9D.
JavaScript ships two encoders for this and they are not interchangeable, which is the source of most URL bugs. encodeURIComponent escapes the reserved delimiters — / ? : @ & = + $ , # — because inside a query parameter those characters would be read as structure rather than as content. encodeURI leaves them alone, because when you are encoding an entire URL those same characters are exactly what gives it its shape. Use the first for a value, the second for an address; use the wrong one and you either break the URL or silently truncate a parameter at the first ampersand.
This tool makes that choice explicit rather than guessing, and shows what changed. Decoding is strict: a malformed escape like a bare "%" or a truncated "%A" is reported clearly instead of producing mangled output, which matters because that particular failure is common in copied URLs and easy to misread as a data problem.
Everything runs in your browser. URLs frequently carry session tokens, signed download links and internal hostnames, so this is one of the tools where local processing is worth more than convenience.
- Both encoders, chosen explicitly. Switch between encoding a single value and encoding a whole URL, with the difference explained.
- Swap direction in one click. Feed the output straight back in to verify a round-trip without retyping anything.
- URL breakdown. Paste a full URL and see its scheme, host, path, fragment and each query parameter decoded.
- Strict decoding. Malformed escapes are reported precisely rather than producing quietly corrupted output.
- Correct for every language. Characters are encoded as UTF-8 octets, so Arabic, Chinese and emoji all round-trip exactly.
- Nothing is transmitted. Encoding happens in this tab, which matters when a URL contains a token or a signed link.
Frequently asked questions
What is the difference between encodeURI and encodeURIComponent?
encodeURIComponent escapes the reserved delimiters / ? : @ & = + $ , # as well as unsafe characters, which is correct when the text is a value going inside a URL. encodeURI leaves those delimiters intact because it assumes you are encoding a complete URL where they are structural. Encoding a whole URL with encodeURIComponent produces an unusable string; encoding a parameter value with encodeURI leaves ampersands unescaped, which truncates your value at the first one.
Why is a space sometimes %20 and sometimes +?
Both appear in the wild. %20 is standard percent-encoding and is valid anywhere in a URL. The plus sign comes from the older application/x-www-form-urlencoded format used by HTML form submissions, where "+" means a space and a literal plus must be written as %2B. This tool always produces %20, which is safe in every position; if you are building a form body specifically, convert the spaces afterwards.
Why did my decode fail?
Percent-encoding requires a "%" to be followed by exactly two hexadecimal digits. A bare percent sign — common in text like "100% sure" — or an escape truncated when the URL was copied will both fail. The error is deliberate: silently ignoring a broken escape would hand you output that looks fine and is subtly wrong.
Which characters never need encoding?
The unreserved set: A–Z, a–z, 0–9, and the four marks hyphen, underscore, full stop and tilde. Everything else is either reserved with structural meaning or outside the safe ASCII range, and encoding it is either required or harmless.
How are non-English characters handled?
They are converted to UTF-8 bytes first, then each byte is percent-encoded. That is why one Arabic or Chinese character becomes several escapes, and why an emoji becomes four. Decoding reverses both steps, so the round-trip is exact.
Is my URL sent anywhere?
No. The conversion uses built-in browser functions and runs entirely on your device. That matters more here than for most tools, because URLs routinely carry session identifiers, password-reset tokens and signed links that should never be pasted into a remote service.
Related tools
Tools that pair well with this one.
- Your data never leaves your device
Base64 Encoder & Decoder
Encode text to Base64 or decode it back, with full Unicode support and a URL-safe option.
- Your data never leaves your device
JWT Decoder
Decode a JSON Web Token to read its header, payload and expiry. Does not verify signatures.
- Your data never leaves your device
JSON Formatter & Validator
Format, validate and minify JSON in your browser, with the exact line and column of any syntax error.
- Your data never leaves your device
Unix Timestamp Converter
Convert Unix timestamps to dates and back, with the seconds-or-milliseconds question answered.