What this tool does
The hexadecimal digits are read two at a time into bytes, and those bytes are decoded as UTF-8 text.
It accepts dumps as they come
Hex arrives in as many shapes as there are tools that print it, so the separators are simply ignored:
48 65 6c 6c 6f a hex editor
48,65,6c,6c,6f a CSV export
48:65:6c:6c:6f a MAC address, a certificate fingerprint
0x48 0x65 0x6c C source, a debugger
48656c6c6f a compact dump
All five decode to the same thing. Capitals read the same as lowercase.
What it refuses, and why
An odd number of digits. A byte is two digits; with an odd count, one end is missing and nothing says which. Padding a zero on the left or the right produces a different byte, so the tool reports the count instead of choosing for you.
A character that is not a hexadecimal digit. The message names it and gives its position in what you typed, not in the text after separators were stripped — the two differ, and pointing at the wrong character would be worse than saying nothing.
Replacement characters in the output
These mean the bytes are not valid UTF-8, and the usual cause is a truncated dump. An accented letter takes two bytes, a CJK character three, an emoji four. Cut one of them in half and the remainder cannot be read as text — by this tool or any other.
If you expected readable text, check whether the dump covers whole characters rather than a fixed number of bytes.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.