Home Tools Blog About

Convert Hex to Text

In short

Decode hex or hex-dump output (xxd, hexdump -C, Wireshark) to UTF-8 text. Non-printable handling, strict mode. Free, offline, 100% client-side.

  • Runs in your browser
  • Nothing uploaded
  • Free, no sign-up

Decode hex bytes to UTF-8 text - with built-in hex-dump parser for xxd, hexdump -C, and Wireshark output. Paste raw hex or a full dump with offsets and ASCII sidebars; the tool strips the formatting and decodes automatically.

Enter hex or hex-dump to decode.
🛡
100% PrivateNo server uploads, ever
InstantRuns in your browser
💧
No WatermarksClean output, always
🆓
Free ForeverNo accounts, no limits

How to Use Convert Hex to Text

  1. Paste your hex. For raw hex (continuous digits, space/comma/colon separators, or 0x prefixes), keep the default "Raw hex" mode. For the output of xxd, hexdump -C, or Wireshark copy-as-hex, switch to "Hex dump" mode.
  2. In Hex dump mode, the tool strips the address offset (00000000:) and the ASCII sidebar (the printable text after 2+ spaces or between |...|) automatically - you can paste the output of `xxd file` directly without editing.
  3. Pick non-printable handling: Escape (xNN, default, safest for inspection), Placeholder (·), or Raw (literal control chars - careful).
  4. Toggle Strict UTF-8 if you want malformed byte sequences to fail instead of producing U+FFFD replacement characters.
  5. Press Convert (or Ctrl+Enter / Cmd+Enter). Auto-convert also runs 200 ms after keystrokes.
  6. Read the stats line. Raw mode shows bytes + chars + non-printable count. Hex-dump mode adds how many of the input lines successfully yielded hex bytes.
  7. Copy or Download: Copy places the decoded text on your clipboard; Download saves as a .txt file.

Frequently Asked Questions

How is this different from the “Hex to String” tool?

This one is UTF-8-focused and adds a hex-dump input mode that parses xxd, hexdump -C, and Wireshark copy-as-hex output directly – strip-offset, strip-sidebar is automatic. The hex-to-string tool has a full encoding selector (UTF-8, UTF-16, Latin-1, ASCII) but only accepts raw hex input. Pick this one when you’re pasting dump output; pick that one when you need non-UTF-8 decoding.

What hex-dump formats does it recognize?

Three common ones. xxd: 00000000: 4865 6c6c 6f20 576f 726c 640a Hello World. (offset + colon + hex groups + ASCII sidebar). hexdump -C: 00000000 48 65 6c 6c 6f |Hello| (offset + double-space + hex + pipe-wrapped sidebar). Wireshark Copy as Hex Stream: bare hex, handled by Raw mode. The parser is tolerant of variations – as long as a line starts with hex offset and the ASCII sidebar is separated by 2+ spaces or pipe characters.

How is multi-byte UTF-8 handled?

Correctly. The tool uses the browser’s native TextDecoder, which handles 1-byte ASCII, 2-byte Latin scripts (C3 A9 = “é”), 3-byte BMP chars (E2 98 83 = “☃”), and 4-byte supplementary-plane chars (F0 9F 98 80 = “😀”). An emoji that looks like a single character on screen may be 4 bytes in UTF-8.

What’s Strict UTF-8 mode for?

Validating the byte sequence before decoding. Strict mode errors on malformed UTF-8 (lone continuation bytes, overlong encodings, orphan high bytes) so you know the input is corrupt. Lenient mode (default) substitutes U+FFFD () for each invalid sequence and keeps going – useful for best-effort recovery.

Why would non-printable bytes show up?

Binary data often includes control bytes: x00 (null), x0A (newline), x1B (escape), x7F (DEL), etc. If you’re decoding a packet capture or a binary protocol payload, you’ll see these. Escape mode reveals them explicitly, Placeholder mode hides them under a dot, Raw mode emits the literal char (which can corrupt display if your terminal interprets them).

Can I paste a multi-line xxd dump directly?

Yes – that’s the primary use case for Hex dump mode. Paste the full output of xxd file.bin (all the lines with offsets), switch the Input mode to “Hex dump”, and the tool concatenates all the hex bytes across lines and decodes the whole file as UTF-8 text. Non-text files will decode to mostly escape sequences – expected behavior.

What if my hex has odd length?

Error: “hex must have even number of digits”. Every byte needs 2 hex digits; odd length is ambiguous. In Raw mode, check your input for accidentally-dropped digits. In Hex dump mode, this shouldn’t happen unless the dump itself is truncated mid-byte.

Does this decode binary files correctly?

It decodes the bytes as UTF-8 regardless of file type. For actual text files that’s fine. For images, binaries, or non-text data, the output will be mostly escape sequences or U+FFFD replacements – which is correct (that data simply isn’t UTF-8 text). Use a hex editor if you need to view binary structure, not this tool.

Is my hex data uploaded anywhere?

No. All decoding runs in your browser via the native TextDecoder API. No network requests, no server-side storage, no logs. Confirm in your browser’s Network tab: no outbound traffic during conversion. The tool works offline after the initial page load.

How do I reverse the conversion (text to hex)?

Use our “Text to Hex” or “String to Hex” converter. Or in code: [...new TextEncoder().encode(str)].map(b => b.toString(16).padStart(2, '0')).join(' ') in JavaScript. The round-trip is lossless for any valid UTF-8 text.

Keep going

Related Tools

All Hex tools →
Share

Embed this tool

Add this free tool to your website. Copy and paste the code: