convert hex to text in excel
Convert Hex to Text in Excel: Why HEX2DEC Stops Short

Why Excel Stops at Decimals for Hex Strings

Excel's HEX2DEC function returns a decimal number from a hexadecimal input, so a cell containing 48 returns 72 rather than the ASCII letter H. That single fact is the central reason a direct hex-to-text conversion in Excel usually fails. HEX2DEC works on individual numeric values rather than on byte sequences, caps input at 10 hexadecimal digits, and returns a base-10 integer. It has no companion HEX2TXT or HEX2UTF8, no awareness of multi-byte UTF-8 encodings, and no notion of pairing two hex digits into one byte before mapping that byte to a character. Anyone who needs to interpret a string such as 48656c6c6f as Hello therefore has to invent a pipeline inside the spreadsheet, and that pipeline almost always breaks at the first non-ASCII character. The usual homegrown approach runs HEX2DEC on each byte, CHAR on each decimal, and CONCAT or & to glue the letters together. The pipeline works for plain ASCII because every byte sits below 128 and maps cleanly to a code point, but it collapses the moment a byte climbs above 127 because Excel does not provide a built-in way to feed those bytes through CHAR and recover a valid UTF-8 sequence. That is the practical gap a separate browser-based UTF-8 hex decoder is designed to close once the data leaves the spreadsheet.

The HEX2DEC limit on input length is well known: anything above 10 hexadecimal digits returns an error, and the function returns a base-10 integer that has no concept of byte boundaries. The CHAR function accepts numbers from 1 to 255 and turns them into the corresponding single-byte characters, but it does not interpret those characters as part of a multi-byte UTF-8 sequence. So a homegrown Excel decoder can recover ASCII text and stray Latin-1 characters, but it cannot recover é, €, 你, or 😊 without rebuilding the encoder from scratch. Every one of these gaps is the kind of gap that the browser-based Hex to Text Converter closes with a strict, UTF-8-aware decoder that runs locally on whatever hex you copy out of Excel.

Getting Hex Out of Excel for Browser Decoding

The first practical question is how to move hex data out of an Excel cell and into the tool's input. Three patterns cover almost every spreadsheet you will meet.

Pattern one is one cell, one byte: a column of two-character hex strings such as 48, 65, 6c, 6c, 6f. Select the range, copy it, and paste into the tool. The tool's plain mode with whitespace separators enabled accepts this as five even-length hex groups separated by ASCII whitespace. Pattern two is one cell, many bytes: a single cell containing 48656c6c6f. That is the same payload as the first pattern, joined. The tool accepts it as one continuous even-length group because every group just has to contain only hexadecimal digits and contain an even number of digits. Pattern three is one cell, code-style tokens: a cell containing 0x48 0x65 0x6c 0x6c 0x6f, which is how many languages and database clients export binary literals. The tool's prefixed mode accepts this when prefixes are enabled and the option enforces the exact 0xNN token shape.

Excel's Text to Columns wizard will happily split the second and third patterns on commas, spaces, tabs, semicolons, or pipes depending on locale. If you do not need that split, do not run it; copy the cell contents as a single string and paste straight into the tool. If a hex value carries a leading apostrophe in Excel (the spreadsheet's way of forcing text), the apostrophe is not part of the string and Excel strips it on copy, so you do not need to strip it again. What you do need to strip is the leading equals sign that Excel adds when it interprets a hex-looking string as a formula; the tool rejects any character that is not a hex digit, an enabled separator, or an enabled 0x prefix.

How to Convert Hex to Text Using the Browser Tool

  1. Open the Hex to Text Converter in the same browser tab you use for spreadsheets. The page loads with both syntax options at their defaults: ASCII whitespace allowed and 0x prefixes allowed.
  2. Paste your hex into the input field. If your Excel cells contained 48656c6c6f, paste exactly that. If your cells contained 48,65,6c,6c,6f, either re-paste after running Text to Columns on comma and then paste the joined result, or remove the commas yourself; the parser only treats enabled ASCII whitespace as a separator and rejects commas outright.
  3. Confirm the syntax options. Leave ASCII whitespace enabled unless your hex has no separators at all and you want to forbid stray ones. Leave prefixes enabled unless none of your tokens start with 0x, in which case disabling prefixes rejects any accidental 0x rather than silently ignoring it.
  4. Click Decode. The tool reports the byte count and the decoded text in a read-only field. The byte count is the number of bytes the parser accepted, not the number of hex digits.
  5. If the field shows an error, fix the first reported problem and decode again. Editing the input or changing either option clears the previous output immediately, so stale text never lingers next to a fresh error.
  6. Copy the decoded text with the copy button if your browser permits clipboard access, or select and copy manually. Paste it back into a single Excel cell with Ctrl+V.

