Base64 / URL / Unicode Encoder & Decoder
One page for the encodings you reach for most often: Base64, URL percent-encoding, Unicode escapes, HTML entities and hexadecimal. Choose the format, click Encode or Decode, and the result appears below — multi-byte characters included, with no mangled text.
Every conversion happens locally, so the text you paste never leaves your device.
Features
- Base64 — Convert text to and from Base64 with proper UTF-8 handling, and turn image files into Base64 data URLs.
- URL Encoding — encodeURIComponent and decodeURIComponent, the right choice for query parameter values and path segments.
- Unicode — Convert between \uXXXX escape sequences and readable text, for a whole document at once.
- HTML Entities — Convert to and from <, &, &#xXXXX; and friends when you need to display source code or defuse markup.
- Hex — Convert strings to hexadecimal byte sequences and back.
How to use
- Enter the text you want to process on the left.
- Pick Base64, URL, Unicode, HTML entities or Hex on the right.
- Click Encode or Decode; the result shows up in the panel below.
- Use the Copy button on the result panel to take it with you.
FAQ
Is Base64 encryption?
No. Base64 is only a way of representing binary data with printable characters, and anyone can reverse it directly. It provides no confidentiality whatsoever; when secrecy matters, use a real cipher such as AES.
Why does a Base64 string end with equals signs?
The equals signs are padding. Base64 encodes every 3 bytes as 4 characters, so when the input length is not a multiple of 3, one or two = characters are appended to keep the output length a multiple of 4.
Should I use encodeURI or encodeURIComponent?
Use encodeURIComponent for individual query parameter values, because it also escapes &, =, ? and /. Use encodeURI when escaping a whole URL that must keep its structure, since it leaves those syntactic characters alone.
The decoded text is garbled. What went wrong?
Usually the original was encoded with a character set other than UTF-8, or the content was encoded twice. Try decoding once more and see whether the result still looks encoded; this page always treats text as UTF-8.