Text Encoding Detector
Auto-detect whether a string is Base64, URL-encoded, hex, or plain text — and decode it.
Character set
Text looks garbled, like é or Привет? Paste it in the box above and the repair shows here. To find the encoding of a file, choose or drop it below.
About Encoding Detector
Takes an unlabeled string of unknown encoding and attempts to identify whether it's Base64, URL-encoded, hex, or another common encoding, then decodes it automatically. Useful when you're handed a string with no context about how it was encoded — pulled from a log file, a URL parameter, an API payload, or a support ticket. Detection isn't always unambiguous, since some strings are technically valid under more than one encoding scheme, so results should be treated as a best-guess starting point.
Why detection can be ambiguous: a string like SGVsbG8 is valid Base64, but a short enough hex or URL-encoded string can occasionally also pass basic format validation without being the "real" encoding. Longer strings are far more reliable to auto-detect than short ones — under ~12 characters, cross-check the result manually. If the decoded output is itself another encoded string (double-encoding is common in URL query parameters and some legacy APIs), run the output back through the tool a second time.
Detects
Base64url (URL-safe)
URL percent-encoding
Hex string (0-9, a-f)
HTML entities (&)
Quoted-printable
Character set (garbled text, files)
Plain text
Supported encodings
Unicode: UTF-8, UTF-16LE/BE
Cyrillic: CP-1251, KOI8-R, KOI8-U, CP-866 (DOS), CP-855, ISO-8859-5, MacCyrillic, MIK
Other single-byte: CP-1250, CP-1252, CP-1253, CP-1254, CP-1255, CP-1256, CP-1257, CP-874, ISO-8859-2, ISO-8859-7, CP-437, Mac Roman
Chinese, Japanese, Korean: GB2312/GBK, HZ, Big5, Shift_JIS, EUC-JP, ISO-2022-JP, EUC-KR
Transport encodings: Base64, Base64url, URL, Quoted-printable, Hex, HTML entities
Typing mistakes: Wrong keyboard layout (RU ↔ EN), translit, 7-bit KOI8
Related Tools
How to recognize common encodings by eye
| Encoding | Tell-tale signs | Example |
|---|---|---|
| Base64 | A–Z, a–z, 0–9, + and /; length a multiple of 4; may end in = or == | SGVsbG8gd29ybGQ= |
| Base64url | Same, but - and _ instead of + and /, padding often dropped | eyJhbGciOiJIUzI1NiJ9 |
| URL (percent) encoding | % followed by two hex digits; + for spaces in query strings | hello%20world%21 |
| Hex | Only 0–9 and a–f, even length | 48656c6c6f |
Layered encodings
Real-world strings are often encoded more than once — a Base64 blob inside a URL parameter becomes percent-encoded, and a JWT is three Base64url parts joined by dots. Decode one layer at a time and run the output through the detector again until you reach readable text. For tokens, the JWT decoder splits and decodes all three parts at once.
Garbled text is a different problem
If text is readable but shows sequences like é instead of é, or ’ instead of an apostrophe, the issue is a character-set mismatch, not an encoding layer: UTF-8 bytes were read as Windows-1252 or ISO-8859-1. The fix is on the side that displays or stores the text — declare charset=utf-8 in the HTTP Content-Type header or HTML <meta>, and make sure the database connection uses UTF-8. You can inspect a site's response headers with the HTTP headers checker.
Short strings are ambiguous
A short string can be valid in several formats at once — cafe is valid hex and valid Base64. The longer the sample, the more reliable detection becomes; if you know where the string came from, that context usually settles it.
To encode or decode a known format directly, use the Base64 or URL encoder/decoder.