MessagePack-Validator
MessagePack als Hex oder Base64 einfügen und prüfen, ob es sauber parst. Zeigt Bytezahl, Top-Level-Typ und im Fehlerfall die Parser-Meldung wortwörtlich.
Eingabe
Ausgabe
Was ist der MessagePack-Validator?
Du integrierst einen Dienst, der MessagePack liefert, und das Wire-Format überrascht dich immer wieder — falsche Bytezahl, komische Trailing-Bytes, der Parser stirbt kryptisch ohne Hinweis darauf, welches Feld geplatzt ist. Dieses Tool nimmt einen Hex- oder Base64-Dump eines MsgPack-Payloads, schickt ihn durch einen echten Decoder, und sagt dir, was am anderen Ende tatsächlich rauskommt.
Wir leiten deine Eingabe durch den Decoder von @msgpack/msgpack. Wenn es parst, zeigen wir Bytezahl, Top-Level-Typ (map, array, string, int…) und Schlüssel- bzw. Array-Länge, damit du gegen das Schema in deinem Kopf gegenchecken kannst. Schlägt es fehl, geben wir die Fehlermeldung des Parsers wortwörtlich aus — sie zeigt meistens direkt auf den Offset, der gebrochen ist.
Hex und Base64 werden automatisch erkannt. Whitespace, Kommas, 0x-Präfixe und \xNN-Escapes werden toleriert, du kannst also direkt aus einem Wireshark-Capture, einem Server-Log oder einem Python-repr()-Dump einfügen. Nichts verlässt deinen Browser — der Decoder läuft lokal.
So benutzt du den MessagePack-Validator
Einfach reinkopieren. Der Validator läuft bei jedem Tastenanschlag (mit 300 ms Debounce), du musst keinen Button drücken.
Hex- oder Base64-MsgPack einfügen
Wirf deinen kodierten Payload ins linke Panel. Drück Beispiel-MsgPack, um ein kleines Bestellobjekt als Hex zu laden — praktisch, wenn du nur sehen willst, wie ein gültiges Ergebnis aussieht. Der Decoder folgt der MessagePack-Spec, also läuft alles, was ein konformer Encoder produziert hat, sauber durch den Round-Trip. Beispiel-Hex (ein einzelnes int 1):
01Das ist das Wire-Byte für das positive fixint 1. Größere Payloads — Maps, Arrays, Strings — beginnen mit Format-Bytes wie 0x80–0x9f (fixmap/fixarray) oder 0xa0–0xbf (fixstr).
Lies den Validierungsbericht
Das rechte Panel füllt sich automatisch. Bei Erfolg bekommst du einen kurzen Bericht — erkanntes Eingabeformat (Hex oder Base64 nach RFC 4648), kodierte Bytezahl, Top-Level-Typ, Schlüssel-/Array-Anzahl, plus eine JSON-Vorschau des dekodierten Werts (bei 2 KB abgeschnitten, damit das Panel lesbar bleibt).
Fehler untersuchen
Bei einem Parse-Fehler zeigt das rechte Panel ✗ Invalid MessagePack gefolgt vom Fehler-String des Decoders. Häufige Kandidaten: "Insufficient bytes" (dein Hex wurde abgeschnitten), "Unrecognized type byte" (du hast versehentlich JSON oder Text eingefügt, oder die Eingabe ist beschädigt) und "Extra bytes were found" (ein Längen-Präfix oder Framing-Byte hat sich eingeschlichen). Stell dir den darunterliegenden Bytestrom als Uint8Array vor — die meisten Fehler sind Framing- oder Längenprobleme, keine Encoding-Bugs.
Wann du das wirklich nutzt
Cache-Miss debuggen
Dein Redis-Key hält eine MessagePack-kodierte Bestellung (orderId: 'ORD-7421', items, customer) und der Consumer wirft beim Deserialisieren. Hex aus redis-cli --no-raw GET einfügen, prüfen, ob das Wire-Format überhaupt gültig ist, und bestätigen, dass der Top-Level-Typ zu dem passt, was dein Decoder erwartet.
Wire-Capture validieren
Du hast einen Frame mit Wireshark oder tcpdump aus dem Netz gefangen, die Bytes exportiert, und willst wissen, ob das MsgPack drin wohlgeformt ist, bevor du das Framing per Hand nachverfolgst. Einfügen, kurz auf Typ und Bytezahl schauen, weiter geht's.
Producer auf Plausibilität prüfen
Eigenen Encoder in Go oder Rust geschrieben? Bekannte Fixture ({sku: 'SKU-101', qty: 2}) kodieren, als Hex dumpen und hier einfügen. Wenn wir es als dieselbe Map zurücklesen, die du geschrieben hast, ist dein Encoder konform zum MessagePack-Format.
Pre-Flight vor einem Bug-Report
Issue gegen eine Upstream-Library aufmachen? Erst bestätigen, dass der Payload tatsächlich gültiges MsgPack ist — die Hälfte der "Library-Bug"-Reports ist falsch geformter Input. 30 Sekunden Einfügen hier sparen ein Hin und Her.
Häufige Fragen
Verlässt der Payload meinen Browser?
Nein. Die Dekodierung läuft in JavaScript auf dieser Seite mit dem @msgpack/msgpack-Decoder. Nichts wird hochgeladen, geloggt oder an ein Backend geschickt — Tab schließen und die Daten sind weg. Gleiches Modell wie ein Desktop-Hex-Viewer, nur im Browser.
Akzeptiert es Binär-Datei-Uploads oder nur Hex/Base64?
Nur Hex und Base64. Browser legen Datei-Bytes ohne Datei-Picker nicht offen, und die meisten Copy-Paste-Workflows produzieren ohnehin schon Hex (aus xxd, hexdump -C, Debugger-Tooltips) oder Base64 (aus REST-API-Antworten, Log-Zeilen). Wenn du eine rohe .msgpack-Datei hast, lass vorher xxd -p file.msgpack oder base64 file.msgpack drüberlaufen.
Wie unterscheidet es Hex von Base64?
Hex wird zuerst erkannt: Wenn die Eingabe (nach Entfernen von Whitespace, Kommas, 0x-Präfixen und \xNN-Escapes) komplett aus Hex-Zeichen besteht und gerade lang ist, behandeln wir sie als Hex. Sonst geht sie als Base64 an atob. Die Zeile "Detected input format" im Bericht sagt dir, welcher Pfad genommen wurde — nützlich, wenn ein mehrdeutiger String wie deadbeef in beiden Kodierungen gültig ist.
Warum kommt manchmal "Extra bytes were found"?
MessagePack-Streams sollten genau einen Top-Level-Wert enthalten. Wenn du einen längen-präfixierten Frame eingefügt hast (z. B. eine 4-Byte-Big-Endian-Länge, die ein Framing-Transportprotokoll davorschiebt) oder zwei aneinandergehängte Payloads, liest der Decoder den ersten Wert und mosert über den Rest. Framing abschneiden oder in einzelne Nachrichten aufteilen.
Kann er MessagePack-Extensions (Timestamp, Custom-Typen) dekodieren?
Der Default-@msgpack/msgpack-Decoder kann den eingebauten Timestamp-Extension-Typ (-1) ab Werk und zeigt ihn in der Vorschau als JS-Date. Custom-Extension-Typen (0 bis 127) werden zu einer generischen {type, data}-Form dekodiert — der Validator meldet den Payload trotzdem als gültig, aber du brauchst deinen eigenen ExtensionCodec, um den Inhalt zu interpretieren.
Was ist der Unterschied zum MessagePack Viewer?
Der Viewer ist zum Stöbern — er zeigt eine Baumstruktur jedes Schlüssels und Werts. Dieser Validator beantwortet die Frage "ist es überhaupt gültig?" — schnelles Ja/Nein plus Bytezahl und Top-Level-Typ. Wenn der Validator sagt, es parst, und der Typ stimmt, wechsle zum Viewer, um den Inhalt tatsächlich zu lesen.
Weitere MessagePack-Tools
Wenn du bestätigt hast, dass der Payload gültig ist, übernehmen diese Tools den Rest: