gizmobench
BrowseDaily

Hex to Text

Read a hex byte sequence as UTF-8 text. This page opens the decoding direction, accepts compact bytes or supported separators and prefixes, and refuses malformed input. 48 69 becomes Hi; C3 A9 becomes é. Swap direction to inspect the same text as hexadecimal bytes.

Text12 bytes
Hello, world
Bytes
12
Encoding
Separator
Case

Text ready. 24 hex digits read as 12 bytes, decoded as UTF-8 into 12 characters.

24 hex digits read as 12 bytes, decoded as UTF-8 into 12 characters.

  • Hello, worldUTF-8
    48 65 6c 6c 6f 2c 20 77 6f 72 6c 64
  • Emojione 4-byte code point
    f0 9f 98 80
  • Odd-length hex indecode
    That is 3 hex digits, an odd number. Every byte is two digits, so one digit is missing or one is extra: check the end of what you pasted.
What the bytes are. Text on both sides of this page is UTF-8: the encoding the web, and almost every file and database written this century, uses. One character is one byte only for the first 128 characters, the ones ASCII covers. An accent is two bytes, most CJK characters are three, and an emoji is four, which is why the byte count sits next to the result rather than being left for you to work out. ASCII only is the same encoder with a refusal attached: anything that would take more than one byte stops the conversion and says which character it was, instead of being widened without telling you. Hex coming in is read the same way whatever the separator setting says, so spaces, commas, colons, hyphens and 0x prefixes all work, and a byte that is not valid UTF-8 is named with its position rather than turned into a replacement character.

Up to 1,000,000 characters in one pass, converted here in your browser with nothing uploaded. Up to 100,000 characters of what you type is kept in this browser alone so it is still here when you come back, and the Start over button above forgets it.

Accuracy. Exact byte-for-byte conversion. Text is encoded as UTF-8 before it is shown as hex, so a character outside ASCII becomes more than one byte, and the byte count says so.

Common questions

Why is é two bytes of hex and not one?
Because the text is encoded as UTF-8, which is what files, web pages, databases and network connections actually hold. In UTF-8 the first 128 characters take one byte each and everything else takes two, three or four, so é is c3 a9. A converter that shows e9 for é is using Latin-1, one byte per character, which is a different thing and will not match the bytes in your file. The byte count next to the result is there so the difference is visible.
What does "an odd number of hex digits" mean?
Every byte is exactly two hex digits, so a valid string of hex has an even number of them. An odd count means one digit is missing or one is extra, usually from a copy that clipped the end. Nothing is padded with a zero or trimmed to fit here, because either guess would hand you a byte you never had: the conversion stops and says how many digits it counted.
Does it accept hex with 0x prefixes, commas or colons?
Yes. Hex going in can be separated by spaces, commas, colons, semicolons, hyphens, underscores or line breaks, can carry an 0x or a backslash x in front of each byte, and can run together with nothing between the bytes at all. Mixed forms work too. Anything that is not a hex digit or a separator is named with its position instead of being skipped. On the way out you choose the separator and whether the digits are lower case or upper case.
What happens if the hex is not valid UTF-8?
It is refused, with the byte, its position and the rule it breaks. A continuation byte with nothing to continue, a sequence that stops in the middle of a character, a value written the long way round, a surrogate half and a value above U+10FFFF each get their own message. Most tools hand back U+FFFD in place of the bad byte, which looks like a successful conversion of text you never had, so this one stops instead.
What is ASCII only mode for?
It is the same encoder with a refusal attached, for when you need to know the text is plain. In ASCII only mode any character that would take more than one byte stops the conversion and is named, and any byte above 0x7f in hex you paste is refused the same way. Switch the encoding back to UTF-8 and the same input converts.
How much can I convert, and does anything leave my computer?
Up to 1,000,000 characters in one pass, which is the point past which rebuilding the output on every keystroke stops feeling like typing. Past it the input is refused with its own size quoted and nothing is cut off. The conversion is arithmetic that runs in your browser: nothing is uploaded, there is no account, and up to 100,000 characters of what you type is kept in this browser alone so it is still there when you come back. The Start over button forgets it.
How do I convert hex to text or decode a compact hex string?
Swap direction to read hex and write text, or open Hex to Text. 4869, 48 69 and 0x48 0x69 each decode to Hi. Whitespace and recognized separators separate bytes; arbitrary characters, incomplete hex pairs and invalid UTF-8 are refused.
Can I look up ASCII characters, controls and hexadecimal codes?
ASCII to Hex includes the complete 0 to 127 ASCII table, with decimal, hexadecimal and binary byte values. 41 is A, 20 is a space, 0A is a line feed and 0D is a carriage return. Controls may look blank when decoded; the table names them. A0 is not an ASCII byte: a non-breaking space in UTF-8 is C2 A0.
Is this the same as hex to decimal, a hex dump editor or Unicode code-point conversion?
This tool converts text bytes. Number Base Converter converts an integer such as FF to 255. Unicode Character Picker looks up code points. This page does not parse hex dumps with offset or ASCII columns, edit binary files, process packet captures, infer UTF-16 or legacy encodings, generate decryption keys, or provide code in a programming language.
Do preset pages replace my remembered settings?
Only choices you explicitly change are saved. An ASCII or decoding preset does not overwrite a remembered separator, letter case or other mode. Drafts record their own direction so a hex draft is not silently restored as ordinary text on a different preset.

Exact byte-for-byte conversion. Text is encoded as UTF-8 before it is shown as hex, so a character outside ASCII becomes more than one byte, and the byte count says so.