JSON Toolkit

Quão grande um arquivo JSON um navegador consegue tratar

Resumo: Não há limite fixo; a restrição é o orçamento de memória da sua aba. Um arquivo de 20MB normalmente vira 60–100MB após a análise, e o DOM destacado pode dobrar isso de novo.

Iniciante~3 min de leituraPublicado em 2026-10-30Atualizado em 2026-10-30
Limites de memória do navegador ao trabalhar com JSON grande

Resumo da ópera: não há teto fixo — estime pela memória, já que o objeto analisado normalmente custa 3–5 vezes o tamanho do texto e o DOM com realce dobra isso de novo; acima de 50MB, ou quando a contagem de registros de nível superior chega às centenas de milhares, fatie, faça streaming ou mude para um app local em vez de forçar em uma aba.

Para onde vai a memória

Um texto JSON de 20MB existe três vezes:

  1. A string crua: 20MB
  2. O grafo de objetos analisado: normalmente 60–100MB (strings duplicadas, cabeçalhos de objeto, tabelas hash)
  3. O DOM com realce: um nó por token, facilmente outro 2x

Buffers do editor, pilhas de desfazer e caches de realce de sintaxe são extras. Um "arquivo de 20MB" pode passar de 200MB residentes.

Regras gerais

Tamanho Desktop Mobile
< 5MB Fluido Fluido
5–20MB Leve atraso, 1–3s para formatar Atraso perceptível, pode congelar
20–50MB Viável mas pesado; desligue o realce Provável crash
> 50MB Não recomendado Inutilizável

Esses números variam com dispositivo, versão do navegador e se o realce está ligado. Use-os para ordens de magnitude, não como garantias.

Por que mais RAM não resolve

Abas têm um limite rígido, e excedê-lo significa um crash imediato em vez de degradação graciosa. No mobile é ainda mais estrito, reivindicando memória na casa das centenas baixas de megabytes.

Trabalhando com arquivos grandes

Fatie.

head -c 1048576 big.json | jq .
jq '.items[0:100]' big.json

Faça streaming. stream-json, ijson, jq --stream processam registro por registro com memória independente do tamanho do arquivo.

Use um app local. Sem limites de aba, memória total da máquina: download do desktop.

Mude o formato. Logs e fluxos de eventos deveriam ser NDJSON desde o início — um registro por linha, transmitível por construção.

Peça ao backend para enxugar. Se a interface precisa de três campos, enviar trezentos é um problema de projeto de API, não uma limitação do navegador.

Dimensionando seu arquivo

ls -lh data.json
jq 'length' data.json

Se length está na casa das centenas de milhares, paginação ou streaming é a resposta, independentemente do tamanho em bytes.

Perguntas frequentes

Como sei em qual faixa de tamanho meu arquivo cai?

Verifique os bytes com ls -lh e a contagem de registros de nível superior com jq 'length'. Arquivos de alguns megabytes são fluidos em toda parte, 20–50MB funciona em desktop mas engasga, e acima de 50MB você deve fazer streaming ou usar uma ferramenta de linha de comando.

O que devo fazer com um arquivo acima de 50MB?

Fatie-o com head -c, ou faça streaming com jq, stream-json ou jq --stream para que a memória fique independente do tamanho do arquivo. Se precisar inspecionar o documento inteiro, use o app desktop, que não é limitado pelo orçamento de memória de uma aba. Logs e fluxos de eventos pertencem ao NDJSON de qualquer forma.

Leitura adicional