Encoding Toolkit (All-in-one)
Every encoding side by side — paste anything and it works out how to decode it.
Text is encoded as UTF-8. Nothing leaves your browser.
Looks like…
Decoders that read your input cleanly, most likely firstEncoded
Type or paste something above to see it in every encoding.
Base64 & Base32
Base64
RFC 4648, with = padding
Base64URL
URL-safe alphabet (- _), no padding — as in JWTs
Base32
RFC 4648 (A–Z, 2–7), as in TOTP secrets
Base32hex
RFC 4648 extended hex alphabet (0–9, A–V)
Web
URL encoding
Percent-encoding, as encodeURIComponent
Form encoding
application/x-www-form-urlencoded: spaces become +
HTML escape
Only & < > " ' — safe to put text into HTML
HTML entities (named)
Non-ASCII as named entities where they exist (é), else &#x…;
HTML entities (numeric)
Non-ASCII as decimal references (é)
Punycode
RFC 3492, the raw encoding (no xn--)
Domain name (IDN)
Internationalised domain in its ASCII xn-- form
Unicode escapes
JavaScript / JSON escapes
\uXXXX for non-ASCII, \n, \" and \\ — paste between double quotes
Python escapes
Python’s unicode_escape: \xe9, \u2615, \U0001f600
CSS escapes
For CSS strings and content: \E9, \1F600
Unicode code points
U+XXXX for every character
Bytes
Hexadecimal
Base16: two hex digits per UTF-8 byte
Binary
Eight bits per byte
Other bases
Base58
Bitcoin alphabet (no 0 O I l)
Base62
0–9 A–Z a–z, the bytes read as one big number
Base36
0–9 a–z (case-insensitive), the bytes read as one big number
ASCII85
Adobe variant with <~ ~>, as in PostScript and PDF
Z85
ZeroMQ RFC 32, for data in 4-byte blocks
Base85
RFC 1924 alphabet, as Python’s b85encode and git
Email & legacy
Quoted-printable
RFC 2045, as in email bodies
uuencode
Unix-to-Unix encoding with begin/end lines
Rotation ciphers
ROT13
Letters shifted by 13 — applying it again decodes
ROT47
Printable ASCII shifted by 47 — applying it again decodes
No encoding matches the filter.
About the Encoding Toolkit (All-in-one)
Paste any text and see it in 27 encodings at once: Base64 and Base64URL, Base32 and Base32hex, Base58, Base62, Base36, ASCII85, Z85 and Base85, hexadecimal and binary, URL and form encoding, HTML escapes and entities, JavaScript/JSON, Python and CSS escapes, Unicode code points, Punycode and internationalised domain names (IDN), quoted-printable, uuencode, ROT13 and ROT47.
Paste something encoded instead and the auto-detector tries every decoder, throws away readings that produce gibberish and shows the likely ones first — so a mystery string from a log file, an email source or a URL is decoded in one step. Each result can be copied or used as the new input, to peel off several layers. Everything runs in your browser: nothing is uploaded.
How to use it
- Type or paste text into the input. Every encoding updates as you type.
- If the input is already encoded, look at Looks like…: the most likely reading is first, with the decoded text.
- Use Copy on any result, or Use as input to decode or encode it again (for example, Base64 inside URL encoding).
- To encode raw bytes rather than text, switch the input to Hex bytes and paste hex such as
48 65 6c 6c 6f. - Type in Filter (for example
baseorescape) to show only the encodings you need.
Examples
SGVsbG8sIFRvb2xWZXJzZSEg4pyTIGNhZsOpIPCfmIA=
Most likely Base64 → Hello, MySmartCoPilot! ✓ café 😀
münchen.de
Domain name (IDN): xn--mnchen-3ya.de Punycode (whole text, no xn--): mnchen.de-q9a
The IDN row converts each label of the domain and adds xn--, which is what DNS and certificates use; paste the xn-- form to get the Unicode name back. The Punycode row encodes the whole text as one string, so it suits single labels: münchen → mnchen-3ya.
café 😀
JavaScript/JSON: caf\u00E9 \uD83D\uDE00 Python: caf\xe9 \U0001f600 CSS: caf\E9 \1F600 HTML: café 😀
Gr=C3=BC=C3=9Fe aus K=C3=B6ln
Most likely quoted-printable → Grüße aus Köln
Common uses
- Figuring out what an encoded string in a log, cookie, token or email header actually says.
- Escaping text for JavaScript, JSON, Python, CSS or HTML source code.
- Converting internationalised domain names to and from their xn-- form for DNS records and certificates.
- Encoding binary data (as hex) for configuration files, test fixtures or protocols that need Base32, Base58 or ASCII85.
- Comparing encodings to pick the shortest one for a payload.
How the auto-detector decides
Every decoder runs on your input. A reading is shown only when the decoder accepts the input completely (no invalid characters, correct lengths and padding) and the result looks like real text — mostly letters, digits, punctuation and spaces — or like a known file type such as PNG, JPEG, PDF or ZIP. Readings are ranked by how strongly the input's shape points to each encoding: %41 suggests URL encoding, & HTML, \u0041 an escape, <~…~> ASCII85, xn-- a domain name.
Some bases (Base58, Base62, Base36, Z85, Base85) accept almost any word, so their readings appear only when they decode to plain ASCII text. Short inputs can be valid in several encodings at once; check the decoded text before you rely on it.
Notes on the encodings
- Base64/Base32/hex follow RFC 4648. Decoding accepts missing padding, line breaks, either Base64 alphabet and lower-case Base32.
- Base58 uses the Bitcoin alphabet; Base62 (0–9 A–Z a–z) and Base36 (0–9 a–z) read the bytes as one big number, and leading zero bytes become leading 0s (the same convention as Base58). There is no single standard for Base62 or Base36 of text, so other tools may differ.
- ASCII85 is the Adobe variant with
<~ ~>andzfor four zero bytes; Z85 (ZeroMQ) needs data in blocks of 4 bytes; Base85 uses the RFC 1924 alphabet like Python'sbase64.b85encodeand git. - Quoted-printable (RFC 2045) keeps line breaks and wraps long lines at 76 characters with soft breaks. uuencode writes a
begin 644 data.txtheader. - Punycode (RFC 3492) shows the raw encoding of the whole text; Domain name (IDN) converts a domain with the browser's own IDNA processing, the same that the address bar uses.
- HTML entities use the full list of 2,231 named character references of the HTML Standard, and decode exactly as a browser does in text (including
©without a semicolon). - Text is turned into bytes as UTF-8.
Limitations
- Text is always read and written as UTF-8; legacy character sets (Windows-1252, Shift_JIS…) are not converted.
- Base58, Base62 and Base36 are skipped for inputs over 4 KB, because their big-number conversion would make typing slow; everything else works up to 2 MB.
- The auto-detector suggests readings — it cannot prove which encoding was used, especially for very short inputs.
- Encryption is not encoding: ROT13 and ROT47 are puzzles, not protection.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
How do I know which encoding a string uses?
Paste it and read Looks like…. The detector tries every decoder and lists only the readings that decode cleanly into readable text, most likely first. If nothing is listed, the text is probably plain text, encrypted, compressed or in an encoding this tool does not cover.
What is the difference between Base64 and Base64URL?
Base64URL replaces + and / with - and _ and usually drops the = padding, so the result can sit in URLs and file names. JWTs use it. The decoder here accepts both.
Why do the JavaScript and Python escapes look different?
JavaScript and JSON write characters outside the Basic Multilingual Plane, such as emoji, as two \u escapes (a surrogate pair: \uD83D\uDE00), while Python writes one \U0001f600. Python also uses \xe9 for characters below 256. Both decode to the same text.
What does xn-- in a domain name mean?
It marks a label written in Punycode, the ASCII form of an internationalised domain name. xn--mnchen-3ya.de is münchen.de. Browsers show the Unicode form; DNS, email servers and certificates use the xn-- form.
Is my data sent anywhere?
No. All encoding and decoding happens in your browser, and the page works offline once loaded. Only the HTML entity list (about 30 KB) is downloaded from this site when the page opens.