IA no seu dispositivo — profissional e privado.

Compressor minificador JSON

Comprima JSON em uma saída compacta de linha única, meça a redução de tamanho e corrija erros de sintaxe com apoio detalhado do parser.

  • Sem perdas, byte a byte
  • Economia bruta e com gzip
  • Nada é enviado

Solte um arquivo JSON aqui

.json .jsonc .ndjson .jsonl .geojson .har .map .webmanifest .txt · até 25.0 MB · um arquivo por vez

Saída minificada

Nada minificado ainda.

Configurações
Dialeto
Dialeto

Estrito segue a especificação JSON. Flexível também aceita comentários e uma vírgula final, e os remove.

Para arquivos .ndjson e .jsonl. Cada linha é minificada em separado e a estrutura de linhas é preservada.

Escreve os caracteres escapados diretamente quando é seguro. Mesmo significado, menos bytes — rende mais em texto CJK e emojis.

O tamanho comprimido é o que chega à rede. Desligue para poupar duas passagens de compressão em arquivos muito grandes.

Limites

Grátis: até 25.0 MB por arquivo, 1 arquivo por vez. Todos os modos e opções incluídos.

Como minificar JSON

  1. 1

    Cole ou envie JSON

    Cole seu JSON na caixa de texto ou arraste um arquivo para a área de soltura. JSON formatado e já minificado funcionam, assim como arquivos .jsonc, .ndjson, .geojson, .har, .map e .webmanifest.

  2. 2

    Escolha um dialeto se precisar

    JSON estrito é o padrão. Mude para Flexível em arquivos com comentários ou vírgulas finais, e marque JSON Lines para arquivos com um documento por linha. Se a passagem estrita falhar, a ferramenta testa os outros modos e oferece o que realmente funciona.

  3. 3

    Minifique

    Aperte Minificar. O arquivo é lido fora da thread principal, então a página continua respondendo e você pode cancelar. Você vê o tamanho antes, o tamanho depois, a porcentagem economizada e — por ser o número que chega à rede — o tamanho com gzip antes e depois.

  4. 4

    Baixe ou copie

    Baixe o resultado como arquivo.min.json ou copie para a área de transferência. Com vários arquivos minificados, um botão reúne todos em um único ZIP.

O que este minificador JSON oferece

Este minificador JSON gratuito remove os espaços entre tokens para deixar seu JSON em uma única linha compacta, e faz isso sem tocar nos seus dados. Cole ou solte um arquivo, aperte Minificar, e você recebe o tamanho antes, o tamanho depois, a porcentagem economizada e o tamanho com gzip dos dois lados — sendo este último o número que realmente chega à rede. Entradas inválidas recebem linha, coluna e um cursor sob o caractere que quebrou, além do modo que teria funcionado se o arquivo for na verdade JSONC ou JSON Lines. Tudo roda no seu dispositivo; nada é enviado.

  • Saída sem perdas — Números longos, zeros finais, ordem das chaves e chaves repetidas sobrevivem, porque nenhum valor é construído. Só os espaços entre tokens são removidos.
  • Duas histórias de tamanho — Bytes brutos economizados e bytes com gzip economizados, lado a lado. Minificar costuma economizar 45 % em bruto e 4 % comprimido, e vale saber qual dos dois você está comprando.
  • Erros acionáveis — Linha, coluna, a linha problemática com um cursor e uma descrição do que era esperado — não uma mensagem de parser com um deslocamento de caracteres.
  • Os dialetos que as pessoas realmente têm — JSON estrito, JSONC com comentários e vírgulas finais, e JSON Lines com um documento por linha. A ferramenta os testa quando a passagem estrita falha.
  • Colar ou arquivos — Digite ou cole na caixa, ou solte arquivos .json, .jsonc, .ndjson, .jsonl, .geojson, .har, .map, .webmanifest e .txt. UTF-8 e UTF-16 são lidos, com ou sem marca de ordem de bytes.
  • Lote no Pro — Até 20 arquivos em uma passagem, cada um chamado arquivo.min.json, reunidos em um único ZIP.

Minificação sem perdas, e por que a maioria não é

Quase todo minificador JSON — inclusive o que existia antes nesta página — funciona analisando seu documento em valores e imprimindo-os de novo. Isso é um reserializador, não um minificador, e altera seus dados de sete maneiras que parecem perfeitas na saída. A tabela abaixo é medida, não hipotética: é o que a implementação antiga desta página produzia.

Você escreveuUm minificador reserializador devolveO que se perdeu
{"id": 9123372036854000123}{"id":9123372036854000000}Dígitos além do limite de ponto flutuante de 53 bits são arredondados fora. É o caso que quebra IDs de banco de dados e identificadores tipo snowflake.
{"v": 1e400}{"v":null}Um número grande demais para um double vira Infinity, e Infinity não tem representação em JSON, então é escrito como null. O valor é destruído.
{"v": 123456789012345678901234567890}{"v":1.2345678901234568e+29}Um inteiro de trinta dígitos volta como dezessete dígitos significativos em notação exponencial.
{"v": 1.50}{"v":1.5}Um zero final é significativo em um preço, um número de versão ou uma medida de precisão fixa.
{"2":"b","1":"a"}{"1":"a","2":"b"}O próprio modelo de objetos do JavaScript move para o começo, em ordem numérica, as chaves que parecem índices de array.
{"a":1,"a":2}{"a":2}Chaves repetidas são JSON válido e são silenciosamente reduzidas à última.
{"v":-0}{"v":0}O zero negativo perde o sinal.

Esta ferramenta segue o outro caminho. Ela percorre os bytes do seu arquivo e copia cada token — cada string, cada literal numérico, cada true, false e null — para a saída sem tocá-lo, emitindo apenas a pontuação estrutural entre eles. Um número nunca é interpretado, então não pode ser reescrito. Um membro nunca é guardado em um objeto, então não pode ser reordenado nem deduplicado. Um escape nunca é decodificado, então não pode mudar de forma. Os únicos bytes que desaparecem são os espaços entre tokens, que é a definição da palavra minificar.

O que é removido e o que é mantido

JSON tem exatamente quatro caracteres de espaço em branco — espaço, tabulação, retorno de carro e quebra de linha — e eles só são insignificantes quando ficam entre tokens. Dentro de uma string são dados.

  • Removido — A indentação, a quebra de linha depois de cada vírgula, o espaço depois de dois-pontos e qualquer linha em branco em volta do documento. No modo flexível, comentários e uma vírgula final também saem.
  • Mantido exatamente — Cada caractere dentro de uma string, incluindo os espaços de "João Silva" e qualquer sequência de escape escrita ali. Cada dígito de cada número. A ordem de cada membro. Cada chave repetida.
  • Nunca acrescentado — Nenhuma chave é citada de outro jeito, nenhum número é reformatado, nenhum escape é introduzido. Se seu arquivo já estava minificado, a saída é idêntica byte a byte à entrada e a ferramenta informa 0 % de redução em vez de fingir o contrário.

Economia bruta e economia com gzip são números diferentes

Um minificador que mostra só a economia bruta está mostrando o número lisonjeiro. A indentação é o conteúdo mais comprimível que existe — longas sequências de espaços idênticos — então gzip e brotli já removeram quase tudo antes de os seus bytes chegarem à rede. Isso não torna a minificação inútil; torna a medida comprimida a medida honesta.

  • Onde minificar rende muito — Em tudo que não é servido por um transporte que comprime: um arquivo de configuração lido do disco, um payload embutido em um bundle, um documento guardado numa coluna de banco de dados, um corpo enviado por um dispositivo que não comprime as requisições.
  • Onde rende pouco — Numa resposta HTTP comprimida com gzip ou brotli. Espere porcentagens de um dígito além do que a compressão já fez, o que muitas vezes ainda vale a pena mas não são os 45 % que o número bruto prometia.
  • Onde rende em tempo de análise — Menos texto não comprimido é menos trabalho para o parser, em cada cliente e em cada requisição — um custo que não some só porque os bytes comprimiram bem.
  • Como ler as duas linhas — O cartão sob cada arquivo mostra o tamanho bruto antes, depois e a porcentagem, e depois os mesmos três dados para os tamanhos com gzip. Se a segunda linha quase não se move, minificar não é a alavanca que você quer para aquele arquivo.

JSON estrito, JSONC e os arquivos que as pessoas realmente têm

A especificação JSON não tem comentários nem vírgulas finais. Os arquivos no seu disco muitas vezes têm, porque o formato ultrapassou a especificação assim que as ferramentas passaram a usá-lo para configuração. O modo estrito é o padrão aqui porque uma resposta estrita é a útil quando você está checando se um payload é válido; o modo flexível existe porque recusar tsconfig.json não é uma postura de princípio, é só falta de ajuda.

  • Estrito — RFC 8259 exatamente. Sem comentários, sem vírgulas finais, sem chaves fora de aspas, sem aspas simples, sem mais inicial, sem .5 nem 5., sem zeros à esquerda, sem caracteres de controle brutos dentro de uma string, sem Infinity nem NaN.
  • Flexível — Acrescenta comentários de linha //, comentários de bloco /* */ e uma vírgula final antes de uma chave ou colchete de fechamento. Os dois são removidos da saída, então o modo flexível transforma um arquivo JSONC em JSON estrito como efeito colateral.
  • Não é JSON5 — O modo flexível é JSONC, não JSON5. Chaves sem aspas, strings com aspas simples, literais hexadecimais, Infinity e NaN continuam recusados, e .json5 fica deliberadamente fora da lista de arquivos aceitos em vez de ser meio suportado.
  • Verificado, não adivinhado — A ferramenta nunca troca de dialeto em silêncio. Se a passagem estrita falha, ela testa as outras nos bastidores e oferece como botão a que deu certo — então uma sugestão é sempre algo que se provou funcionar no seu arquivo, não um palpite a partir do código de erro.

JSON Lines e NDJSON

Um arquivo JSON Lines não é um documento JSON; são vários, um por linha, e é por isso que um parser normal para no fim do primeiro e reclama de conteúdo sobrando. Ative JSON Lines e cada linha é minificada como seu próprio documento com a estrutura de linhas preservada, de modo que o resultado continua sendo um arquivo JSON Lines.

  • Por que dividir por quebras de linha é exato aqui — Uma quebra de linha bruta dentro de uma string JSON é um caractere de controle, que a especificação proíbe. Nenhum registro pode conter uma, então uma quebra de linha é sempre uma quebra de registro — isso é uma garantia, não uma heurística.
  • Linhas em branco — Descartadas. Não carregam registro nenhum, e mantê-las em um minificador seria preservar exatamente os bytes que a ferramenta existe para remover.
  • Os erros apontam para o arquivo — Uma falha no quatro-milésimo registro é relatada com o número da linha no arquivo inteiro, não com um deslocamento dentro daquele registro, além de qual registro era.
  • A extensão acompanha — Uma passagem JSON Lines baixa como .min.ndjson, nunca como .min.json, porque um documento por linha não é um único valor JSON e chamá-lo de .json entregaria um arquivo que nenhum parser aceita.

Sequências Unicode e o jeito opcional de encolhê-las

Muitos geradores de JSON escapam por precaução cada caractere não ASCII, então "你好" chega como "\u4f60\u597d" — doze bytes onde seis bastariam. Como as duas formas significam exatamente a mesma string para qualquer parser, convertê-las é uma economia segura, mas muda os bytes, então vem desligada por padrão e claramente rotulada.

  • O que ela converte — Qualquer sequência \uXXXX cujo caractere possa ser escrito diretamente: seis bytes viram um, dois ou três, e um par substituto de doze bytes para um emoji vira quatro.
  • O que ela recusa — \u0022 e \u005c, porque uma aspa ou barra invertida bruta encerraria ou reiniciaria o token. Tudo abaixo de \u0020, porque um caractere de controle bruto dentro de uma string é JSON inválido. E um substituto solto, que não tem forma UTF-8 nenhuma.
  • Substitutos soltos passam intactos — Um escape de substituto solto — \u seguido de um código de D800 a DFFF, sem par — é aceito e copiado sem alteração, exatamente como o próprio parser do navegador o aceita. São seis caracteres ASCII na origem e os mesmos seis na saída, então nada se perde ao deixá-lo em paz.
  • Desligada por padrão — Porque com ela desligada a saída é idêntica byte a byte à entrada, token a token, e essa garantia vale mais que os bytes para a maioria das pessoas.

Como ler um erro do parser

Um erro de análise só é útil se disser onde colocar o cursor. «Unexpected token } in JSON at position 4172» não diz nem a linha nem a coluna, e nenhum editor mostra a posição 4172. Cada falha aqui é relatada com as três coisas que permitem corrigi-la.

  • Linha e coluna — A coluna conta caracteres, não bytes, então o número bate com o que seu editor mostra mesmo numa linha com emojis ou texto CJK.
  • A linha, com um cursor — A linha problemática é mostrada, recortada se for muito longa, com um cursor sob o caractere exato. Linhas longas rolam dentro do cartão em vez de esticar a página.
  • O que era esperado — Mensagens distintas para vírgula final, comentário em modo estrito, zero à esquerda, aspa solta, string não fechada, caractere de controle bruto, escape inválido, dígito hexadecimal errado, UTF-8 inválido e documento que termina cedo demais.
  • Uma vírgula final é chamada pelo nome — É de longe o erro mais comum em JSON editado à mão, e a diferença entre «} inesperado» e «remova a vírgula antes de }» é quase todo o valor de uma mensagem de erro.

Que arquivos esta ferramenta abre

A lista aceita é fechada e é aplicada já na caixa de diálogo de arquivos, então você nunca escolhe um arquivo e vê que nada acontece. Tudo na lista é JSON; tudo fora dela com que possamos ajudar é um link para a ferramenta que trata daquilo.

  • Aceitos — .json, .jsonc, .ndjson, .jsonl, .geojson, .har, .map, .webmanifest e .txt. Um source map, uma exportação de rede do navegador, uma coleção de feições GeoJSON e um manifesto de aplicativo web são todos documentos JSON, e nenhum deles podia ser selecionado antes.
  • Codificações — UTF-8 é o esperado. Uma marca de ordem de bytes UTF-8 é removida em vez de virar erro de sintaxe no caractere 0, e arquivos UTF-16 são convertidos, com ou sem marca. UTF-8 inválido é relatado com a posição em vez de ser copiado para a saída.
  • Redirecionados, não recusados — Um CSV vai para CSV para JSON, um XML para XML para JSON, um YAML para YAML para JSON, uma planilha para Excel para JSON. Cada uma é uma ferramenta gratuita deste site e o link leva direto a ela.
  • Não aceitos — .js e .json5. Um arquivo JavaScript é um programa, não um documento, e JSON5 precisa de sintaxe que este motor não implementa — listar qualquer um dos dois prometeria algo que a ferramenta não faz.

Minificar vários arquivos de uma vez

A versão gratuita minifica um arquivo por vez, de até 25 MB, com todos os modos e todas as opções disponíveis. O Pro acrescenta lotes: até 20 arquivos na fila juntos, cada um com seus próprios números de antes e depois, e um botão que reúne os resultados em um único ZIP.

  • Um arquivo compactado, não vinte downloads — Um lote de vinte arquivos sem um único ZIP significa vinte caixas de salvar do navegador, o que não é um recurso pelo qual alguém pagaria.
  • Os nomes sobrevivem — Cada resultado leva o nome da origem — api-response.json vira api-response.min.json — em vez de vinte arquivos todos chamados minified.json. Duas entradas com o mesmo nome recebem um sufixo para que nenhuma se perca dentro do ZIP.
  • Compactado, porque é texto — O ZIP comprime suas entradas. JSON minificado é texto e comprime para mais ou menos um quinto, o que importa para quem veio aqui justamente para deixar as coisas menores.
  • O limite de tamanho — 25 MB por arquivo na versão gratuita. No Pro o teto é o que seu dispositivo realmente aguenta, medido a partir do dispositivo em vez de elevado a outro número fixo.

Por que minificar JSON?

JSON minificado usa menos banda e menos tempo de análise em APIs, configurações e bundles de front-end. Remover espaços não muda os dados — só a representação — então é seguro para produção, desde que a ferramenta que faz isso realmente só remova espaços. Esta ferramenta dá a comparação bruta e a comprimida para você ver o que economiza de verdade. Se seu JSON já estiver minificado, você não verá redução; a saída continua válida e pronta para copiar ou baixar.

  • Payloads menores — Menos dados na rede para APIs e clientes móveis, e menos texto para o parser de cada cliente percorrer.
  • A mesma semântica e, aqui, os mesmos bytes — Os valores analisados são idênticos, e como nenhum valor é reconstruído, os próprios tokens também são.
  • Configurações e bundles — Arquivos lidos do disco ou embutidos em um bundle geralmente não são servidos por um transporte que comprime, e é aí que minificar mais rende.
  • Nada é enviado — Toda a leitura roda no seu dispositivo, então um payload privado de API ou um arquivo HAR com credenciais nunca sai da máquina.

Como o minificador funciona

O motor é um tokenizador com validação que emite trechos. Ele percorre os bytes do arquivo uma vez e, sempre que reconhece um token completo, copia os bytes desse token para um buffer de saída alocado no tamanho da entrada — a saída de um minificador nunca pode ser maior que a entrada, então o buffer nunca cresce.

  • Fora da thread principal — A leitura roda em um worker, então um arquivo de 25 MB não congela a página, o progresso é uma contagem real de bytes em vez de uma animação, e Cancelar para o trabalho na hora.
  • Uma passagem, sem árvore de valores — Como nenhum objeto ou array é construído, a memória fica em torno de um quinto do tamanho do arquivo em vez do dobro, e números longos mantêm todos os dígitos.
  • Trechos, não caracteres — Sequências de texto comum são copiadas em uma única operação em vez de caractere a caractere, que é a diferença entre cerca de 200 MB por segundo e cerca de 77.
  • O mesmo código nos dois casos — Se um worker não puder iniciar, as mesmas funções rodam na thread principal. É uma implementação com dois lugares para executá-la, então o caminho alternativo não pode produzir bytes diferentes.

O leitor processa cerca de 200 MB de JSON por segundo e mantém em memória mais ou menos um quinto do arquivo enquanto trabalha, porque copia trechos de tokens em vez de construir uma árvore de valores.

Perguntas frequentes

Como funciona a minificação de JSON?

O minificador lê seu JSON token a token e copia cada token diretamente, descartando apenas os espaços entre tokens. Espaços, tabulações, quebras de linha e indentação que ficam entre uma chave e seu valor ou entre elementos de um array são removidos; tudo dentro de uma string fica intacto porque é dado, não formatação. Ele informa o tamanho de entrada, o de saída e a porcentagem economizada.

Meus dados JSON estão seguros?

Sim. Cada espaço, quebra de linha e indentação é removido enquanto os dados em si permanecem equivalentes byte a byte. Tudo roda no seu dispositivo, não nos nossos servidores, então você pode minificar com segurança payloads privados de API, arquivos de configuração ou dados sensíveis sem qualquer requisição de rede. Também funciona offline depois que a página carrega.

Minificar muda meus dados?

Não. Apenas espaços e quebras de linha insignificantes são removidos — as chaves, os valores, o aninhamento e os tipos analisados ficam equivalentes byte a byte. Um parser lendo a saída minificada produz exatamente o mesmo objeto do original. Espaços dentro de valores de string são mantidos porque são dados significativos, não formatação.

Um número de identificação longo sobrevive à minificação?

Sim, exatamente como você escreveu. A maioria dos minificadores online analisa seu JSON em valores JavaScript e os imprime de novo, o que arredonda qualquer inteiro acima de 9.007.199.254.740.991: um ID como 9123372036854000123 volta como 9123372036854000000, e 1e400 volta como null. Esta ferramenta nunca transforma um número em valor; ela copia os dígitos que você escreveu, então 1.50 continua 1.50 e um número de trinta dígitos mantém os trinta.

A ordem das chaves e as chaves repetidas são preservadas?

As duas coisas. Reserializar por meio de um objeto JavaScript descarta silenciosamente todas as chaves repetidas menos a última e move para o começo, em ordem numérica, as chaves que parecem índices de array, então {"2":"b","1":"a"} volta reordenado. Como este minificador nunca constrói um objeto, seus membros ficam na ordem em que você os escreveu e as chaves repetidas continuam todas lá.

Quanto menor meu JSON vai ficar?

Depende de quanto espaço em branco a origem tinha. JSON indentado costuma encolher de 20 % a 60 %, e a ferramenta mostra o tamanho exato de entrada, o de saída em bytes ou KB e a porcentagem economizada. Se a entrada já estiver minificada, você verá 0 % de redução porque não sobrou espaço para remover.

Por que a economia com gzip parece bem menor?

Porque o gzip já é muito bom com espaços repetidos. A indentação comprime a quase nada, então um arquivo que perde 45 % dos bytes brutos ao minificar muitas vezes perde apenas alguns por cento depois de comprimido — e o tamanho comprimido é o que realmente atravessa a rede. A ferramenta mostra os dois números para você decidir se minificar vale a pena no seu caso, em vez de mostrar só o número lisonjeiro.

O que acontece se meu JSON for inválido?

Você recebe a linha e a coluna, a linha problemática com um cursor sob o caractere exato e uma descrição simples do que era esperado ali. Se o arquivo for válido em outro dialeto, a ferramenta os testa por você e oferece o que funciona: um arquivo com comentários ou vírgula final vai sugerir Flexível, e um log com um objeto por linha vai sugerir JSON Lines. Links para o Formatador e o Validador JSON estão ali para o que exigir uma edição de verdade.

Ele lida com arquivos com comentários, ou um objeto por linha?

Sim. O modo flexível aceita comentários // e /* */ e uma vírgula final antes de uma chave ou colchete de fechamento, o que cobre tsconfig.json, as configurações do VS Code e a maior parte da configuração escrita à mão; os comentários são removidos como parte da minificação. O modo JSON Lines trata cada linha como seu próprio documento e mantém a estrutura de linhas, que é o que exportações de log e conjuntos de dados de aprendizado de máquina precisam.

É grátis e funciona no celular?

Sim. Todos os modos, todas as opções e o relato de erros são gratuitos em arquivos de até 25 MB. O Pro acrescenta a minificação em lote — até 20 arquivos de uma vez, entregues em um único ZIP — e eleva o limite de tamanho ao que seu dispositivo conseguir. Funciona em navegadores de desktop e celular e continua funcionando offline depois que a página carrega.

4.8de 5

de 95 avaliações

Avalie esta ferramenta

Toque numa estrela — leva um segundo