MessagePack para JSON
Decodifica MessagePack em hex ou base64 para JSON legível. Cola os bytes, recebe o objeto — roda no navegador, nada é enviado.
Entrada
Saída
O que é MessagePack para JSON?
Seu sidecar gRPC loga o corpo da requisição como uma string hex enorme e você precisa de fato ler o que tem ali. Ou o Redis devolveu um valor que o serviço anterior gravou como msgpack e o terminal está mostrando \x82\xa7orderId\xa8ORD-7421. MessagePack é um formato binário compacto — ótimo na rede, ilegível numa linha de log. Esta página pega o dump em hex ou base64 e devolve o JSON que ele representa.
A decodificação segue a spec oficial do formato MessagePack via a biblioteca JavaScript @msgpack/msgpack. Maps viram objetos, arrays viram arrays, ints e floats decodificam direto para números JSON, e o resultado sai formatado conforme a RFC 8259. Hex com prefixos 0x, escapes \x, espaços ou vírgulas — tudo é parseado. E se sua entrada for base64 (segundo a RFC 4648), detectamos automaticamente.
Sem upload, sem backend, sem log. A decodificação roda no seu navegador como um Uint8Array simples — fechou a aba, os bytes vão embora.
Como usar MessagePack para JSON
Cola, lê, copia. Não tem botão de Converter — o painel da direita atualiza enquanto você digita, com debounce de 300 ms para não recalcular a cada tecla.
Cole o hex ou base64
Solte os bytes do MessagePack no editor da esquerda. Aceita qualquer formato — hex puro (82a7...), hex com espaços (82 a7 6f), literais de bytes em Python com \x, ou um blob em base64. Aperte Exemplo para carregar um payload de rastreio de pedido que decodifica para um objeto real.
82a76f72646572496441 4f52442d3734323120a574 6f74616c cb4056600000000000Esse trecho faz parte de um payload Order — orderId, total, items, customer. Após decodificar você recupera a estrutura toda como JSON.
Leia o JSON à direita
O painel da direita re-decodifica a cada mudança. Se os bytes forem MessagePack válido você vê o objeto. Se estiverem truncados, com lixo no fim ou na real são outro formato (CBOR, BSON), o painel mostra a mensagem de erro do parser — geralmente o suficiente para localizar onde a entrada deu problema.
Copie o que precisar
Aperte o botão Copiar do lado da saída para pegar o JSON. Joga numa fixture de teste, cola num ticket de bug, ou passa pelo nosso Formatador JSON se quiser outro estilo de formatação. Para ir no caminho contrário (objeto → msgpack), use JSON para MessagePack.
Quando você vai usar de verdade
Ler o corpo de um log gRPC ou sidecar
Um sidecar de service mesh dumpa o corpo das requisições em hex. O corpo é msgpack porque é assim que o serviço de origem serializa. Cola o hex, vê o objeto, descobre que a chamada tinha orderId: "ORD-7421" e total: 89.50 em vez de ficar adivinhando.
Inspecionar um valor no Redis
Você guardou um objeto no Redis com codec msgpack para economizar espaço. Agora quer saber o que tem em session:42 sem escrever um script. Roda GET, copia o valor (a maioria dos clientes mostra em hex ou base64), cola aqui.
Decodificar uma entrada de cache
Caches que miram payloads pequenos — MessagePack, FlatBuffers, às vezes protobuf puro — estão por toda parte hoje em dia. Quando o blob cacheado é msgpack e você precisa comparar com o JSON ao vivo, este é o caminho mais rápido para uma comparação justa.
Conferir o que um cliente está enviando
Você escreveu um cliente mobile que codifica o corpo da requisição com msgpack para economizar banda. Aparece uma regressão. Captura os bytes reais (Charles, mitmproxy, aba de rede), cola e confirma se nomes de campo e valores batem com o schema que seu servidor espera. Cliente Ava Chen, itens SKU-101 × 2 — sim ou não.
Perguntas comuns
Meus bytes são enviados para algum lugar?
Não. A decodificação é JavaScript puro no seu navegador — a biblioteca @msgpack/msgpack lê sua entrada como Uint8Array, percorre o formato e renderiza o objeto resultante como JSON. Não tem fetch, não tem analytics da entrada, nada sai da aba. Trate como qualquer ferramenta CLI local.
Hex ou base64 — faz diferença qual eu colo?
Os dois funcionam. A ferramenta tenta hex primeiro (porque hex com prefixos 0x ou \x, espaços ou vírgulas é o formato mais comum em logs) e cai para base64 se a entrada não for hex válido. Se você tem um literal de bytes Python b'\x82\xa7order', isso também decodifica — o invólucro b'...' é removido e os escapes são expandidos.
Por que minha saída mostra timestamps esquisitos?
O MessagePack tem uma extensão de timestamp embutida que a biblioteca decodifica para um Date de JS. Ao virar string em JSON isso vira uma string ISO 8601. Se você vê algo como "2026-05-05T12:34:56.000Z" na saída, é um timestamp real que o encoder embutiu — não é bug.
E se a entrada for parcialmente válida?
O decodificador lê o formato byte a byte. Se um prefixo de tamanho diz "o próximo é uma string de 16 bytes" e só sobram 8, ele lança erro de parsing. A mensagem de erro no painel da direita normalmente diz qual token de tipo falhou e mais ou menos onde — costuma ser o suficiente para identificar um colar truncado ou um byte solto.
Lida com blobs binários (a família bin)?
Sim. Valores bin 8/bin 16/bin 32 voltam como instâncias de Uint8Array. JSON não tem tipo nativo de bytes, então eles renderizam como {"0":1,"1":2,...} ao virar string. Se você precisa especificamente de base64 para os campos bin, decodifique aqui primeiro e depois transforme com nossa ferramenta JSON para Base64.
Como se compara a protobuf ou CBOR?
MessagePack é sem schema (as chaves vivem nos bytes), CBOR é parecido mas com mais tipos e um encoding diferente, e protobuf precisa de um schema .proto só para decodificar. Se seus bytes são protobuf, esta ferramenta vai falhar — tente nossa página Protobuf para JSON. Se forem CBOR, o formato é parecido mas não igual, então você precisa de um decodificador específico para CBOR.
Outras ferramentas MessagePack
Ferramentas MessagePack que combinam bem com esta — para ir no sentido contrário, validar ou só olhar os bytes: