Validador de MessagePack
Cole MessagePack em hex ou base64 e veja se ele dá parse limpo. Mostra a contagem de bytes, o tipo de nível superior, e o erro do parser na íntegra se falhar.
Entrada
Saída
O que é o Validador de MessagePack?
Você está integrando com um serviço que emite MessagePack e o formato de wire fica te surpreendendo — contagem de bytes errada, bytes finais estranhos, o parser morre cripticamente sem dar pista de qual campo quebrou. Esta ferramenta pega um dump em hex ou base64 de um payload MsgPack, passa por um decodificador real, e te diz o que de fato saiu do outro lado.
Passamos sua entrada pelo decodificador do @msgpack/msgpack. Se der parse, mostramos a contagem de bytes, o tipo de nível superior (map, array, string, int…) e o tamanho de chaves ou array para você bater contra o schema na sua cabeça. Se falhar, exibimos a mensagem de erro do parser na íntegra — geralmente aponta direto pro offset que quebrou.
Hex e base64 são detectados automaticamente. Espaços em branco, vírgulas, prefixos 0x e escapes \xNN são tolerados, então você pode colar direto de uma captura do Wireshark, de um log de servidor, ou de um dump repr() do Python. Nada sai do seu navegador — o decodificador roda localmente.
Como usar o Validador de MessagePack
Cola e pronto. O validador roda a cada tecla (debounce de 300 ms), então você não precisa apertar botão.
Cole MsgPack hex ou base64
Solte seu payload codificado no painel da esquerda. Aperte MsgPack de exemplo pra carregar um pequeno objeto de pedido codificado em hex — útil quando você só quer ver como um resultado válido se parece. O decodificador segue a spec do MessagePack, então qualquer coisa produzida por um encoder em conformidade fará round-trip limpo. Hex de exemplo (um único int 1):
01Esse é o byte de wire para o fixint positivo 1. Payloads maiores — maps, arrays, strings — começam com bytes de formato como 0x80–0x9f (fixmap/fixarray) ou 0xa0–0xbf (fixstr).
Leia o relatório de validação
O painel da direita preenche automaticamente. No sucesso você ganha um pequeno relatório — formato de entrada detectado (hex ou base64 conforme RFC 4648), contagem de bytes codificados, tipo de nível superior, contagem de chaves/array, e ainda um preview JSON do valor decodificado (truncado em 2 KB pra manter o painel legível).
Investigue falhas
Em uma falha de parse o painel da direita mostra ✗ Invalid MessagePack seguido da string de erro do decodificador. As clássicas: "Insufficient bytes" (seu hex foi truncado), "Unrecognized type byte" (você colou JSON ou texto por engano, ou a entrada está corrompida) e "Extra bytes were found" (passou um prefixo de tamanho ou byte de framing). Trate o stream de bytes na cabeça como um Uint8Array — a maioria das falhas é problema de framing ou tamanho, não bug de codificação.
Quando você de fato vai usar isso
Depurar um cache miss
Sua chave Redis guarda um pedido codificado em MessagePack (orderId: 'ORD-7421', items, customer) e o consumer está estourando no deserialize. Cole o hex do redis-cli --no-raw GET, veja se o formato de wire é sequer válido e confirme que o tipo de nível superior bate com o que seu decoder espera.
Validar captura de wire
Você capturou um frame da rede com Wireshark ou tcpdump, exportou os bytes, e quer saber se o MsgPack lá dentro está bem-formado antes de traçar o framing na mão. Cola, dá uma olhada no tipo e na contagem de bytes, segue em frente.
Conferir um produtor
Escreveu um encoder próprio em Go ou Rust? Codifique uma fixture conhecida ({sku: 'SKU-101', qty: 2}), faça dump em hex e cole aqui. Se a gente lê de volta como o mesmo map que você escreveu, seu encoder está em conformidade com o formato MessagePack.
Pre-flight antes de um bug report
Vai abrir uma issue contra uma lib upstream? Confirme primeiro que o payload é mesmo MsgPack válido — metade dos relatos de "bug na lib" são entrada malformada. 30 segundos colando aqui te poupa uma rodada de ida e volta.
Perguntas comuns
O payload sai do meu navegador?
Não. A decodificação roda em JavaScript nesta página usando o decodificador @msgpack/msgpack. Nada é enviado, logado ou mandado pra um backend — feche a aba e os dados somem. Mesmo modelo de um visualizador hex desktop, só que no navegador.
Aceita upload de arquivos binários, ou só hex/base64?
Hex e base64 apenas. Navegadores não expõem os bytes do arquivo pra página sem um seletor, e a maioria dos fluxos de copy-paste já produz hex (a partir de xxd, hexdump -C, tooltips de debugger) ou base64 (de respostas de APIs REST, linhas de log). Se você tem um arquivo .msgpack cru, rode xxd -p file.msgpack ou base64 file.msgpack primeiro.
Como ele distingue hex de base64?
Hex é detectado primeiro: se a entrada (após remover espaços, vírgulas, prefixos 0x e sequências de escape \xNN) for toda de caracteres hex e tamanho par, tratamos como hex. Caso contrário entregamos pro atob como base64. A linha "Detected input format" no relatório te diz qual caminho foi tomado — útil quando uma string ambígua como deadbeef calha de ser válida em ambas as codificações.
Por que às vezes aparece "Extra bytes were found"?
Streams MessagePack devem ter exatamente um valor de nível superior. Se você colou um frame com prefixo de tamanho (ex.: um tamanho big-endian de 4 bytes adicionado por um protocolo de transporte com framing) ou dois payloads concatenados, o decoder lê o primeiro valor e reclama do que sobrou. Tire o framing ou separe em mensagens individuais.
Decodifica extensões do MessagePack (timestamp, tipos custom)?
O decoder padrão @msgpack/msgpack lida com o tipo de extensão timestamp embutido (-1) de fábrica e mostra como Date do JS no preview. Tipos de extensão personalizados (0 a 127) decodificam para uma forma genérica {type, data} — o validador ainda vai reportar o payload como válido, mas você vai precisar do seu próprio ExtensionCodec pra interpretar o conteúdo.
Qual a diferença entre isto e o MessagePack Viewer?
O Viewer é pra navegação — ele mostra um detalhamento em árvore de cada chave e valor. Este Validador é pra responder "isso é sequer válido?" — sim/não rápido mais contagem de bytes e tipo de nível superior. Se o validador disser que dá parse e o tipo está certo, troque pro Viewer pra realmente ler o conteúdo.
Outras ferramentas MessagePack
Depois de confirmar que o payload é válido, estas ferramentas levam o resto do caminho: