MessagePack zu JSON
MessagePack als hex oder base64 in lesbares JSON dekodieren. Bytes einfügen, Objekt rauskriegen — läuft im Browser, nichts wird hochgeladen.
Eingabe
Ausgabe
Was ist MessagePack zu JSON?
Dein gRPC-Sidecar loggt den Request-Body als langen Hex-String und du möchtest tatsächlich sehen, was drin ist. Oder Redis hat einen Wert zurückgegeben, den der vorgelagerte Service als msgpack abgelegt hat, und im Terminal steht \x82\xa7orderId\xa8ORD-7421. MessagePack ist ein kompaktes Binärformat — top auf der Leitung, in einer Logzeile unlesbar. Diese Seite nimmt den hex- oder base64-Dump und gibt dir das JSON zurück, das dahintersteckt.
Die Dekodierung folgt der offiziellen MessagePack-Wireformat-Spec über die JavaScript-Library @msgpack/msgpack. Maps werden zu Objekten, Arrays bleiben Arrays, Ints und Floats werden direkt als JSON-Zahlen dekodiert, und das Ergebnis wird gemäß RFC 8259 hübsch ausgegeben. Hex mit 0x-Präfix, \x-Escapes, Leerzeichen oder Kommas werden alle ohne Probleme geparst — und falls deine Eingabe base64 (gemäß RFC 4648) ist, erkennen wir das automatisch.
Kein Upload, kein Backend, kein Logging. Die Dekodierung läuft im Browser als simples Uint8Array — Tab zu, Bytes weg.
So nutzt du MessagePack zu JSON
Einfügen, lesen, kopieren. Es gibt keinen Convert-Button — das rechte Panel aktualisiert sich beim Tippen, mit 300 ms Debounce, damit es nicht bei jedem Tastendruck neu rechnet.
Hex oder base64 einfügen
Schmeiß die MessagePack-Bytes in den linken Editor. Alles geht — pures hex (82a7...), hex mit Leerzeichen (82 a7 6f), Python-Byte-Literals mit \x-Escapes oder ein base64-Blob. Beispiel drücken lädt einen Order-Tracking-Payload, der zu einem echten Objekt dekodiert.
82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000Das Snippet ist Teil eines Order-Payloads — orderId, total, items, customer. Nach dem Dekodieren bekommst du die ganze Struktur als JSON zurück.
Lies das JSON rechts
Das rechte Panel dekodiert bei jeder Änderung neu. Sind die Bytes valides MessagePack, siehst du das Objekt. Sind sie abgeschnitten, mit Müll aufgefüllt oder eigentlich ein anderes Format (CBOR, BSON), zeigt das Panel die Parser-Fehlermeldung an — meist genug, um zu erkennen, wo die Eingabe schiefgeht.
Kopiere, was du brauchst
Mit dem Kopieren-Button auf der Ausgabeseite holst du dir das JSON. Pack es in eine Unit-Test-Fixture, kleb es in ein Bug-Ticket oder schick es durch unseren JSON Formatter, wenn du eine andere Formatierung willst. Für die Gegenrichtung (Objekt → msgpack) gibt es JSON zu MessagePack.
Wann das wirklich praktisch ist
Den Body eines gRPC- oder Sidecar-Logs lesen
Ein Service-Mesh-Sidecar wirft Request-Bodies als hex raus. Der Body ist msgpack, weil der Upstream-Service so serialisiert. Hex einfügen, Objekt sehen, herausfinden, dass der Call orderId: "ORD-7421" und total: 89.50 dabei hatte — statt zu raten.
Einen Redis-Wert inspizieren
Du hast ein Objekt mit msgpack-Codec in Redis abgelegt, um Platz zu sparen. Jetzt willst du wissen, was in session:42 drinsteckt, ohne ein Skript zu schreiben. GET ausführen, den Wert kopieren (die meisten Clients zeigen ihn als hex oder base64), hier einfügen.
Einen Cache-Eintrag dekodieren
Caches, die kleine Payloads anzielen — MessagePack, FlatBuffers, manchmal rohes protobuf — sind heute überall. Wenn das gecachte Blob msgpack ist und du es mit dem Live-JSON vergleichen willst, ist das hier der schnellste Weg zu einem fairen Vergleich.
Prüfen, was ein Client wirklich schickt
Du hast einen Mobile-Client geschrieben, der den Request-Body mit msgpack codiert, um Bandbreite zu sparen. Du stößt auf eine Regression. Greif die echten Bytes ab (Charles, mitmproxy, Network-Tab), füg sie ein und prüf, ob Feldnamen und Werte zum Schema passen, das dein Server erwartet. Kundenname Ava Chen, Items SKU-101 × 2 — passt oder passt nicht.
Häufige Fragen
Werden meine Bytes irgendwo hochgeladen?
Nein. Die Dekodierung ist reines JavaScript im Browser — die @msgpack/msgpack-Library liest deine Eingabe als Uint8Array, läuft das Wireformat ab und rendert das Ergebnisobjekt als JSON. Kein Fetch, keine Analytics auf der Eingabe, nichts verlässt den Tab. Behandle es wie ein lokales CLI-Tool.
Hex oder base64 — macht es einen Unterschied, was ich einfüge?
Beides geht. Das Tool versucht zuerst hex (weil hex mit 0x- oder \x-Präfixen, Leerzeichen oder Kommas die häufigste Log-Form ist) und fällt auf base64 zurück, wenn die Eingabe kein gültiges hex ist. Wenn du ein Python-Byte-Literal b'\x82\xa7order' hast, wird das auch dekodiert — das umschließende b'...' wird entfernt und die Escapes werden expandiert.
Warum sehen Timestamps in der Ausgabe komisch aus?
MessagePack hat einen eingebauten Timestamp-Extension-Type, den die Library zu einem JS-Date dekodiert. Beim Stringify zu JSON wird daraus ein ISO-8601-String. Wenn du einen String wie "2026-05-05T12:34:56.000Z" in der Ausgabe siehst, ist das ein echter Timestamp, den der Encoder eingebettet hat — kein Bug.
Was, wenn die Eingabe nur teilweise gültig ist?
Der Decoder liest das Wireformat byteweise. Wenn ein Längenpräfix sagt "als nächstes kommt ein 16-Byte-String" und nur noch 8 Bytes übrig sind, wirft er einen Parsing-Fehler. Die Fehlermeldung im rechten Panel sagt dir meist, an welchem Type-Token es gescheitert ist und ungefähr wo — normalerweise reicht das, um eine abgeschnittene Eingabe oder ein verirrtes Byte zu finden.
Kann es Binärblobs (die bin-Familie) verarbeiten?
Ja. bin 8/bin 16/bin 32-Werte kommen als Uint8Array-Instanzen zurück. JSON hat keinen nativen Bytes-Typ, also werden sie beim Stringify als {"0":1,"1":2,...} gerendert. Wenn du speziell base64 für die bin-Felder brauchst, dekodiere hier zuerst und transformiere dann mit unserem Tool JSON zu Base64.
Wie schlägt sich das gegen protobuf oder CBOR?
MessagePack ist schemalos (die Keys leben in den Bytes), CBOR ist ähnlich, hat aber mehr Typen und ein anderes Encoding, und protobuf braucht überhaupt erst ein .proto-Schema, um zu dekodieren. Wenn deine Bytes protobuf sind, scheitert dieses Tool — probier stattdessen unsere Seite Protobuf zu JSON. Bei CBOR ist das Wireformat ähnlich, aber nicht gleich, du brauchst also einen CBOR-spezifischen Decoder.
Weitere MessagePack-Tools
MessagePack-Tools, die gut zu diesem hier passen — für die Gegenrichtung, zur Validierung oder einfach um die Bytes anzusehen: