MessagePack Viewer
Klistra in en MessagePack-blob som hex eller base64 och läs den som JSON. Vi känner igen kodningen själva, avkodar i din webbläsare, ingen uppladdning.
Vad MessagePack Viewer gör
Om du någonsin stirrat på en hex-blob i en Cloudflare Worker-logg och undrat vad som faktiskt finns där inne, är det här sidan för det. MessagePack är ett binärt serialiseringsformat som producerar nåt i stil med 83a76f72646572496478a84f52442d37343231... — kompakt på linjen, helt oläsligt med ögat. Klistra in hex:en (eller base64 — vi känner igen automatiskt) i vänsterpanelen så visar högerpanelen det avkodade JSON-trädet.
Avkodningen sker lokalt med det officiella biblioteket @msgpack/msgpack, samma som de flesta Node- och webbläsarappar använder. Formatet följer den publika specen för MessagePack-wireformatet, så vilken payload som helst som producerats av msgpack-python, msgpack-c, msgpack-java eller någon annan spec-trogen implementation funkar här. Det finns inget uppladdningssteg — bytes lämnar aldrig din webbläsare, vilket spelar roll när bloben bär nåt som customer: 'Ava Chen' eller ett internt subscriberId: 'SUB-1001'.
Avkodningen är debouncad till 300ms, så du kan klistra in, ändra och klistra in igen utan att klicka på nåt. Ingen Convert-knapp, ingen spinner — du skriver, du läser.
Så tittar du på en MessagePack-payload
Tre steg. Funkar för hex-strängar kopierade ur en logg, base64-fält dragna ur ett Kafka-meddelande, eller råa bytes klistrade från en debugger.
Klistra in hex eller base64 i vänsterpanelen
Släpp den kodade MessagePacken i vänsterredigeraren. Vi känner igen automatiskt: parsar det rent som hex (efter att vi tagit bort whitespace, kommatecken, 0x-prefix och \x-escape) behandlar vi det som hex; annars provar vi base64 (RFC 4648). Båda funkar. Exempel på en hex-kodad order:
83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6eDen bloben avkodas till en order med två rader (SKU-101 x2 och SKU-244 x1) för kunden Ava Chen.
Läs den avkodade JSON till höger
Högerpanelen är skrivskyddad och visar den avkodade payloaden som vackert formaterad JSON — samma indrag som JSON.stringify(obj, null, 2). Maps blir objekt, arrays blir arrays, int/float blir nummer, och binära blobs kommer in som Uint8Array med synlig bytelängd. Tidsstämplar från timestamp-extension-typen renderas som ISO-strängar.
Iterera utan att klicka
Ändra inputen och JSON uppdateras efter en paus på 300ms. Är bytena inte giltig MessagePack berättar vi vad som gick sönder (avkapad buffert, oväntad typbyte, etc.) istället för att låtsas att det parsade. Använd knappen Exempel-msgpack för att läsa in en känd Order-payload att jämföra mot.
När du faktiskt kommer använda det här
Inspektera ett MessagePack-meddelande i en logg
Din tjänst skriver msgpack-kodade payloads till en strukturerad logg som hex (i många fall kortare än base64). När nåt går sönder i produktion kopierar du hex:en ur loggraden, klistrar in här, och ser direkt vad producenten faktiskt skickade — orderId ORD-7421, rätt items, fel customer-fält, vad det än är.
Felsöka en Redis- eller Kafka-payload
Många backends använder MessagePack istället för JSON i hot paths för att det är 30 till 50 procent mindre och snabbare att parsa. När du drar ut ett värde ur Redis eller tittar på ett Kafka-topic med kcat -e kommer bytena ut som base64. Klistra in dem här för att bekräfta att producent och konsument är överens om schemat.
Verifiera round-trips mellan språk
Du kodar i Python med msgpack.packb(...) och avkodar i Go med msgpack.Unmarshal(...). När Go-sidan ser fel typ, dumpa bytes från Python som hex och kör dem genom den här viewern — det säger om buggen sitter i kodaren eller avkodaren innan du brännt en eftermiddag på att tjafsa.
Läs MessagePack från en sparad fil
Du har en <code>.msgpack</code>-fil från en Jupyter notebook-export, ett spelsave eller en analytics-dump. Kör <code>xxd -p</code> på den för att få hex, klistra in, läs. Snabbare än att rigga upp biblioteket i en ny Python REPL bara för att se hur en post ser ut.
Vanliga frågor
Lämnar mina data webbläsaren?
Nej. Avkodningen körs helt i den här fliken med @msgpack/msgpack-biblioteket som följer med sidan. Ingen fetch, ingen uppladdning, ingen telemetri på bytena. Stäng fliken så är datan borta. Sagt det — behandla URL-fältet som offentligt utrymme, lägg inte en payload där, och rensa urklipp om det fanns hemligheter.
Kan jag klistra in base64 istället för hex?
Ja. Viewern känner igen automatiskt: parsar inputen som hex efter att vi tagit bort whitespace, kommatecken, 0x-prefix och Python-stil \x-escapes, behandlar vi den som hex; annars provar vi standard-base64. Båda funkar för samma payload. De flesta loggar använder hex för korta meddelanden och base64 för större.
Vad händer med binärfält, tidsstämplar och extension-typer?
Binärt (bin-familjen) avkodas till Uint8Array och skrivs ut som { "0": 134, "1": 12, ... } i JSON-trädet (eftersom standard-JSON inte har nån inbyggd byte-typ — se Uint8Array-dokumentationen på MDN). Tidsstämplar från timestamp-extension-typen avkodas till inbyggda Date-objekt, som serialiseras som ISO 8601-strängar. Andra extension-typer kommer in som { type, data }-tupler — du ser typkoden och de råa bytena.
Varför skiljer sig den avkodade outputen från det min server skickade?
Två vanliga misstänkta. Ett: din input är avkapad — loggtruncering kapar ofta de sista bytena och msgpack lutar sig mot fält med längdprefix, så en saknad svans ger ett förvirrande fel eller delvis output. Två: producenten använde en custom extension-typ och mottagaren känner inte till den. Jämför bytena mot den officiella specen om strukturen ser omöjlig ut.
Klarar den enorma payloads?
Några megabyte hex går att klistra in fint i moderna webbläsare. Bortom det börjar Ace-redigeraren på inputsidan kännas trög — vid den punkten är du bättre av att läsa filen direkt med biblioteket i ett Node-script. Avkodaren är inte flaskhalsen; redigeraren är.
Hur producerar jag hex som i exemplet?
I Python: import msgpack; msgpack.packb(obj).hex(). I JS: Array.from(encode(obj)).map(b => b.toString(16).padStart(2, '0')).join(''). I Go: fmt.Sprintf("%x", msgpack.Marshal(obj)). De flesta språk har en one-liner; resultatet i hex klistras in här direkt.
Andra MessagePack-verktyg
Att titta är en sida — de här hanterar hela round-trippen och närliggande format: