MessagePack-validator
Plak MessagePack als hex of base64 en kijk of het netjes parseert. Toont byteaantal, top-level type en bij een fout de parserfout letterlijk.
Invoer
Uitvoer
Wat is de MessagePack-validator?
Je integreert met een dienst die MessagePack uitstuurt en het wire-formaat blijft je verrassen — verkeerd byteaantal, gekke staartbytes, de parser sterft cryptisch zonder hint over welk veld is gebroken. Deze tool neemt een hex- of base64-dump van een MsgPack-payload, stuurt die door een echte decoder, en vertelt je wat er aan de andere kant daadwerkelijk uit komt.
We sturen je input door de decoder van @msgpack/msgpack. Als het parseert, geven we het byteaantal, het top-level type (map, array, string, int…) en de sleutel- of array-lengte, zodat je het kunt afzetten tegen het schema in je hoofd. Als het mislukt, tonen we de foutmelding van de parser letterlijk — die wijst meestal precies naar de offset die brak.
Hex en base64 worden automatisch gedetecteerd. Whitespace, komma's, 0x-prefixen en \xNN-escapes worden getolereerd, dus je kunt direct plakken vanuit een Wireshark-capture, een serverlog, of een Python-repr()-dump. Niets verlaat je browser — de decoder draait lokaal.
Hoe gebruik je de MessagePack-validator
Plakken maar. De validator draait bij elke toetsaanslag (300 ms debounce) dus je hoeft geen knop in te drukken.
Plak hex- of base64-MsgPack
Drop je gecodeerde payload in het linkerpaneel. Druk op Voorbeeld-MsgPack om een klein orderobject als hex te laden — handig als je gewoon wilt zien hoe een geldig resultaat eruitziet. De decoder volgt de MessagePack-spec, dus alles wat een conforme encoder produceerde maakt schoon de round-trip. Voorbeeld-hex (één enkele int 1):
01Dat is de wire-byte voor positieve fixint 1. Grotere payloads — maps, arrays, strings — beginnen met formaatbytes zoals 0x80–0x9f (fixmap/fixarray) of 0xa0–0xbf (fixstr).
Lees het validatierapport
Het rechterpaneel vult zich automatisch. Bij succes krijg je een klein rapport — gedetecteerd invoerformaat (hex of base64 volgens RFC 4648), gecodeerd byteaantal, top-level type, sleutel/array-aantal, plus een JSON-preview van de gedecodeerde waarde (afgekapt op 2 KB zodat het paneel leesbaar blijft).
Onderzoek mislukkingen
Bij een parse-fout toont het rechterpaneel ✗ Invalid MessagePack gevolgd door de fouttekst van de decoder. Veelvoorkomend: "Insufficient bytes" (je hex is afgekapt), "Unrecognized type byte" (je plakte per ongeluk JSON of tekst, of de input is corrupt) en "Extra bytes were found" (een lengte-prefix of framing-byte sloop ertussen). Behandel de onderliggende bytestream in je hoofd als een Uint8Array — de meeste fouten zijn framing- of lengtekwesties, geen encoding-bugs.
Wanneer je dit echt gebruikt
Cache-miss debuggen
Je Redis-key bevat een MessagePack-gecodeerde order (orderId: 'ORD-7421', items, customer) en de consumer gooit een fout bij het deserialiseren. Plak de hex uit redis-cli --no-raw GET, kijk of het wire-formaat überhaupt geldig is, en bevestig dat het top-level type overeenkomt met wat je decoder verwacht.
Wire-capture valideren
Je hebt een frame van het netwerk gevangen met Wireshark of tcpdump, de bytes geëxporteerd, en je wilt weten of de MsgPack daarbinnen welgevormd is voordat je het framing met de hand uittraceert. Plakken, even kijken naar type en byteaantal, door.
Producer doorlichten
Een eigen encoder geschreven in Go of Rust? Codeer een bekende fixture ({sku: 'SKU-101', qty: 2}), dump als hex, en plak het hier. Als wij het terug lezen als dezelfde map die jij schreef, is je encoder conform aan het MessagePack-formaat.
Pre-flight vóór een bug report
Een issue indienen tegen een upstream-library? Bevestig eerst dat de payload daadwerkelijk geldige MsgPack is — de helft van de "library bug"-meldingen is malformde input. 30 seconden plakken hier scheelt je een retour.
Veelgestelde vragen
Verlaat de payload mijn browser?
Nee. Decoderen gebeurt in JavaScript op deze pagina met de @msgpack/msgpack-decoder. Niets wordt geüpload, gelogd of naar een backend gestuurd — sluit het tabblad en de data is weg. Hetzelfde model als een desktop hex-viewer, alleen in je browser.
Accepteert het binaire bestandsuploads, of alleen hex/base64?
Alleen hex en base64. Browsers stellen bestand-bytes niet beschikbaar aan de pagina zonder een file picker, en de meeste copy-paste workflows produceren al hex (uit xxd, hexdump -C, debugger-tooltips) of base64 (uit REST-API-responses, logregels). Heb je een ruw .msgpack-bestand, draai dan eerst xxd -p file.msgpack of base64 file.msgpack.
Hoe onderscheidt het hex van base64?
Hex wordt eerst gedetecteerd: als de input (na verwijderen van whitespace, komma's, 0x-prefixen en \xNN-escapesequenties) volledig uit hex-tekens bestaat en even lang is, behandelen we het als hex. Anders geven we het door aan atob als base64. De regel "Detected input format" in het rapport vertelt welk pad genomen is — handig wanneer een dubbelzinnige string als deadbeef toevallig in beide coderingen geldig is.
Waarom zegt het soms "Extra bytes were found"?
MessagePack-streams horen exact één top-level waarde te zijn. Als je een lengte-geprefixt frame plakte (bv. een 4-byte big-endian lengte toegevoegd door een framing-transportprotocol) of twee aaneengeplakte payloads, leest de decoder de eerste waarde en klaagt over wat overblijft. Knip de framing weg of splits in losse berichten.
Kan het MessagePack-extensies (timestamp, custom types) decoderen?
De default @msgpack/msgpack-decoder behandelt het ingebouwde timestamp-extensietype (-1) standaard en toont het in de preview als JS-Date. Custom-extensietypes (0 t/m 127) decoderen naar een generieke {type, data}-vorm — de validator meldt de payload nog steeds als geldig, maar je hebt je eigen ExtensionCodec nodig om de inhoud te interpreteren.
Wat is het verschil met de MessagePack Viewer?
De Viewer is om door te bladeren — die toont een boomstructuur van elke sleutel en waarde. Deze validator beantwoordt de vraag "is het überhaupt geldig?" — snelle ja/nee plus byteaantal en top-level type. Zegt de validator dat het parseert en is het type goed, schakel dan naar de Viewer om de inhoud daadwerkelijk te lezen.
Andere MessagePack-tools
Eenmaal bevestigd dat de payload geldig is, brengen deze tools je verder: