Incolla qui la tua stringa MessagePack in hex o base64. La decodifichiamo mentre scrivi.Incolla msgpack hex/base64

Cosa fa il Visualizzatore MessagePack

Se ti è mai capitato di fissare un blob hex in un log di Cloudflare Worker chiedendoti cosa ci sia davvero dentro, questa è la pagina giusta. MessagePack è un formato di serializzazione binaria che produce qualcosa come 83a76f72646572496478a84f52442d37343231... — compatto in rete, totalmente illeggibile a occhio. Incolli l'hex (o il base64 — lo rileviamo da soli) nel pannello sinistro e quello destro ti mostra l'albero JSON decodificato.

La decodifica avviene in locale con la libreria ufficiale @msgpack/msgpack, la stessa che usano la maggior parte delle app Node e browser. Il formato segue la spec pubblica del formato wire MessagePack, quindi qualsiasi payload prodotto da msgpack-python, msgpack-c, msgpack-java o un'altra implementazione conforme funziona qui. Niente upload — i byte non lasciano mai il tuo browser, cosa che conta quando il blob trasporta qualcosa tipo customer: 'Ava Chen' o un subscriberId: 'SUB-1001' interno.

La decodifica ha un debounce di 300ms, così puoi incollare, modificare e rincollare senza cliccare nulla. Nessun pulsante Converti, nessuno spinner — scrivi e leggi.

Come visualizzare un payload MessagePack

Tre passi. Vale per stringhe hex copiate da un log, campi base64 estratti da un messaggio Kafka, o byte grezzi incollati da un debugger.

1

Incolla hex o base64 nel pannello sinistro

Butta il MessagePack codificato nell'editor di sinistra. Rileviamo da soli: se viene parsato pulito come hex (dopo aver tolto spazi, virgole, prefissi 0x ed escape \x), lo trattiamo come hex; altrimenti proviamo base64 (RFC 4648). Vanno bene entrambi. Esempio di un ordine codificato in hex:

83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6e

Quel blob si decodifica in un ordine con due righe (SKU-101 x2 e SKU-244 x1) per il cliente Ava Chen.

2

Leggi il JSON decodificato a destra

Il pannello di destra è in sola lettura e mostra il payload decodificato come JSON formattato — stessa indentazione di JSON.stringify(obj, null, 2). Le map diventano oggetti, gli array array, int/float numeri, e i blob binari arrivano come Uint8Array con la lunghezza in byte visibile. I timestamp dal tipo di estensione timestamp vengono renderizzati come stringhe ISO.

3

Itera senza cliccare nulla

Modifichi l'input e il JSON si aggiorna dopo una pausa di 300ms. Se i byte non sono MessagePack valido ti diciamo cosa è andato storto (buffer troncato, byte di tipo inatteso, ecc.) invece di fingere che il parsing sia riuscito. Usa il pulsante Msgpack di esempio per caricare un payload Order noto e fare confronti.

Quando lo userai davvero

Ispezionare un messaggio MessagePack in un log

Il tuo servizio scrive payload codificati in msgpack su un log strutturato come hex (in molti casi è più corto di base64). Quando qualcosa si rompe in produzione, copi l'hex dalla riga di log, lo incolli qui e vedi subito cosa il producer ha effettivamente mandato — orderId ORD-7421, gli item giusti, il campo customer sbagliato, qualsiasi cosa sia.

Debug di un payload Redis o Kafka

Molti backend usano MessagePack al posto di JSON sui percorsi caldi perché è dal 30 al 50% più piccolo e più veloce da parsare. Quando tiri un valore da Redis o sbirci un topic Kafka con kcat -e, i byte escono come base64. Incollali qui per confermare che producer e consumer siano d'accordo sullo schema.

Verificare round-trip cross-language

Codifichi in Python con msgpack.packb(...) e decodifichi in Go con msgpack.Unmarshal(...). Quando il lato Go vede un tipo sbagliato, dump dei byte da Python in hex e passali in questo viewer — ti dice se il bug è nell'encoder o nel decoder prima di passare un pomeriggio a discuterne.

Leggere MessagePack da un file salvato

Hai un file <code>.msgpack</code> da un export di Jupyter notebook, un save di gioco o un dump di analytics. Lanci <code>xxd -p</code> per ottenere l'hex, incolli, leggi. Più veloce che imbastire la libreria in un Python REPL fresco solo per vedere com'è fatto un record.

Domande frequenti

I miei dati lasciano il browser?

No. La decodifica gira tutta in questa scheda usando la libreria @msgpack/msgpack inclusa nella pagina. Nessun fetch, nessun upload, nessuna telemetria sui byte. Chiudi la scheda e i dati svaniscono. Detto questo — tratta la barra dell'URL come uno spazio pubblico, non metterci un payload, e svuota la clipboard se aveva segreti.

Posso incollare base64 invece di hex?

Sì. Il viewer rileva da solo: se l'input parsa come hex dopo che togliamo spazi, virgole, prefissi 0x ed escape \x stile Python, lo trattiamo come hex; altrimenti proviamo base64 standard. Funzionano entrambi per lo stesso payload. La maggior parte dei log usa hex per messaggi corti e base64 per quelli più grandi.

Cosa succede con campi binari, timestamp e tipi di estensione?

I binari (la famiglia bin) vengono decodificati in Uint8Array e stampati come { "0": 134, "1": 12, ... } nell'albero JSON (visto che JSON standard non ha un tipo byte nativo — vedi i doc Uint8Array su MDN). I timestamp dal tipo di estensione timestamp diventano oggetti Date nativi, che si serializzano come stringhe ISO 8601. Gli altri tipi di estensione arrivano come tuple { type, data } — vedi il codice del tipo e i byte grezzi.

Perché l'output decodificato è diverso da quello che il mio server ha mandato?

Due soliti sospetti. Uno: il tuo input è troncato — il troncamento dei log spesso taglia gli ultimi byte e msgpack si basa su campi con prefisso di lunghezza, quindi una coda mancante produce un errore confuso o un output parziale. Due: il producer ha usato un tipo di estensione custom e il ricevitore non lo conosce. Confronta i byte con la spec ufficiale se la struttura sembra impossibile.

Riesce a decodificare payload enormi?

Qualche megabyte di hex si incolla bene nei browser moderni. Oltre, l'editor Ace lato input inizia a sentirsi lento — a quel punto conviene leggere il file direttamente con la libreria in uno script Node. Il collo di bottiglia non è il decoder; è l'editor.

Come produco hex come quello dell'esempio?

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)). Quasi tutti i linguaggi hanno una one-liner; l'hex risultante si incolla qui direttamente.

Altri strumenti MessagePack

Visualizzare è una faccia — questi gestiscono il round-trip completo e i formati vicini: