Hex-to-Text Converter
Decode hexadecimal byte values into readable text with strict encoding validation and a byte-by-byte audit trail.
Input
Result
Text conversion
Hello, World!
Byte breakdown
| Byte # | Hex byte | Decimal value |
|---|---|---|
| 1 | 48 | 72 |
| 2 | 65 | 101 |
| 3 | 6C | 108 |
| 4 | 6C | 108 |
| 5 | 6F | 111 |
| 6 | 2C | 44 |
| 7 | 20 | 32 |
| 8 | 57 | 87 |
| 9 | 6F | 111 |
| 10 | 72 | 114 |
| 11 | 6C | 108 |
| 12 | 64 | 100 |
| 13 | 21 | 33 |
How to use this Hex-to-Text Converter
What this calculator does
This converter interprets hexadecimal byte values as encoded text. A pair such as 48 represents one byte, and the selected character encoding determines how the complete byte sequence becomes text. UTF-8 is the default because it is the standard byte-oriented Unicode encoding used widely on the web and in data interchange. The converter is exact about the supplied bytes and selected encoding; it does not infer an unknown encoding, repair malformed byte sequences, decrypt ciphertext, or interpret a hexadecimal number as a Unicode code point unless that number is actually encoded as bytes.
When to use it
Use the tool when inspecting hexadecimal payloads in logs or protocol traces, checking how saved byte values decode, verifying a hand-built UTF-8 sequence, or translating a short hexadecimal string copied from debugging output. The Byte breakdown is especially useful when you need to verify the decimal value of each byte before looking at the decoded text.
How to calculate
- The converter opens with a valid demonstration: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21, which decodes to Hello, World! using UTF-8. Its Excel workbook is ready immediately.
- Replace the demonstration value in Hex code. Enter two hexadecimal digits per byte. You may separate bytes with spaces, line breaks, commas, colons, or hyphens; contiguous even-length hexadecimal input is also accepted.
- Choose Character encoding. UTF-8 validates UTF-8 sequences; UTF-16 can use a byte-order mark and otherwise defaults to little-endian here; the explicit LE and BE options force byte order; Windows-1252 decodes its single-byte extended-ASCII code page.
- Read Text conversion, then check Byte count, Character count, and the byte table. Use Download Excel to export the current validated state. Reset clears the demonstration data; while the required Hex code is empty, Excel export is disabled until you enter a complete valid sequence again.
Input guide
Hex code is required text representing bytes in base 16. Each byte must contain exactly two hexadecimal digits from 0 – 9 or A – F; letter case does not matter. For example, 48 69 is two bytes. Odd-length input such as 486, an unsupported character such as G, or an empty value is rejected rather than silently altered. Adding valid byte pairs increases the byte count and may add characters depending on the encoding.
Character encoding is required and controls interpretation of the bytes. UTF-8 Unicode (most common one) uses one to four bytes per Unicode scalar value. UTF-16 Unicode honors a leading FE FF or FF FE byte-order mark and otherwise uses little-endian order; UTF-16 (LE) Unicode and UTF-16 (BE) Unicode force the byte order and require an even byte count. Windows-1252 (extended ASCII) is a legacy single-byte code page. A common mistake is to treat a Unicode code point such as U+20AC as though 20 AC were its UTF-8 bytes. They are not: the UTF-8 bytes for the euro sign are E2 82 AC. The Unicode Standard's discussion of Unicode encoding forms explains the relationship between code points and UTF encodings.
Output guide
Text conversion is the decoded string and is an exact conversion for a valid byte sequence under the chosen encoding. Byte count counts input bytes, while Character count counts Unicode code points in the resulting JavaScript string, so the two values can differ for multi-byte UTF-8 text. Encoding repeats the active encoding in the summary. In the Byte breakdown, Byte # is the one-based position, Hex byte is the normalized two-digit hexadecimal value, and Decimal value is the same byte from 0 to 255 expressed in base 10. A zero byte is still a real byte, even if it does not render as a visible glyph.
Worked example
The startup sequence contains 13 bytes. The first byte is 48, which equals 72 in decimal and maps to H in UTF-8. The second byte 65 equals 101 and maps to e. Repeating the same byte-by-byte interpretation across all 13 bytes yields Hello, World!. Because every character in this example lies in the ASCII-compatible subset of UTF-8, the byte count and character count are both 13. For a non-ASCII example, F0 9F 8C 8D is four UTF-8 bytes that decode to the single character 🌍. RFC 3629 specifies UTF-8's byte structure and validity rules.
How hexadecimal bytes become text
Hexadecimal is a compact way to write byte values: two hex digits cover the full byte range from 00 to FF. Decoding text is a separate step. The encoding supplies the rules that map those bytes to characters. For UTF-8, ASCII-range characters use one byte, while many other characters use two, three, or four bytes. UTF-16 groups bytes into 16-bit code units, so byte order matters. This is why a visual byte table and a character count answer different questions.
This calculator uses strict UTF-8 validation rather than quietly substituting a replacement character for malformed sequences. That makes errors easier to diagnose when you are checking a byte payload. Browser implementations expose the same general byte-to-string model through the TextDecoder API, which accepts byte arrays and decodes them using a named character encoding.
Common interpretation mistakes
A hexadecimal byte sequence is not automatically text: the encoding matters. The byte FF is invalid as a standalone UTF-8 byte, but in Windows-1252 it decodes to ÿ. The two-byte sequence 41 00 is “A” in UTF-16 little-endian, while 00 41 is “A” in UTF-16 big-endian. Likewise, invisible control bytes can decode successfully without producing a visible symbol. When exact round-trip fidelity matters, keep the original byte sequence as the source of truth and treat the decoded string as an interpretation under a specific encoding.