BYTETOOLS

MessagePack Decoder

Decode MessagePack bytes from hex, Base64 or a dropped file into JSON, with a byte-offset breakdown showing every format byte the encoder used.

Or drop a .msgpack file
Drop a MessagePack fileRead locally, never uploaded (max 4 MB)
66
Bytes decoded
13
Elements

JSON

{
  "name": "ByteTools",
  "compact": true,
  "schema": 0,
  "tags": [
    "msgpack",
    "binary"
  ],
  "pi": 3.141592653589793
}

Byte-offset breakdown

offset  size format — value
    0  +66   fixmap — 5 pairs
    1  +5      fixstr — "name"
    6  +10     fixstr — "ByteTools"
   16  +8      fixstr — "compact"
   24  +1      true — true
   25  +7      fixstr — "schema"
   32  +1      positive fixint — 0
   33  +5      fixstr — "tags"
   38  +16     fixarray — 2 elements
   39  +8        fixstr — "msgpack"
   47  +7        fixstr — "binary"
   54  +3      fixstr — "pi"
   57  +9      float 64 — 3.141592653589793

What is the MessagePack Decoder?

The ByteTools MessagePack Decoder reads MsgPack binary data and turns it back into JSON you can scan.

  • Complete MessagePack format-byte table, fixints to ext 32
  • 64-bit integers kept exact instead of losing precision
  • Timestamp extension type -1 decoded to an ISO 8601 date
  • Per-element byte offsets, sizes and format names
  • Hex, Base64 or a dropped file as input
  • 100% client-side — data never leaves your browser

How to use the MessagePack Decoder

  1. 1

    Choose hex or Base64 as your input format, or drop a .msgpack file to load its bytes as hex automatically.

  2. 2

    Paste the MessagePack data into the text box; whitespace and 0x prefixes are ignored.

  3. 3

    Read the JSON output, then copy it or download it as a .json file.

  4. 4

    Open the byte-offset breakdown to see the format byte, size and value of every element in the order it appears.

About the MessagePack Decoder

The ByteTools MessagePack Decoder reads MsgPack binary data and turns it back into JSON you can scan. It implements the full format-byte table from the MessagePack specification: positive and negative fixints, fixmap, fixarray and fixstr, the 8, 16 and 32-bit str, bin and ext families, every uint and int width up to 64 bits, float32 and float64, and nil, true and false.

Alongside the JSON it prints a byte-offset breakdown, listing each element with the exact format byte the encoder chose, how many bytes it occupied and a preview of its value. That makes it easy to see why a payload is larger than you expected, or to confirm a library is emitting str rather than bin for your text.

All decoding is done 100% locally in your browser. Nothing is uploaded, so you can safely inspect cached Redis values, API payloads and log records that contain real customer data. The whole tool is plain JavaScript with no network calls at all, which also means it keeps working once the page has loaded even if you go offline.

Frequently asked questions

What is MessagePack and why use it over JSON?

MessagePack is a binary serialisation format that encodes the same data model as JSON in far fewer bytes. Small integers take one byte, short strings carry a single-byte header, and there is a real binary type. It is popular for caching, Redis values and high-volume RPC where JSON's size becomes a cost.

What is the difference between str and bin in MessagePack?

str holds UTF-8 text and bin holds arbitrary bytes. The distinction was added in 2013 because the original format had no way to carry binary data safely. If a library writes your text as bin, older readers may hand you raw bytes instead of a string, which the byte-offset breakdown makes easy to spot.

How are 64-bit integers handled?

JavaScript numbers cannot hold every 64-bit integer exactly, so values outside the safe integer range are decoded with BigInt and rendered as strings in the JSON output. That keeps the exact value visible instead of silently rounding it.

What are ext types in MessagePack?

Extension types let an application define its own binary payloads with a type number from -128 to 127. Negative numbers are reserved by the specification — type -1 is the standard timestamp, which this tool decodes into a readable date. Any other ext type is shown as its type number plus raw hex.

Is my MessagePack data uploaded?

No. Decoding runs entirely in your browser and the tool makes no network requests, so cached values and API payloads never leave your machine.

Related tools