Plak hier je MessagePack hex- of base64-string. We decoderen tijdens het typen.Plak msgpack hex/base64

Wat de MessagePack Viewer doet

Heb je ooit naar een hex-blob in een Cloudflare Worker-log gestaard en je afgevraagd wat er nou eigenlijk in zit, dan is dit de pagina daarvoor. MessagePack is een binair serialisatieformaat dat zoiets oplevert als 83a76f72646572496478a84f52442d37343231... — compact op de lijn, met het oog niet te lezen. Plak de hex (of base64 — we detecteren het zelf) in het linkerpaneel en het rechterpaneel laat de gedecodeerde JSON-tree zien.

Decoderen gebeurt lokaal met de officiële library @msgpack/msgpack, dezelfde die de meeste Node- en browser-apps gebruiken. Het formaat volgt de openbare MessagePack wire-format-spec, dus elke payload van msgpack-python, msgpack-c, msgpack-java of een andere conforme implementatie werkt hier. Er is geen upload-stap — de bytes verlaten je browser nooit, wat ertoe doet als de blob iets als customer: 'Ava Chen' of een interne subscriberId: 'SUB-1001' bevat.

Decoderen heeft een debounce van 300ms, dus je kunt plakken, bewerken en opnieuw plakken zonder ergens op te klikken. Geen Convert-knop, geen spinner — typen en lezen.

Hoe je een MessagePack-payload bekijkt

Drie stappen. Werkt voor hex-strings uit een log, base64-velden uit een Kafka-bericht, of ruwe bytes die je uit een debugger hebt geplakt.

1

Plak hex of base64 in het linkerpaneel

Drop de gecodeerde MessagePack in de linker-editor. We detecteren het zelf: parst het netjes als hex (nadat we whitespace, komma's, 0x-prefixes en \x-escapes hebben gestript), behandelen we het als hex; anders proberen we base64 (RFC 4648). Allebei goed. Voorbeeld van een hex-gecodeerde order:

83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6e

Die blob decodeert tot een order met twee regels (SKU-101 x2 en SKU-244 x1) voor klant Ava Chen.

2

Lees de gedecodeerde JSON aan de rechterkant

Het rechterpaneel is alleen-lezen en toont de gedecodeerde payload als nette JSON — dezelfde inspringing als JSON.stringify(obj, null, 2). Maps worden objects, arrays worden arrays, ints/floats worden getallen, en binaire blobs komen door als Uint8Array met zichtbare bytelengte. Timestamps uit het timestamp-extensiotype komen er als ISO-strings uit.

3

Itereer zonder te klikken

Bewerk de input en de JSON ververst na een pauze van 300ms. Zijn de bytes geen geldig MessagePack, dan vertellen we wat er stuk was (afgekapte buffer, onverwachte typebyte, enzovoorts) in plaats van te doen alsof er geparsed is. Gebruik de knop Voorbeeld msgpack om een bekende Order-payload te laden voor vergelijking.

Wanneer je dit echt gaat gebruiken

Een MessagePack-bericht in een log inspecteren

Je service schrijft msgpack-gecodeerde payloads als hex naar een gestructureerd log (vaak korter dan base64). Als er in productie iets stukgaat, kopieer je de hex uit de logregel, plak je hier, en zie je meteen wat de producer écht heeft gestuurd — orderId ORD-7421, de juiste items, het verkeerde customer-veld, wat het ook is.

Een Redis- of Kafka-payload debuggen

Veel backends gebruiken MessagePack in plaats van JSON op hot paths omdat het 30 tot 50 procent kleiner en sneller te parsen is. Trek je een waarde uit Redis of gluur je naar een Kafka-topic met kcat -e, dan komen de bytes als base64 binnen. Plak ze hier om te bevestigen dat consumer en producer het schema delen.

Cross-language round-trips verifiëren

Je codeert in Python met msgpack.packb(...) en decodeert in Go met msgpack.Unmarshal(...). Als de Go-kant een verkeerd type ziet, dump dan de bytes uit Python als hex en haal ze door deze viewer — dat vertelt je of de bug in de encoder of de decoder zit voordat je er een middag over staat te discussiëren.

MessagePack uit een opgeslagen bestand lezen

Je hebt een <code>.msgpack</code>-bestand uit een Jupyter notebook-export, een gamesave of een analytics-dump. Run <code>xxd -p</code> erop voor de hex, plak, lees. Sneller dan de library in een verse Python REPL optuigen alleen om te zien hoe één record eruit ziet.

Veelgestelde vragen

Verlaten mijn data de browser?

Nee. De decodering draait volledig in dit tabblad via de @msgpack/msgpack-library die met de pagina meekomt. Geen fetch, geen upload, geen telemetrie op de bytes. Sluit het tabblad en de data is weg. Dat gezegd — behandel de URL-balk als publieke ruimte, zet daar geen payload in, en leeg je klembord als er geheimen op stonden.

Mag ik base64 plakken in plaats van hex?

Ja. De viewer detecteert het zelf: parst de input als hex nadat we whitespace, komma's, 0x-prefixes en Python-style \x-escapes hebben weggehaald, dan behandelen we hem als hex; anders proberen we standaard base64. Beide werken voor dezelfde payload. De meeste logs gebruiken hex voor korte berichten en base64 voor grotere.

Wat gebeurt er met binaire velden, timestamps en extension-types?

Binair (de bin-familie) wordt gedecodeerd naar Uint8Array en in de JSON-tree afgedrukt als { "0": 134, "1": 12, ... } (standaard JSON heeft geen native byte-type — zie de Uint8Array-docs op MDN). Timestamps uit het timestamp-extensiotype worden gedecodeerd naar native Date-objecten, die als ISO 8601-strings worden geserialiseerd. Andere extension-types komen door als { type, data }-tuples — je ziet de typecode en de ruwe bytes.

Waarom verschilt de gedecodeerde output van wat mijn server stuurde?

Twee gebruikelijke verdachten. Een: je input is afgekapt — log-truncatie hakt vaak de laatste paar bytes eraf en msgpack leunt op velden met lengteprefix, dus een ontbrekend staartje produceert een verwarrende error of een gedeeltelijke output. Twee: de producer gebruikte een custom extension-type dat de ontvanger niet kent. Vergelijk de bytes met de officiële spec als de structuur onmogelijk lijkt.

Kan het enorme payloads decoderen?

Een paar megabyte hex plakt prima in moderne browsers. Daarboven begint de Ace-editor aan de invoerkant traag aan te voelen — vanaf dat punt kun je het bestand beter direct met de library in een Node-script lezen. De decoder is niet de bottleneck; de editor wel.

Hoe maak ik hex zoals in het voorbeeld?

In Python: import msgpack; msgpack.packb(obj).hex(). In JS: Array.from(encode(obj)).map(b => b.toString(16).padStart(2, '0')).join(''). In Go: fmt.Sprintf("%x", msgpack.Marshal(obj)). De meeste talen hebben een one-liner; de resulterende hex plak je hier direct.

Andere MessagePack-tools

Bekijken is één kant — deze regelen de volledige round-trip en aangrenzende formaten: