Decoding hex from six sources
Pick the format the hex actually came from — a raw byte dump, a JavaScript or JSON string escape, an HTML/XML numeric character reference, or a SQL hex literal — and paste it as found. Whitespace and line breaks between values are ignored; a plain-hex or SQL value can also include 0x prefixes, spaces, colons, or dashes as separators and this strips them automatically.
JavaScript and JSON mode decode \x/\u escapes back to their original UTF-16 code units — this correctly reconstructs characters outside the Latin-1 range, including emoji represented as a surrogate pair across two \uHHHH sequences. HTML/XML mode decodes each &#xHH; reference as a full Unicode code point.
FAQ
Why does it say "odd number of hex digits"?
Every byte needs exactly two hex digits. An odd count means a digit is missing, or the value got truncated somewhere along the way — check that the whole string copied cleanly.
Can I mix formats in one input?
No — pick the mode that matches what you have. Plain hex mode is lenient about separators (spaces, colons, 0x prefixes) but still expects every value to be a byte pair, not a mix of raw hex and escape sequences.
Try it yourself
Go the other direction with Hex Encode, in any of the same six formats.