Convert hexadecimal to readable UTF-8 text and text to hex, tolerant of spaces and colons — both directions in your browser.
Hexadecimal represents each byte as two characters from 0-9 and a-f, so 48 is the byte 0x48, which is the ASCII letter H. Hex is the lingua franca of low-level work: hash digests, packet captures, memory dumps, protocol fields, and shellcode are all commonly shown in hex. This converter goes both ways — paste hex to recover the UTF-8 text it represents, or type text to see its hex byte encoding.
How you'll use it. Paste hex — with or without spaces or colons between bytes, both are stripped — into the decode box and read the text. Type into the encode box to get the hex for any string. A valid hex string must have an even number of digits, because every byte is exactly two hex characters. 48 65 6c 6c 6f decodes to Hello, and Hello encodes to 48656c6c6f.
Where it comes up. During traffic analysis you often see ASCII payloads rendered in hex inside Wireshark or tcpdump; converting them back reveals plaintext protocol commands, credentials sent in the clear, or injected payloads. In reverse engineering, strings pulled from a binary are frequently hex-dumped. In web work, some frameworks hex-encode tokens or bytes that you need to read — or you need to produce a hex literal for a test.
Common mistakes. An odd digit count means a byte was truncated or a stray character slipped in. Non-hex characters (anything outside 0-9/a-f after separators are removed) indicate the data is not actually hex — it might be Base64 or raw text. And decoded bytes that are not valid UTF-8 will show replacement characters; that usually means the data is binary (an image, compressed blob, or encrypted content) rather than text. In that case, feed the first few bytes to the file signature identifier to learn what the binary really is.
Defensive angle. Hex is a favorite obfuscation layer — encoded JavaScript (\x3c\x73...), hex-escaped SQL, and packed shell commands all aim to dodge keyword-matching filters. When triaging suspicious input or malware, decode hex sequences to see the real payload before deciding it is benign; a value stacked with URL encoding or Base64 may need several passes. On the defense side, canonicalize and decode input in your detection pipeline so signatures match the true content, not its hex disguise.
Encode text to Base64 and Base64URL, and decode Base64 back to readable text with a hex view of the raw bytes — both directions, in your browser.
Base64, base64url, hex, percent-encoding, and HTML entities in one pass.
Escape text to HTML entities or decode entities back, to reason about XSS and safe output encoding.
Percent-encode text for safe use in URLs and query strings, and decode percent-encoded values back to plain text — including a second pass that exposes double-encoding.
Encode and decode Base64 text and files.
Encode, decode, and parse URL components.