What input formats does the decoder accept?
Either base64 (standard or URL-safe with whitespace tolerated) or hex (lowercase, uppercase, with or without spaces, optionally prefixed with 0x). Toggle the format above the input panel. The bytes you supply must be a valid MessagePack-encoded value — typically what comes out of a msgpack.encode call in any language.
How are uint64 / int64 values shown?
JavaScript numbers cannot represent integers above 2^53 − 1 without precision loss. When the decoded value is in safe range it is shown as a normal JSON number. When it is outside, it is shown as a string tagged "(uint64) 9223372036854775807" or "(int64) -9000000000000000000" so you can see the exact value without silent rounding.
How are bin types (raw bytes) shown?
MessagePack distinguishes binary blobs (bin8/bin16/bin32) from UTF-8 strings. Because JSON has no native byte type, this decoder represents each binary value as an object {"__bin__": "<base64>"} so the bytes survive a JSON.stringify round-trip without corruption.
What does "Truncated MessagePack" mean?
The decoder reached the end of the byte buffer mid-value — typically because the input was clipped during copy/paste, or the wrong base64/hex toggle was used. Re-copy the full payload and confirm the format. The error message includes the byte offset where parsing failed.
What does "Unsupported MessagePack tag" mean?
You hit one of the formats this decoder does not implement — typically Ext types (0xd4–0xd8, 0xc7–0xc9) or Timestamp extensions. The JSON-equivalent subset (nil, bool, ints, floats, strings, arrays, maps, bin) is fully supported. If you need Ext, decode with @msgpack/msgpack in Node and post the JSON here.
Does the decoder handle multi-message streams?
It returns the first complete value and silently ignores trailing bytes. To split a stream into individual messages, use a streaming decoder like @msgpack/msgpack DecodeAsync or the Python msgpack.Unpacker iterator.
Are negative integers handled correctly?
Yes — both the negative fixint range (-32 to -1, single byte) and the explicit int8/int16/int32/int64 tags decode with proper sign extension. -1 round-trips as -1, not 4294967295.
Is the data uploaded?
No. Decoding runs entirely in JavaScript inside this tab. MessagePack payloads containing API keys, customer records, or proprietary schemas never reach our servers. Open DevTools → Network and click Decode to confirm zero outbound requests.