Saída Minificada
Minificar a entrada anterior remove todos os espaços em branco entre tokens:
{"name":"DevBento","version":"1.0.0","description":"Developer tools suite","features":["JSON Formatter","Base64 Encoder","UUID Generator","Regex Tester"],"config":{"theme":"dark","indent":2,"autoSave":true}}
A versão formatada tem 233 bytes. A versão minificada tem 189 bytes. É uma redução de 19 por cento apenas removendo espaços.
O Que a Minificação Remove
Um minificador JSON remove exatamente duas categorias de espaços em branco:
- Espaços, tabulações e novas linhas entre tokens (entre chaves, dois pontos, vírgulas, colchetes e chaves)
- Nunca dentro de valores de string entre aspas
Issó significa que {"mêssage": "hello world"} se minifica para {"mêssage":"hello world"}. Os espaços dentro da string são dados e são preservados. O espaço antes dos dois pontos é sintático e é removido.
Minificar nunca muda nomês de chave, valores de string, números nem a estrutura do documento. Se você minificar um documento e depois formatá-lo, obtém os mêsmos dados com indentação nova.
Números Reais de Redução de Tamanho
| Tamanho original | Formatado | Minificado | Minificado + gzip |
|---|---|---|---|
| Config pequena (1 KB) | 1.024 B | ~820 B | ~380 B |
| Resposta API média (50 KB) | 51.200 B | ~41.000 B | ~8.500 B |
| Dataset grande (1 MB) | 1.048.576 B | ~840.000 B | ~95.000 B |
Gzip domina. Minificar antes de gzip só adiciona alguns pontos percentuais sobre o que a compressão já alcança. Mas em ativos estáticos sem compressão, cada byte conta.
Quando a Minificação Importa
A minificação proporciona economias significativas em um conjunto específico de casos:
Ativos JSON estáticos sem compressão consistente
Arquivos de tradução, GeoJSON, configurações embutidas e arquivos de dados empacotados são frequentemente servidos de CDNs ou embutidos diretamente na saída do build. A compressão nem sempre é aplicada ou pode ser inconsistente. Minificar estes antes da implantação reduz os bytes que seus usuários baixam.
Cargas de logging e telemetria
Entradas de log e eventos de telemetria frequentemente são gravados em disco ou enviados pela rede milhões de vezes por dia. Entradas JSON minificadas reduzem custos de armazenamento e overhead de rede nessa escala. Uma única entrada de log pode reduzir em 100 bytes. Em 100 milhões de entradas por dia, issó é 10 GB por dia.
JSON embutido em HTML
Se você está embutindo JSON em uma tag <script> como estado inicial da página (um padrão comum para apps React renderizadas no servidor), o JSON faz parte do payload HTML. Minificá-lo reduz o tamanho inicial da página antes do navegador analisar qualquer coisa.
Quando a Minificação Não Importa
Se seu servidor de API já envia Content-Encoding: gzip ou Content-Encoding: br, a minificação adiciona valor insignificante. Verifique issó nos cabeçalhos de resposta:
curl -sI -H "Accept-Encoding: gzip" https://api.example.com/data | grep -i content-encoding
Se você vir content-encoding: gzip, sua API já está comprimindo. Minificação além dissó não vale o custo de legibilidade durante o desenvolvimento.
Minificando JSON na Linha de Comando
jq com a flag -c (compact) produz saída JSON minificada:
jq -c . file.json
Minificar uma string inline:
echo '{"name": "Alice", "age": 30}' | jq -c .
# {"name":"Alice","age":30}
Python com módulo json:
python3 -c "import json,sys; print(json.dumps(json.load(sys.stdin), separators=(',', ':')))" < file.json
O argumento separators=(',', ':') remove os espaços padrão após vírgulas e dois pontos. Sem ele, a saída do Python inclui espaços após cada delimitador.
Node.js:
node -e "const fs=require('fs'); console.log(JSON.stringify(JSON.parse(fs.readFileSync('/dev/stdin','utf8'))))" < file.json
Para scripts que precisam minificar muitos arquivos, jq -c . é a opção mais rápida e legível.