Boneyard Tools

MessagePack Decoder to JSON

Drop in a MessagePack file to decode it into readable, pretty-printed JSON. The decoder handles the full range of types: fixints, 8 to 64-bit signed and unsigned integers, 32 and 64-bit floats, fixstr and str8/16/32, arrays, maps, and binary blobs. Binary data is shown as a hex marker and very large 64-bit integers are kept exact as strings. The file is read entirely in your browser and never uploaded.

How to decode a MessagePack file

  1. Drag a .msgpack or .mp file onto the box, or click to browse for one.
  2. Read the decoded value rendered as pretty-printed JSON.
  3. Click Copy to grab the JSON, and check the byte count to confirm the whole file was consumed.

Examples

A small array

Bytes 93 01 02 03 (a 3-element fixarray)
[
  1,
  2,
  3
]

A single key map

Bytes 81 A1 61 01 (fixmap mapping a to 1)
{
  "a": 1
}

Frequently asked questions

Is my MessagePack file uploaded anywhere?

No. The file is read and decoded entirely in your browser using JavaScript. Nothing is sent to a server, so payloads from APIs, caches, or game saves stay on your device.

How does the in-browser decoding work?

The raw bytes are parsed against the MessagePack format byte by byte. Each value's type tag is read, multibyte numbers are decoded big-endian, and arrays and maps are built recursively into a JavaScript value that is then printed as JSON.

How are binary blobs shown?

MessagePack bin values have no direct JSON form, so each one is rendered as an object marker like {"$bin": "deadbeef"} where the value is the lowercase hex of the raw bytes. This keeps the output valid JSON while preserving every byte.

What happens with very large 64-bit integers?

Integers that do not fit safely in a JavaScript number are kept exact and rendered as decimal strings in the JSON, so a uint64 like 18446744073709551615 is not rounded off.

Which MessagePack types are supported?

Positive and negative fixint, uint8/16/32/64, int8/16/32/64, float32 and float64, nil, true and false, fixstr and str8/16/32, fixarray and array16/32, fixmap and map16/32, and bin8/16/32.

What if the file is truncated or not valid MessagePack?

If the bytes run out mid-value or contain an unknown format byte, the decoder stops and reports the problem with the byte offset, rather than guessing and showing wrong data.

Related tools