Home Tools Blog About

Convert Hexadecimal to UTF-8

In short

Decode hex to UTF-8 text with byte-structural breakdown. Handles ASCII, Latin, CJK, emoji. Batch mode. Free, offline, client-side, instant.

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

Paste hex bytes - get UTF-8 text plus a per-code-point breakdown showing 1/2/3/4-byte structure, code points, and rendered characters. Handles emoji and every Unicode script.

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

How to Use Convert Hexadecimal to UTF-8

  1. Paste your hex - continuous (48656C6C6F), space-separated (48 65 6C 6C 6F), comma-separated with 0x prefixes, or one sequence per line. The parser strips whitespace, commas, underscores, and 0x/x/# prefixes automatically.
  2. Pick your options - "Strip BOM" removes a leading EF BB BF marker before decoding; "Fatal" throws an error on invalid UTF-8 instead of emitting the replacement character .
  3. See the result - the output pane shows the decoded text, and the breakdown lists each Unicode code point with its bytes, its UTF-8 bit pattern, and the rendered character.
  4. Read the stats - total bytes, code points, ASCII vs non-ASCII split, and any error count. Decoded lines count ok; skipped lines count as errors without aborting the batch.
  5. Copy or download - the Copy button uses the async Clipboard API with an execCommand fallback; Download saves the output as hex-to-utf8.txt in UTF-8 encoding.
  6. Trust the math - decoding uses the browser's native TextDecoder('utf-8'), the same decoder that parses every web page. No homemade byte juggling, no off-by-one bugs.

Frequently Asked Questions

How does this differ from hex-to-ASCII or hex-to-text tools?

ASCII tools read every byte as a single character (0-127 only; 128-255 give garbage or Latin-1). This tool uses real UTF-8 multi-byte parsing: C3 A9 becomes é (one code point, two bytes), not é (two characters). That matters the moment non-English text is involved.

Can I decode emoji?

Yes. Emoji use 4-byte UTF-8 sequences in the supplementary plane. F0 9F 98 80 decodes to 😀 (U+1F600). The breakdown panel shows the 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx pattern so you can see how the 21-bit code point is packed across 4 bytes.

What does the breakdown panel show?

For each code point: the rendered character, a 1B/2B/3B/4B tag for byte count, the Unicode code point (U+XXXX), the raw hex bytes, and the UTF-8 bit pattern (e.g., 1110xxxx 10xxxxxx 10xxxxxx for 3-byte). First 60 code points are shown to keep the page responsive.

What happens with invalid UTF-8?

With “Fatal” off (default): invalid bytes become uFFFD (the Unicode replacement character �). With “Fatal” on: the decode throws, and the line is flagged with “invalid UTF-8 at byte N” – useful when validating externally-sourced hex.

Does it accept the 0x prefix and commas?

Yes. The normalizer strips 0x, 0X, x, #, commas, underscores, and all whitespace. 0x48, 0x65, 0x6C and x48x65x6C and 48_65_6C all decode identically to Hel.

What is the BOM and should I strip it?

The Byte Order Mark (EF BB BF) is a 3-byte prefix some editors add to UTF-8 files. It’s invisible when rendered but bytes 1-3 of your hex will look “off”. Strip-BOM on (default) silently removes it; off leaves it as uFEFF at the start of output.

Is my hex data sent anywhere?

No. Everything runs in your browser – the TextDecoder is built into JavaScript. No fetch, no XHR, no analytics on the hex. Open DevTools → Network, decode anything, watch zero requests fire. Safe for credentials, PII, or proprietary byte streams.

Does it work offline?

Yes. Once the page (HTML/CSS/JS, under 20 KB total) loads, pull your Ethernet cable or hit airplane mode – every subsequent decode runs locally. Perfect for air-gapped systems or when debugging on a train.

How large an input can it handle?

Typical inputs decode in under 50 ms. A 10,000-byte hex string decodes in about 5 ms on a modern laptop. The breakdown panel caps at 60 rows to keep DOM work fast on very large batches; the output textarea and stats still reflect the full decoded text.

Can I get the reverse direction (UTF-8 text → hex)?

Use the companion UTF-8-to-Hex encoder in the same category. That tool accepts any Unicode text – emoji, CJK, Arabic – and outputs the corresponding hex byte sequence, with the same 4-format options (continuous, spaced, 0x-prefixed, x-prefixed) available here.

Keep going

Related Tools

All Utf8 tools →

Convert UTF-8 to Hexadecimal

Convert UTF-8 text to hexadecimal (5 formats, case, grouping). Bidirectional. Emoji-safe. Free, client-side, instant,…

Binary to UTF-8 Decoder

Binary to UTF-8 Text Decoder handles emoji, CJK, accents, strips BOM, counts replacement chars.…

Convert Arbitrary Base to UTF-8

Decode numeric tokens in any base (2-36) as UTF-8 bytes - multi-byte emoji and…

Base64 to UTF-8 Decoder

Decode Base64 to UTF-8 text - handles emoji, CJK, BOM-stripping, URL-safe variants. Free, client-side,…

Convert Bytes to UTF-8

Convert Bytes to UTF-8 Decode decimal/hex/binary byte values to UTF-8 text - emoji, CJK,…

Code Points to UTF-8 Converter Free

Free online Unicode code points to UTF-8 converter. Shows actual UTF-8 byte sequences per…

Convert Data URI to UTF-8

online Data URI to UTF-8 decoder with byte-breakdown panel for emoji and CJK. Client-side,…

Convert Decimal to UTF-8

online decimal to UTF-8 text decoder. Byte-mode (raw UTF-8 bytes) and codepoint-mode. Client-side, instant,…

Convert HTML Entities to UTF-8

Decode HTML entities to UTF-8 with per-character byte breakdown. Named, decimal, hex. Free, offline,…

Convert Octal to UTF-8

Decode octal byte sequences to UTF-8 text, encode UTF-8 to octal. C-escape support, multi-byte.…

Convert UTF-16 to UTF-8

Convert UTF-16 code units to UTF-8 text and bytes. 3 formats, BE/LE, BOM, surrogate…

Convert UTF-32 to UTF-8

Convert UTF-32 code points to UTF-8 text and bytes. 3 formats, BE/LE, BOM, strict…

Share

Embed this tool

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