Bytes-like Object Decode
Bring BYTESLIKE back to readable text — hex, base64, or plain words
- data
- STRING
ByteslikeDecode is the return trip. Where its sibling ByteslikeEncode turns text into the pack's BYTESLIKE datatype, this node takes a BYTESLIKE value - the output of a hash, a derived key, a decrypted blob, anything bytes-shaped - and renders it as a string you can actually read. Without it you're staring at opaque wires in your graph; with it, a digest becomes hex you can eyeball, compare, or paste into a puzzle answer box. It's the "make the invisible visible" node of the ARG Toolkit's modern crypto half.
The output format is entirely your choice via the encoding dropdown, and the right pick depends on what you're trying to do. UTF-8 decodes bytes into text - perfect when the payload is meant to be a message (like a decrypted plaintext). Hexadecimal and Base64 give you the canonical string forms of raw bytes - the right choice for hashes and keys, since those aren't valid UTF-8 and would error or garble if you tried to read them as text. Binary renders each byte as 8 bits for bit-level inspection, and Raw Bytes prints the Python repr() of the object, like b'\xde\xad', for debugging.
How it works
Mechanically it's a switch over five encodings, each producing a string from the input bytes: data.hex(), base64 encoding, a UTF-8 decode, an 8-bit-per-byte binary string, or repr(data). Two things matter in practice:
UTF-8decode can fail. If the bytes aren't valid UTF-8 - which is true of almost every hash, derived key, and ciphertext - the decode raises aUnicodeDecodeError. That's not a bug; it's the node telling you the data isn't text. Switch toHexadecimalorBase64and the same bytes render fine.- The input type is enforced. The node checks the incoming value is actually bytes/bytearray and raises
TypeErrorif you hand it something else - so wire it from a genuineBYTESLIKEsource (ByteslikeEncode, a keygen, a hash node), not a raw string.
The inputs that matter
data- theBYTESLIKEvalue to render.encoding-Hexadecimal,Base64,UTF-8,Binary, orRaw Bytes.
Output: a single STRING in your chosen representation.
Installing it
Part of the ComfyUI ARG Toolkit pack. Install via ComfyUI Manager (search "ComfyUI ARG Toolkit") or:
cd ComfyUI/custom_nodes
git clone https://github.com/AzelusLightvale/ComfyUI-ARG-Toolkit
Restart ComfyUI. Same pack-wide dependency install as every other node here - cryptography, secretpy, stegano, invisible-watermark, reedsolo, plus transitive torch and opencv-python. No models, no API keys.
Gotchas
The UTF-8 decode error is the one that looks scary and isn't: hashes and keys aren't text, full stop. If you decode them as UTF-8 and it explodes, flip to Hexadecimal and everything reads fine. And keep the Encode/Decode pairing in mind - in a typical graph you'll Encode a message to bytes, push it through crypto, then Decode the output as hex or base64 (or UTF-8 when the result is genuinely a message, like ChaCha20Poly1305 decryption output). This node is also how you read the digest from the hash nodes - there's no friendlier way to see what a BLAKE2 or ConcatKDF run actually produced.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| data | BYTESLIKE | — | |
| encoding | COMBO | UTF-8 | The type of data the bytes will be decoded to. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |