Base32 Encoder Decoder
Encode UTF-8 text or hex bytes as RFC 4648 Base32, or decode canonical Base32 into hex, text and a byte file.
Open toolPaste a hex, decimal, or binary byte array into the Byte Array to String Converter below to decode it into a UTF-8 string (or switch directions to encode text into hex, decimal, and binary byte arrays).
Enter the inputs, then select Convert Bytes / Text.
Result will appear here
The Byte Array to String Converter tokenizes your input according to the selected base (16, 10, or 2), validates that every value lies within 0..255, constructs a Uint8Array, and decodes the buffer using RFC 3629 UTF-8 rules.
0 <= byte <= 255 (0x00..0xFF); UTF-8 multi-byte sequences use 1 to 4 bytes per Unicode scalar value.
If a multi-byte UTF-8 sequence is truncated or contains an illegal continuation byte, Strict mode pinpoints the exact 0-based byte offset.
Review the input parameters, allowed value ranges, and worked reference cases for the Byte Array to String Converter below before running your calculation.
| Parameter / Scenario | Default / Sample Value | Rule or Allowed Range | Output / Usage Note |
|---|---|---|---|
| Input: Conversion direction | bytes_to_string | Options: Byte Array -> UTF-8 String (Decode), UTF-8 String -> Byte Array (Encode) | Required workspace parameter |
| Input: Byte representation format | hex | Options: Hexadecimal bytes (e.g. 48 65 6C 6C 6F or 0x48, 0x65), Decimal byte array (e.g. [72, 101, 108, 108, 111]), 8-bit binary bytes (e.g. 01001000 01100101) | Required workspace parameter |
| Input: Input bytes or UTF-8 string | 48 65 6C 6C 6F 2C 20 55 54 46 2D ... | Supports space, comma, bracketed JSON array [..], or continuous hex strings. | Required workspace parameter |
| Input: UTF-8 decoding policy | strict | Options: Strict UTF-8 (report exact byte index on invalid sequence), Permissive (replace invalid bytes with U+FFFD ) | Required workspace parameter |
| Worked Case 1: Default 13-byte hex array ('48 65 6C 6C 6F 2C 20 55 54 46 2D 38 21') | Preloaded / test values | Uint8Array([b_0, ..., b_{n-1}]) <-> TextDecoder('utf-8', { fatal: strict }).decode(bytes) | Decoding the 13 hex bytes [0x48..0x21] (decimal [72, 101, 108, 108, 111, 44, 32, 85, 84, 70, 45, 56, 33]) outputs 'Hello, UTF-8!' (13 bytes, 13 Unicode code points). |
| Worked Case 2: Decoding a JSON decimal byte array with multi-byte UTF-8 | Preloaded / test values | Uint8Array([b_0, ..., b_{n-1}]) <-> TextDecoder('utf-8', { fatal: strict }).decode(bytes) | Switching to Decimal mode and pasting '[226, 130, 172, 49, 48, 48]' decodes the 3-byte Euro sign (E2 82 AC) followed by '100' into '€100' (6 bytes, 4 characters). |
Inspect network packet payloads, Rust/Go byte slices, or WebCrypto buffers right in your browser.
Pick 'Byte Array -> UTF-8 String' to decode bytes, or 'UTF-8 String -> Byte Array' to encode text.
Select whether your byte array is formatted in Hexadecimal (base 16), Decimal (base 10), or 8-bit Binary (base 2).
Click Convert Bytes / Text to view the decoded string, byte length, Unicode character count, and all three base representations.
See how ASCII and multi-byte UTF-8 byte arrays decode and validate.
Decoding the 13 hex bytes [0x48..0x21] (decimal [72, 101, 108, 108, 111, 44, 32, 85, 84, 70, 45, 56, 33]) outputs 'Hello, UTF-8!' (13 bytes, 13 Unicode code points).
Switching to Decimal mode and pasting '[226, 130, 172, 49, 48, 48]' decodes the 3-byte Euro sign (E2 82 AC) followed by '100' into '€100' (6 bytes, 4 characters).
Pasting '48 65 FF 6C' in Strict mode immediately reports an invalid UTF-8 byte 0xFF at byte index 2, whereas Permissive mode outputs 'Hel'.
Check both the byte count and the decoded character count when working with non-ASCII strings.
The primary result shows the decoded UTF-8 string (or encoded byte sequence). The breakdown cards show Total byte length, Decoded character (code point) count, Printable ASCII ratio, and simultaneous Hex, Decimal JSON array, and Binary representations.
Note unsigned vs. signed byte conventions across programming languages.
This converter expects unsigned 8-bit integers (0 to 255). If you are copying a signed Java byte[] array containing negative numbers (e.g., -30 instead of 226), add 256 to negative values before decoding.
Encode UTF-8 text or hex bytes as RFC 4648 Base32, or decode canonical Base32 into hex, text and a byte file.
Open tool
Group binary digits into eight-bit bytes and decode them as strict UTF-8.
Open tool
Validate pairs of hexadecimal digits and decode the bytes as strict UTF-8.
Open toolChoose another tool for your next calculation, conversion, or text task.

Compute the CRC-32/ISO-HDLC checksum of UTF-8 text.
Open toolBuild a standard five-field cron schedule.
Open tool
Encode text as eight-bit binary UTF-8 bytes.
Open tool
Encode text as lowercase hexadecimal UTF-8 bytes.
Open toolAnswers about using Byte Array to String Converter and understanding its results.
In Hex mode, you can paste spaced bytes ('48 65 6C'), comma-separated 0x literals ('0x48, 0x65'), or continuous hex ('48656c'). In Decimal mode, you can paste JSON/JavaScript arrays like '[72, 101, 108, 108, 111]' or space-separated integers 0 to 255.
When TextDecoder('utf-8', { fatal: true }) rejects a byte array, the converter scans the Uint8Array byte by byte using RFC 3629 UTF-8 state rules to report the exact 0-based index and hex value of the first invalid byte.
Yes. Switch Conversion direction to 'UTF-8 String -> Byte Array (Encode)' and the export box outputs spaced hex, a JSON decimal array [b0, b1, ...], and 8-bit binary side by side.
Every unsigned byte must be an integer between 0 and 255 (0x00 to 0xFF). If a signed byte (such as -16 from Java) or a value > 255 is entered, the validator flags the out-of-range token.
Choose another tool for your next calculation, conversion, or text task.