How to use the encoder and decoder
- If you are not sure what you have, leave "Auto-detect" selected and paste the text above. It finds out whether it is URL (%xx), Unicode escapes (\uXXXX), HTML entities (< and so on) or Base64, and decodes it right away.
- To choose yourself, pick the method (URL, Base64, HTML entities, Unicode escapes) and the direction (encode or decode). The result appears below as you type, together with character and byte counts.
- URL encoding lets you pick a single value or a whole address, Base64 encoding offers URL-safe characters and omitting the trailing =, and HTML and Unicode let you decide how far to convert non-ASCII text.
- Use the copy button to take the result, or send it back to the input to convert once more. In the file box at the bottom, a file up to 3 MB can be turned into Base64 or a data URI and copied.
How garbled Korean addresses get decoded
When non-ASCII text goes into an address, the UTF-8 bytes of each letter are written as % plus two hex digits, called percent-encoding. For example the Korean letter 안 is the three UTF-8 bytes EC 95 88, so it becomes %EC%95%88. Most sites use UTF-8, but some older Korean sites still produce EUC-KR (CP949) addresses, where the word 한글 is written as %C7%D1%B1%DB. The same %xx shape decoded as UTF-8 comes out garbled.
For each run of consecutive %xx bytes, this tool first tries UTF-8 and, if that is not valid, tries EUC-KR. Addresses mixing both are handled run by run, and a piece that decodes in neither is left as it is while the tool tells you how many remain. Doubly encoded addresses such as %2525 are decoded up to three times when the option is on. Everything happens inside your browser.
A quick guide to each method
URL encoding replaces characters that have a meaning in an address (? & = # / and so on) and unsafe characters such as non-ASCII letters with %xx. JavaScript's encodeURI handles a whole address and leaves structural characters alone, while encodeURIComponent handles a single value and converts structural characters as well. Using encodeURI for a search term in a query can leave & or = untouched and cut the value, so the single-value option is the right one there. In query strings a space is sometimes written as +, which is why decoding offers a "treat + as space" option.
Base64 turns every 3 bytes into 4 characters (upper and lower case letters, digits, + and /), so the result is about 33% larger than the original. When the length is not a multiple of 3, = is added to pad it, and the URL-safe variant uses - and _ instead of + and / so it fits in addresses and file names. It appears in email attachments, data URIs (data:image/png;base64,…) and the first two parts of a JWT, but it is not encryption and anyone can reverse it.
HTML entities such as < (<), > (>), & (&) and " (") display characters that have a special meaning in HTML. They can also be written by Unicode number, like 글 or 글. Decoding here handles the common named entities and every numeric entity and leaves names that are not in the list untouched.
Unicode escapes write a character by its code, like \uAC00, and are common in JavaScript and JSON strings. Characters with large numbers such as emoji are written as a surrogate pair like \uD83D\uDE00 or with braces like \u{1F600}. Decoding reads \uXXXX, \u{…}, \xXX and U+XXXX.
Tips for good results
- Encoding is not encryption. Anyone can reverse a converted password or token, so never paste secrets into public places.
- Choose "a single value" when encoding something like a search term and "a whole address" when handling a complete address.
- If a decoded result still looks wrong, the original may be binary data or another charset. A Base64 result that is not text is shown in hex and can be saved as a file.
- Decoding a link or log before sharing it shows whether personal information (names, phone numbers, tokens) is hidden inside the address.
- If auto-detect guesses wrongly, choose the method yourself. A short English word can occasionally look like Base64.
FAQ
Why does a Korean address look like %EC%95%88?
Only letters, digits and a few symbols are safe in an address, so non-ASCII text is written as percent-encoding: the UTF-8 bytes, each as % plus two hex digits. For example the Korean letter 안 is the three UTF-8 bytes EC 95 88, so it becomes %EC%95%88. Browser address bars usually show it decoded, but copying gives this form.
What are addresses like %C7%D1%B1%DB that come out garbled?
Some older Korean sites encode with EUC-KR (CP949) instead of UTF-8, so the word 한글 appears as %C7%D1%B1%DB. For each run of consecutive %xx bytes, this tool tries UTF-8 first and falls back to EUC-KR, so addresses mixing both can still be read.
Does Base64 make data safe?
No. Base64 is only a way of writing bytes as text and anyone can reverse it instantly. Encoding a password or token in Base64 does not protect it; secrets need real encryption or access control.
What is the difference between encodeURI and encodeURIComponent?
encodeURI encodes a whole address and leaves structural characters such as : / ? # & = alone, while encodeURIComponent encodes a single value and converts those characters to %xx as well. Use the single-value option for a query value such as a search term and the whole-address option for a complete address.
Is my text or file sent anywhere?
No. Everything is converted inside this browser and nothing is sent to a server or stored. File conversion supports files up to 3 MB.
Notes & limitations
This tool is a reference aid for conversion. Auto-detect guesses from the shape and can be wrong, and EUC-KR restoration works only within the charsets your browser supports. Your text and files are never sent to a server or stored. BTSPACE WAGLE is an unofficial information site.