Hexadecimal ↔ Text Converter
EncodingEverything runs locally in your browser — nothing is uploaded
Turn a hex string back into text, or encode text as hex. Input is forgiving: spaces, colons, hyphens and commas are all treated as separators, and 0x or \x prefixes are stripped — the shapes that come out of packet captures, debuggers and source code work without cleanup. Text is handled as UTF-8, so Chinese, Japanese and emoji round-trip byte for byte, and the byte count is shown (three bytes per CJK character, four per emoji — which is why the hex form looks so long). Invalid UTF-8 sequences are reported rather than papered over with replacement characters.
Features
- Both directions: text to hex, and hex back to text
- Accepts spaces, colons, hyphens, commas, and 0x or \x prefixes on input
- Output separators: spaces, colons, none, or the 0x prefix, with optional uppercase
- UTF-8 throughout, so Chinese, Japanese and emoji round-trip correctly
- Shows the byte count, making multi-byte characters obvious
- Invalid UTF-8 byte sequences are reported instead of silently replaced
- Input that reads as hex is decoded as hex, and the direction can be pinned manually
- Every result line copies on its own, so taking just the hex is one click
How to use
- Paste a hex string or some text
- The result appears as you type — hex-looking input is decoded as hex, and the result says so
- Switch the direction to Text → Hex or back if you need the other reading
- Pick an output separator and copy the line you need
FAQ
- Why does an input like beef fail?
- Because it reads both as two bytes (0xBE 0xEF) and as a piece of text. The tool tries the former by default, and those two bytes are not valid UTF-8 — so it reports the problem and points out the alternative. Switch the direction to Text → Hex and you get 62 65 65 66, the hex form of those four letters.
- Why is the hex form of Chinese text so long?
- A CJK character takes three bytes in UTF-8, and each byte is two hex characters — six characters per character. The byte count row exists so you can check this directly: six hex characters per CJK character, eight per emoji (four bytes).
- Can it decode hex that came from GBK or GB2312?
- No — decoding is UTF-8 only. Most GBK byte sequences are not valid UTF-8, so the tool tells you exactly that instead of showing mojibake. Falling back to replacement characters would leave you with text that looks fine and is in fact corrupted.
- Is my input uploaded anywhere?
- No. The conversion happens in the browser and the page sends no requests — hex strings often carry keys, tokens or protocol data, and none of it leaves the machine.
Related tools
CRC-32
EncodingCompute CRC-32 checksums of any text across six variants including IEEE, Castagnoli and Koopman, with a note on where each one is used.
CRC-16
EncodingCompute CRC-16 checksums of any text across nine common variants — ARC, Modbus, XMODEM, KERMIT and more — each labelled with its use case.
Unicode Escape
EncodingConvert non-ASCII text and emoji into \uXXXX or \xXX escapes and back, with emoji written as proper surrogate pairs. Runs entirely in your browser.
Base64
EncodingConvert text to Base64 and back, with correct UTF-8 handling for accents, CJK and emoji. Runs entirely in your browser — nothing is uploaded.
Hash
EncodingCompute MD5, SHA-1, SHA-256, SHA-512 or MD4 digests of any text, hashed as UTF-8 bytes so they match openssl exactly. Runs in your browser.
URL Encode
EncodingEscape text into %XX form and back again, treating a whole URL and a single parameter value as different jobs. Runs entirely in your browser.