Accepted Hex Formats Compared to Excel Cell Values

The table below shows what the parser accepts next to a typical Excel cell value. The "Excel cell value" column describes the literal string that would appear in the formula bar; the "Tool result" column describes what the browser tool does with that exact string copied out of Excel.

Excel cell value Tool result
48656c6c6f Decoded as Hello (5 bytes)
48 65 6c 6c 6f Decoded as Hello with whitespace enabled (5 bytes)
0x48 0x65 0x6c 0x6c 0x6f Decoded as Hello with prefixes enabled (5 bytes)
48,65,6c,6c,6f Error: comma is not an enabled separator
4 8 65 6c 6c 6f Error: 4 and 8 are odd-length groups
48g65 Error: g is not a hexadecimal digit
EFBBBF41 Decoded as A with the leading 3-byte BOM consumed
48 Decoded as H (1 byte)

Quick verification works on any small pair: 4869 decodes to Hi because 0x48 equals 72, which is the ASCII code for H, and 0x69 equals 105, which is the ASCII code for i. Both are one-byte UTF-8 sequences, so the two bytes together make the two characters.

Common Excel Hex Pitfalls and How the Tool Catches Them

Odd nibbles are the most frequent failure when hex is exported from a formula chain. Excel does not warn when a CHAR call returns a code point that is not a complete UTF-8 sequence, so a self-built encoder can quietly produce a stray continuation byte that looks fine in the spreadsheet. The tool rejects that byte at decode time and returns the exact wording that nothing was decoded, so the bad row can be traced back to the formula that produced it. A second pitfall is the BOM: a workbook saved as CSV UTF-8 in Excel prepends EF BB BF, and that prefix is a valid UTF-8 byte order mark. The tool consumes it because the standard TextDecoder wrapper uses its default ignoreBOM false behaviour, which means EF BB BF 41 becomes A and not the U+FEFF followed by A. The same bytes in the middle of a longer sequence are preserved as the literal U+FEFF character, which is why placement matters.

A third pitfall is mixed syntax. Cells produced by different formulas can carry a mix of 0x-prefixed and bare tokens, and the parser refuses to interpret 0x41 42 because it cannot tell whether 42 is plain hex or a half-stripped prefix. The fix is to pick one syntax for the export and stick to it: either strip every 0x prefix before copying into plain mode, or pad every byte to the 0xNN shape before copying into prefixed mode. A fourth pitfall is the silent whitespace. Excel will happily paste a non-breaking space into a cell when a value is imported from a web source, and the tool rejects any non-ASCII spacing character outright. Replace those characters in Excel with TRIM and CLEAN, or copy the cell through Notepad first to expose the difference between regular space and a non-breaking space.

The size budgets are explicit. The tool accepts raw input up to 2,000,000 UTF-16 code units, parsed bytes up to 1,000,000, and decoded text up to 1,000,000 UTF-16 code units. Prefixed notation uses more source characters per byte, so a 0x-prefixed export from a large spreadsheet can hit the raw-input budget before the byte budget; that is expected and reported with the same "nothing was decoded" wording. No value is silently truncated, no oversized source is sliced, and the byte count is calculated before allocation so a budget error never produces a partial output.

The tool only decodes UTF-8. It will not guess Windows-1252, ISO-8859-1, UTF-16, or Shift_JIS, because silent guessing changes byte meaning and is exactly the failure mode that motivates a strict decoder. These checks follow the WHATWG UTF-8 decoder and RFC 3629 rather than a permissive byte-to-code-unit shortcut. If your Excel export came from a legacy workbook and the decoded text looks wrong, the bytes are almost certainly not UTF-8, and the right next step is to confirm the source encoding rather than to chase a decoding trick. For UTF-8 hexadecimal, the workflow is: copy from Excel, paste into the tool, decode, copy the result, paste back. Three steps, no formulas, no server upload, no silent replacement character.